Commit 39c8bf2b authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc: Retire e200 core (mpc555x processor)

There is no defconfig selecting CONFIG_E200, and no platform.

e200 is an earlier version of booke, a predecessor of e500,
with some particularities like an unified cache instead of both an
instruction cache and a data cache.

Remove it.
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Acked-by: default avatarScott Wood <oss@buserror.net>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/34ebc3ba2c768d97f363bd5f2deea2356e9ae127.1605589460.git.christophe.leroy@csgroup.eu
parent ff57698a
...@@ -41,7 +41,6 @@ extern int machine_check_4xx(struct pt_regs *regs); ...@@ -41,7 +41,6 @@ extern int machine_check_4xx(struct pt_regs *regs);
extern int machine_check_440A(struct pt_regs *regs); extern int machine_check_440A(struct pt_regs *regs);
extern int machine_check_e500mc(struct pt_regs *regs); extern int machine_check_e500mc(struct pt_regs *regs);
extern int machine_check_e500(struct pt_regs *regs); extern int machine_check_e500(struct pt_regs *regs);
extern int machine_check_e200(struct pt_regs *regs);
extern int machine_check_47x(struct pt_regs *regs); extern int machine_check_47x(struct pt_regs *regs);
int machine_check_8xx(struct pt_regs *regs); int machine_check_8xx(struct pt_regs *regs);
int machine_check_83xx(struct pt_regs *regs); int machine_check_83xx(struct pt_regs *regs);
...@@ -381,10 +380,6 @@ static inline void cpu_feature_keys_init(void) { } ...@@ -381,10 +380,6 @@ static inline void cpu_feature_keys_init(void) { }
#define CPU_FTRS_440x6 (CPU_FTR_NOEXECUTE | \ #define CPU_FTRS_440x6 (CPU_FTR_NOEXECUTE | \
CPU_FTR_INDEXED_DCR) CPU_FTR_INDEXED_DCR)
#define CPU_FTRS_47X (CPU_FTRS_440x6) #define CPU_FTRS_47X (CPU_FTRS_440x6)
#define CPU_FTRS_E200 (CPU_FTR_SPE_COMP | \
CPU_FTR_COHERENT_ICACHE | \
CPU_FTR_NOEXECUTE | \
CPU_FTR_DEBUG_LVL_EXC)
#define CPU_FTRS_E500 (CPU_FTR_MAYBE_CAN_DOZE | \ #define CPU_FTRS_E500 (CPU_FTR_MAYBE_CAN_DOZE | \
CPU_FTR_SPE_COMP | CPU_FTR_MAYBE_CAN_NAP | \ CPU_FTR_SPE_COMP | CPU_FTR_MAYBE_CAN_NAP | \
CPU_FTR_NOEXECUTE) CPU_FTR_NOEXECUTE)
...@@ -529,9 +524,6 @@ enum { ...@@ -529,9 +524,6 @@ enum {
#elif defined(CONFIG_44x) #elif defined(CONFIG_44x)
CPU_FTRS_44X | CPU_FTRS_440x6 | CPU_FTRS_44X | CPU_FTRS_440x6 |
#endif #endif
#ifdef CONFIG_E200
CPU_FTRS_E200 |
#endif
#ifdef CONFIG_E500 #ifdef CONFIG_E500
CPU_FTRS_E500 | CPU_FTRS_E500_2 | CPU_FTRS_E500 | CPU_FTRS_E500_2 |
#endif #endif
...@@ -601,9 +593,6 @@ enum { ...@@ -601,9 +593,6 @@ enum {
#elif defined(CONFIG_44x) #elif defined(CONFIG_44x)
CPU_FTRS_44X & CPU_FTRS_440x6 & CPU_FTRS_44X & CPU_FTRS_440x6 &
#endif #endif
#ifdef CONFIG_E200
CPU_FTRS_E200 &
#endif
#ifdef CONFIG_E500 #ifdef CONFIG_E500
CPU_FTRS_E500 & CPU_FTRS_E500_2 & CPU_FTRS_E500 & CPU_FTRS_E500_2 &
#endif #endif
......
...@@ -171,7 +171,7 @@ enum { ...@@ -171,7 +171,7 @@ enum {
#elif defined(CONFIG_44x) #elif defined(CONFIG_44x)
MMU_FTR_TYPE_44x | MMU_FTR_TYPE_44x |
#endif #endif
#if defined(CONFIG_E200) || defined(CONFIG_E500) #ifdef CONFIG_E500
MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | MMU_FTR_USE_TLBILX | MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | MMU_FTR_USE_TLBILX |
#endif #endif
#ifdef CONFIG_PPC_BOOK3S_32 #ifdef CONFIG_PPC_BOOK3S_32
......
...@@ -1233,14 +1233,9 @@ ...@@ -1233,14 +1233,9 @@
#define SPRN_SPRG_WSCRATCH_MC SPRN_SPRG1 #define SPRN_SPRG_WSCRATCH_MC SPRN_SPRG1
#define SPRN_SPRG_RSCRATCH4 SPRN_SPRG7R #define SPRN_SPRG_RSCRATCH4 SPRN_SPRG7R
#define SPRN_SPRG_WSCRATCH4 SPRN_SPRG7W #define SPRN_SPRG_WSCRATCH4 SPRN_SPRG7W
#ifdef CONFIG_E200
#define SPRN_SPRG_RSCRATCH_DBG SPRN_SPRG6R
#define SPRN_SPRG_WSCRATCH_DBG SPRN_SPRG6W
#else
#define SPRN_SPRG_RSCRATCH_DBG SPRN_SPRG9 #define SPRN_SPRG_RSCRATCH_DBG SPRN_SPRG9
#define SPRN_SPRG_WSCRATCH_DBG SPRN_SPRG9 #define SPRN_SPRG_WSCRATCH_DBG SPRN_SPRG9
#endif #endif
#endif
#ifdef CONFIG_PPC_8xx #ifdef CONFIG_PPC_8xx
#define SPRN_SPRG_SCRATCH0 SPRN_SPRG0 #define SPRN_SPRG_SCRATCH0 SPRN_SPRG0
......
...@@ -281,18 +281,6 @@ ...@@ -281,18 +281,6 @@
#define MSRP_PMMP 0x00000004 /* Protect MSR[PMM] */ #define MSRP_PMMP 0x00000004 /* Protect MSR[PMM] */
#endif #endif
#ifdef CONFIG_E200
#define MCSR_MCP 0x80000000UL /* Machine Check Input Pin */
#define MCSR_CP_PERR 0x20000000UL /* Cache Push Parity Error */
#define MCSR_CPERR 0x10000000UL /* Cache Parity Error */
#define MCSR_EXCP_ERR 0x08000000UL /* ISI, ITLB, or Bus Error on 1st insn
fetch for an exception handler */
#define MCSR_BUS_IRERR 0x00000010UL /* Read Bus Error on instruction fetch*/
#define MCSR_BUS_DRERR 0x00000008UL /* Read Bus Error on data load */
#define MCSR_BUS_WRERR 0x00000004UL /* Write Bus Error on buffered
store or cache line push */
#endif
/* Bit definitions for the HID1 */ /* Bit definitions for the HID1 */
#ifdef CONFIG_E500 #ifdef CONFIG_E500
/* e500v1/v2 */ /* e500v1/v2 */
......
...@@ -108,15 +108,6 @@ _GLOBAL(__setup_cpu_e6500) ...@@ -108,15 +108,6 @@ _GLOBAL(__setup_cpu_e6500)
#endif /* CONFIG_PPC_E500MC */ #endif /* CONFIG_PPC_E500MC */
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
#ifdef CONFIG_E200
_GLOBAL(__setup_cpu_e200)
/* enable dedicated debug exception handling resources (Debug APU) */
mfspr r3,SPRN_HID0
ori r3,r3,HID0_DAPUEN@l
mtspr SPRN_HID0,r3
b __setup_e200_ivors
#endif /* CONFIG_E200 */
#ifdef CONFIG_E500 #ifdef CONFIG_E500
#ifndef CONFIG_PPC_E500MC #ifndef CONFIG_PPC_E500MC
_GLOBAL(__setup_cpu_e500v1) _GLOBAL(__setup_cpu_e500v1)
......
...@@ -36,7 +36,6 @@ const char *powerpc_base_platform; ...@@ -36,7 +36,6 @@ const char *powerpc_base_platform;
* and ppc64 * and ppc64
*/ */
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
extern void __setup_cpu_e200(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_e500v1(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_e500v1(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_e500v2(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_e500v2(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_e500mc(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_e500mc(unsigned long offset, struct cpu_spec* spec);
...@@ -1902,51 +1901,6 @@ static struct cpu_spec __initdata cpu_specs[] = { ...@@ -1902,51 +1901,6 @@ static struct cpu_spec __initdata cpu_specs[] = {
} }
#endif /* CONFIG_PPC_47x */ #endif /* CONFIG_PPC_47x */
#endif /* CONFIG_44x */ #endif /* CONFIG_44x */
#ifdef CONFIG_E200
{ /* e200z5 */
.pvr_mask = 0xfff00000,
.pvr_value = 0x81000000,
.cpu_name = "e200z5",
/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
.cpu_features = CPU_FTRS_E200,
.cpu_user_features = COMMON_USER_BOOKE |
PPC_FEATURE_HAS_EFP_SINGLE |
PPC_FEATURE_UNIFIED_CACHE,
.mmu_features = MMU_FTR_TYPE_FSL_E,
.dcache_bsize = 32,
.machine_check = machine_check_e200,
.platform = "ppc5554",
},
{ /* e200z6 */
.pvr_mask = 0xfff00000,
.pvr_value = 0x81100000,
.cpu_name = "e200z6",
/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
.cpu_features = CPU_FTRS_E200,
.cpu_user_features = COMMON_USER_BOOKE |
PPC_FEATURE_HAS_SPE_COMP |
PPC_FEATURE_HAS_EFP_SINGLE_COMP |
PPC_FEATURE_UNIFIED_CACHE,
.mmu_features = MMU_FTR_TYPE_FSL_E,
.dcache_bsize = 32,
.machine_check = machine_check_e200,
.platform = "ppc5554",
},
{ /* default match */
.pvr_mask = 0x00000000,
.pvr_value = 0x00000000,
.cpu_name = "(generic E200 PPC)",
.cpu_features = CPU_FTRS_E200,
.cpu_user_features = COMMON_USER_BOOKE |
PPC_FEATURE_HAS_EFP_SINGLE |
PPC_FEATURE_UNIFIED_CACHE,
.mmu_features = MMU_FTR_TYPE_FSL_E,
.dcache_bsize = 32,
.cpu_setup = __setup_cpu_e200,
.machine_check = machine_check_e200,
.platform = "ppc5554",
}
#endif /* CONFIG_E200 */
#endif /* CONFIG_PPC32 */ #endif /* CONFIG_PPC32 */
#ifdef CONFIG_E500 #ifdef CONFIG_E500
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
......
...@@ -185,7 +185,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV) ...@@ -185,7 +185,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV)
* *
* On 40x critical is the only additional level * On 40x critical is the only additional level
* On 44x/e500 we have critical and machine check * On 44x/e500 we have critical and machine check
* On e200 we have critical and debug (machine check occurs via critical)
* *
* Additionally we reserve a SPRG for each priority level so we can free up a * Additionally we reserve a SPRG for each priority level so we can free up a
* GPR to use as the base for indirect access to the exception stacks. This * GPR to use as the base for indirect access to the exception stacks. This
...@@ -201,7 +200,7 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV) ...@@ -201,7 +200,7 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV)
#define MC_STACK_BASE mcheckirq_ctx #define MC_STACK_BASE mcheckirq_ctx
#define CRIT_STACK_BASE critirq_ctx #define CRIT_STACK_BASE critirq_ctx
/* only on e500mc/e200 */ /* only on e500mc */
#define DBG_STACK_BASE dbgirq_ctx #define DBG_STACK_BASE dbgirq_ctx
#define EXC_LVL_FRAME_OVERHEAD (THREAD_SIZE - INT_FRAME_SIZE - EXC_LVL_SIZE) #define EXC_LVL_FRAME_OVERHEAD (THREAD_SIZE - INT_FRAME_SIZE - EXC_LVL_SIZE)
......
...@@ -187,9 +187,6 @@ set_ivor: ...@@ -187,9 +187,6 @@ set_ivor:
/* Setup the defaults for TLB entries */ /* Setup the defaults for TLB entries */
li r2,(MAS4_TSIZED(BOOK3E_PAGESZ_4K))@l li r2,(MAS4_TSIZED(BOOK3E_PAGESZ_4K))@l
#ifdef CONFIG_E200
oris r2,r2,MAS4_TLBSELD(1)@h
#endif
mtspr SPRN_MAS4, r2 mtspr SPRN_MAS4, r2
#if !defined(CONFIG_BDI_SWITCH) #if !defined(CONFIG_BDI_SWITCH)
...@@ -362,13 +359,7 @@ interrupt_base: ...@@ -362,13 +359,7 @@ interrupt_base:
CRITICAL_EXCEPTION(0x0100, CRITICAL, CriticalInput, unknown_exception) CRITICAL_EXCEPTION(0x0100, CRITICAL, CriticalInput, unknown_exception)
/* Machine Check Interrupt */ /* Machine Check Interrupt */
#ifdef CONFIG_E200
/* no RFMCI, MCSRRs on E200 */
CRITICAL_EXCEPTION(0x0200, MACHINE_CHECK, MachineCheck, \
machine_check_exception)
#else
MCHECK_EXCEPTION(0x0200, MachineCheck, machine_check_exception) MCHECK_EXCEPTION(0x0200, MachineCheck, machine_check_exception)
#endif
/* Data Storage Interrupt */ /* Data Storage Interrupt */
START_EXCEPTION(DataStorage) START_EXCEPTION(DataStorage)
...@@ -399,15 +390,9 @@ interrupt_base: ...@@ -399,15 +390,9 @@ interrupt_base:
/* Floating Point Unavailable Interrupt */ /* Floating Point Unavailable Interrupt */
#ifdef CONFIG_PPC_FPU #ifdef CONFIG_PPC_FPU
FP_UNAVAILABLE_EXCEPTION FP_UNAVAILABLE_EXCEPTION
#else
#ifdef CONFIG_E200
/* E200 treats 'normal' floating point instructions as FP Unavail exception */
EXCEPTION(0x0800, FP_UNAVAIL, FloatingPointUnavailable, \
program_check_exception, EXC_XFER_STD)
#else #else
EXCEPTION(0x0800, FP_UNAVAIL, FloatingPointUnavailable, \ EXCEPTION(0x0800, FP_UNAVAIL, FloatingPointUnavailable, \
unknown_exception, EXC_XFER_STD) unknown_exception, EXC_XFER_STD)
#endif
#endif #endif
/* System Call Interrupt */ /* System Call Interrupt */
...@@ -625,7 +610,7 @@ END_BTB_FLUSH_SECTION ...@@ -625,7 +610,7 @@ END_BTB_FLUSH_SECTION
mfspr r10, SPRN_SPRG_RSCRATCH0 mfspr r10, SPRN_SPRG_RSCRATCH0
b InstructionStorage b InstructionStorage
/* Define SPE handlers for e200 and e500v2 */ /* Define SPE handlers for e500v2 */
#ifdef CONFIG_SPE #ifdef CONFIG_SPE
/* SPE Unavailable */ /* SPE Unavailable */
START_EXCEPTION(SPEUnavailable) START_EXCEPTION(SPEUnavailable)
...@@ -807,31 +792,6 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_BIG_PHYS) ...@@ -807,31 +792,6 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_BIG_PHYS)
#endif #endif
3: mtspr SPRN_MAS2, r12 3: mtspr SPRN_MAS2, r12
#ifdef CONFIG_E200
/* Round robin TLB1 entries assignment */
mfspr r12, SPRN_MAS0
/* Extract TLB1CFG(NENTRY) */
mfspr r11, SPRN_TLB1CFG
andi. r11, r11, 0xfff
/* Extract MAS0(NV) */
andi. r13, r12, 0xfff
addi r13, r13, 1
cmpw 0, r13, r11
addi r12, r12, 1
/* check if we need to wrap */
blt 7f
/* wrap back to first free tlbcam entry */
lis r13, tlbcam_index@ha
lwz r13, tlbcam_index@l(r13)
rlwimi r12, r13, 0, 20, 31
7:
mtspr SPRN_MAS0,r12
#endif /* CONFIG_E200 */
tlb_write_entry: tlb_write_entry:
tlbwe tlbwe
...@@ -933,21 +893,6 @@ get_phys_addr: ...@@ -933,21 +893,6 @@ get_phys_addr:
* Global functions * Global functions
*/ */
#ifdef CONFIG_E200
/* Adjust or setup IVORs for e200 */
_GLOBAL(__setup_e200_ivors)
li r3,DebugDebug@l
mtspr SPRN_IVOR15,r3
li r3,SPEUnavailable@l
mtspr SPRN_IVOR32,r3
li r3,SPEFloatingPointData@l
mtspr SPRN_IVOR33,r3
li r3,SPEFloatingPointRound@l
mtspr SPRN_IVOR34,r3
sync
blr
#endif
#ifdef CONFIG_E500 #ifdef CONFIG_E500
#ifndef CONFIG_PPC_E500MC #ifndef CONFIG_PPC_E500MC
/* Adjust or setup IVORs for e500v1/v2 */ /* Adjust or setup IVORs for e500v1/v2 */
......
...@@ -223,6 +223,4 @@ __init void initialize_cache_info(void) ...@@ -223,6 +223,4 @@ __init void initialize_cache_info(void)
dcache_bsize = cur_cpu_spec->dcache_bsize; dcache_bsize = cur_cpu_spec->dcache_bsize;
icache_bsize = cur_cpu_spec->icache_bsize; icache_bsize = cur_cpu_spec->icache_bsize;
ucache_bsize = 0; ucache_bsize = 0;
if (IS_ENABLED(CONFIG_E200))
ucache_bsize = icache_bsize = dcache_bsize;
} }
...@@ -751,31 +751,6 @@ int machine_check_generic(struct pt_regs *regs) ...@@ -751,31 +751,6 @@ int machine_check_generic(struct pt_regs *regs)
{ {
return 0; return 0;
} }
#elif defined(CONFIG_E200)
int machine_check_e200(struct pt_regs *regs)
{
unsigned long reason = mfspr(SPRN_MCSR);
printk("Machine check in kernel mode.\n");
printk("Caused by (from MCSR=%lx): ", reason);
if (reason & MCSR_MCP)
pr_cont("Machine Check Signal\n");
if (reason & MCSR_CP_PERR)
pr_cont("Cache Push Parity Error\n");
if (reason & MCSR_CPERR)
pr_cont("Cache Parity Error\n");
if (reason & MCSR_EXCP_ERR)
pr_cont("ISI, ITLB, or Bus Error on first instruction fetch for an exception handler\n");
if (reason & MCSR_BUS_IRERR)
pr_cont("Bus - Read Bus Error on instruction fetch\n");
if (reason & MCSR_BUS_DRERR)
pr_cont("Bus - Read Bus Error on data load\n");
if (reason & MCSR_BUS_WRERR)
pr_cont("Bus - Write Bus Error on buffered store or cache line push\n");
return 0;
}
#elif defined(CONFIG_PPC32) #elif defined(CONFIG_PPC32)
int machine_check_generic(struct pt_regs *regs) int machine_check_generic(struct pt_regs *regs)
{ {
......
...@@ -223,15 +223,9 @@ void flush_instruction_cache(void) ...@@ -223,15 +223,9 @@ void flush_instruction_cache(void)
{ {
unsigned long tmp; unsigned long tmp;
if (IS_ENABLED(CONFIG_E200)) {
tmp = mfspr(SPRN_L1CSR0);
tmp |= L1CSR0_CFI | L1CSR0_CLFC;
mtspr(SPRN_L1CSR0, tmp);
} else {
tmp = mfspr(SPRN_L1CSR1); tmp = mfspr(SPRN_L1CSR1);
tmp |= L1CSR1_ICFI | L1CSR1_ICLFR; tmp |= L1CSR1_ICFI | L1CSR1_ICLFR;
mtspr(SPRN_L1CSR1, tmp); mtspr(SPRN_L1CSR1, tmp);
}
isync(); isync();
} }
......
...@@ -23,7 +23,7 @@ choice ...@@ -23,7 +23,7 @@ choice
The most common ones are the desktop and server CPUs (603, The most common ones are the desktop and server CPUs (603,
604, 740, 750, 74xx) CPUs from Freescale and IBM, with their 604, 740, 750, 74xx) CPUs from Freescale and IBM, with their
embedded 512x/52xx/82xx/83xx/86xx counterparts. embedded 512x/52xx/82xx/83xx/86xx counterparts.
The other embedded parts, namely 4xx, 8xx, e200 (55xx) and e500 The other embedded parts, namely 4xx, 8xx and e500
(85xx) each form a family of their own that is not compatible (85xx) each form a family of their own that is not compatible
with the others. with the others.
...@@ -66,9 +66,6 @@ config 44x ...@@ -66,9 +66,6 @@ config 44x
select HAVE_PCI select HAVE_PCI
select PHYS_64BIT select PHYS_64BIT
config E200
bool "Freescale e200"
endchoice endchoice
choice choice
...@@ -258,12 +255,12 @@ config 4xx ...@@ -258,12 +255,12 @@ config 4xx
config BOOKE config BOOKE
bool bool
depends on E200 || E500 || 44x || PPC_BOOK3E depends on E500 || 44x || PPC_BOOK3E
default y default y
config FSL_BOOKE config FSL_BOOKE
bool bool
depends on (E200 || E500) && PPC32 depends on E500 && PPC32
default y default y
# this is for common code between PPC32 & PPC64 FSL BOOKE # this is for common code between PPC32 & PPC64 FSL BOOKE
...@@ -328,7 +325,7 @@ config VSX ...@@ -328,7 +325,7 @@ config VSX
config SPE_POSSIBLE config SPE_POSSIBLE
def_bool y def_bool y
depends on E200 || (E500 && !PPC_E500MC) depends on E500 && !PPC_E500MC
config SPE config SPE
bool "SPE Support" bool "SPE Support"
...@@ -480,7 +477,7 @@ config NR_CPUS ...@@ -480,7 +477,7 @@ config NR_CPUS
config NOT_COHERENT_CACHE config NOT_COHERENT_CACHE
bool bool
depends on 4xx || PPC_8xx || E200 || PPC_MPC512x || \ depends on 4xx || PPC_8xx || PPC_MPC512x || \
GAMECUBE_COMMON || AMIGAONE GAMECUBE_COMMON || AMIGAONE
select ARCH_HAS_DMA_PREP_COHERENT select ARCH_HAS_DMA_PREP_COHERENT
select ARCH_HAS_SYNC_DMA_FOR_DEVICE select ARCH_HAS_SYNC_DMA_FOR_DEVICE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment