mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-01 13:36:44 +07:00
powerpc/fsl-booke: Add support for FSL 64-bit e5500 core
The new e5500 core is similar to the e500mc core but adds 64-bit support. We support running it in 32-bit mode as it is identical to the e500mc. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
6db92cc9d0
commit
4490c06b58
@ -55,7 +55,9 @@ obj-$(CONFIG_IBMVIO) += vio.o
|
|||||||
obj-$(CONFIG_IBMEBUS) += ibmebus.o
|
obj-$(CONFIG_IBMEBUS) += ibmebus.o
|
||||||
obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o
|
obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o
|
||||||
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||||
|
ifeq ($(CONFIG_PPC32),y)
|
||||||
obj-$(CONFIG_E500) += idle_e500.o
|
obj-$(CONFIG_E500) += idle_e500.o
|
||||||
|
endif
|
||||||
obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o
|
obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o
|
||||||
obj-$(CONFIG_TAU) += tau_6xx.o
|
obj-$(CONFIG_TAU) += tau_6xx.o
|
||||||
obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o
|
obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o
|
||||||
@ -67,7 +69,7 @@ endif
|
|||||||
obj64-$(CONFIG_HIBERNATION) += swsusp_asm64.o
|
obj64-$(CONFIG_HIBERNATION) += swsusp_asm64.o
|
||||||
obj-$(CONFIG_MODULES) += module.o module_$(CONFIG_WORD_SIZE).o
|
obj-$(CONFIG_MODULES) += module.o module_$(CONFIG_WORD_SIZE).o
|
||||||
obj-$(CONFIG_44x) += cpu_setup_44x.o
|
obj-$(CONFIG_44x) += cpu_setup_44x.o
|
||||||
obj-$(CONFIG_FSL_BOOKE) += cpu_setup_fsl_booke.o dbell.o
|
obj-$(CONFIG_PPC_FSL_BOOK3E) += cpu_setup_fsl_booke.o dbell.o
|
||||||
obj-$(CONFIG_PPC_BOOK3E_64) += dbell.o
|
obj-$(CONFIG_PPC_BOOK3E_64) += dbell.o
|
||||||
|
|
||||||
extra-y := head_$(CONFIG_WORD_SIZE).o
|
extra-y := head_$(CONFIG_WORD_SIZE).o
|
||||||
|
@ -51,6 +51,7 @@ _GLOBAL(__e500_dcache_setup)
|
|||||||
isync
|
isync
|
||||||
blr
|
blr
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC32
|
||||||
_GLOBAL(__setup_cpu_e200)
|
_GLOBAL(__setup_cpu_e200)
|
||||||
/* enable dedicated debug exception handling resources (Debug APU) */
|
/* enable dedicated debug exception handling resources (Debug APU) */
|
||||||
mfspr r3,SPRN_HID0
|
mfspr r3,SPRN_HID0
|
||||||
@ -72,3 +73,17 @@ _GLOBAL(__setup_cpu_e500mc)
|
|||||||
bl __setup_e500mc_ivors
|
bl __setup_e500mc_ivors
|
||||||
mtlr r4
|
mtlr r4
|
||||||
blr
|
blr
|
||||||
|
#endif
|
||||||
|
/* Right now, restore and setup are the same thing */
|
||||||
|
_GLOBAL(__restore_cpu_e5500)
|
||||||
|
_GLOBAL(__setup_cpu_e5500)
|
||||||
|
mflr r4
|
||||||
|
bl __e500_icache_setup
|
||||||
|
bl __e500_dcache_setup
|
||||||
|
#ifdef CONFIG_PPC_BOOK3E_64
|
||||||
|
bl .__setup_base_ivors
|
||||||
|
#else
|
||||||
|
bl __setup_e500mc_ivors
|
||||||
|
#endif
|
||||||
|
mtlr r4
|
||||||
|
blr
|
||||||
|
@ -66,6 +66,10 @@ extern void __restore_cpu_ppc970(void);
|
|||||||
extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec);
|
extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec);
|
||||||
extern void __restore_cpu_power7(void);
|
extern void __restore_cpu_power7(void);
|
||||||
#endif /* CONFIG_PPC64 */
|
#endif /* CONFIG_PPC64 */
|
||||||
|
#if defined(CONFIG_E500)
|
||||||
|
extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec);
|
||||||
|
extern void __restore_cpu_e5500(void);
|
||||||
|
#endif /* CONFIG_E500 */
|
||||||
|
|
||||||
/* This table only contains "desktop" CPUs, it need to be filled with embedded
|
/* This table only contains "desktop" CPUs, it need to be filled with embedded
|
||||||
* ones as well...
|
* ones as well...
|
||||||
@ -1891,7 +1895,9 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||||||
.platform = "ppc5554",
|
.platform = "ppc5554",
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_E200 */
|
#endif /* CONFIG_E200 */
|
||||||
|
#endif /* CONFIG_PPC32 */
|
||||||
#ifdef CONFIG_E500
|
#ifdef CONFIG_E500
|
||||||
|
#ifdef CONFIG_PPC32
|
||||||
{ /* e500 */
|
{ /* e500 */
|
||||||
.pvr_mask = 0xffff0000,
|
.pvr_mask = 0xffff0000,
|
||||||
.pvr_value = 0x80200000,
|
.pvr_value = 0x80200000,
|
||||||
@ -1946,6 +1952,26 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||||||
.machine_check = machine_check_e500mc,
|
.machine_check = machine_check_e500mc,
|
||||||
.platform = "ppce500mc",
|
.platform = "ppce500mc",
|
||||||
},
|
},
|
||||||
|
#endif /* CONFIG_PPC32 */
|
||||||
|
{ /* e5500 */
|
||||||
|
.pvr_mask = 0xffff0000,
|
||||||
|
.pvr_value = 0x80240000,
|
||||||
|
.cpu_name = "e5500",
|
||||||
|
.cpu_features = CPU_FTRS_E500MC,
|
||||||
|
.cpu_user_features = COMMON_USER_BOOKE,
|
||||||
|
.mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS |
|
||||||
|
MMU_FTR_USE_TLBILX,
|
||||||
|
.icache_bsize = 64,
|
||||||
|
.dcache_bsize = 64,
|
||||||
|
.num_pmcs = 4,
|
||||||
|
.oprofile_cpu_type = "ppc/e500mc",
|
||||||
|
.oprofile_type = PPC_OPROFILE_FSL_EMB,
|
||||||
|
.cpu_setup = __setup_cpu_e5500,
|
||||||
|
.cpu_restore = __restore_cpu_e5500,
|
||||||
|
.machine_check = machine_check_e500mc,
|
||||||
|
.platform = "ppce5500",
|
||||||
|
},
|
||||||
|
#ifdef CONFIG_PPC32
|
||||||
{ /* default match */
|
{ /* default match */
|
||||||
.pvr_mask = 0x00000000,
|
.pvr_mask = 0x00000000,
|
||||||
.pvr_value = 0x00000000,
|
.pvr_value = 0x00000000,
|
||||||
@ -1960,8 +1986,8 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||||||
.machine_check = machine_check_e500,
|
.machine_check = machine_check_e500,
|
||||||
.platform = "powerpc",
|
.platform = "powerpc",
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_E500 */
|
|
||||||
#endif /* CONFIG_PPC32 */
|
#endif /* CONFIG_PPC32 */
|
||||||
|
#endif /* CONFIG_E500 */
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_BOOK3E_64
|
#ifdef CONFIG_PPC_BOOK3E_64
|
||||||
{ /* This is a default entry to get going, to be replaced by
|
{ /* This is a default entry to get going, to be replaced by
|
||||||
|
@ -538,6 +538,11 @@ int machine_check_e500(struct pt_regs *regs)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int machine_check_generic(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#elif defined(CONFIG_E200)
|
#elif defined(CONFIG_E200)
|
||||||
int machine_check_e200(struct pt_regs *regs)
|
int machine_check_e200(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
|
@ -11,6 +11,8 @@ menuconfig FSL_SOC_BOOKE
|
|||||||
|
|
||||||
if FSL_SOC_BOOKE
|
if FSL_SOC_BOOKE
|
||||||
|
|
||||||
|
if PPC32
|
||||||
|
|
||||||
config MPC8540_ADS
|
config MPC8540_ADS
|
||||||
bool "Freescale MPC8540 ADS"
|
bool "Freescale MPC8540 ADS"
|
||||||
select DEFAULT_UIMAGE
|
select DEFAULT_UIMAGE
|
||||||
@ -167,7 +169,6 @@ config P3041_DS
|
|||||||
config P4080_DS
|
config P4080_DS
|
||||||
bool "Freescale P4080 DS"
|
bool "Freescale P4080 DS"
|
||||||
select DEFAULT_UIMAGE
|
select DEFAULT_UIMAGE
|
||||||
select PPC_FSL_BOOK3E
|
|
||||||
select PPC_E500MC
|
select PPC_E500MC
|
||||||
select PHYS_64BIT
|
select PHYS_64BIT
|
||||||
select SWIOTLB
|
select SWIOTLB
|
||||||
@ -176,6 +177,8 @@ config P4080_DS
|
|||||||
help
|
help
|
||||||
This option enables support for the P4080 DS board
|
This option enables support for the P4080 DS board
|
||||||
|
|
||||||
|
endif # PPC32
|
||||||
|
|
||||||
endif # FSL_SOC_BOOKE
|
endif # FSL_SOC_BOOKE
|
||||||
|
|
||||||
config TQM85xx
|
config TQM85xx
|
||||||
|
@ -125,6 +125,7 @@ config 8xx
|
|||||||
|
|
||||||
config E500
|
config E500
|
||||||
select FSL_EMB_PERFMON
|
select FSL_EMB_PERFMON
|
||||||
|
select PPC_FSL_BOOK3E
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config PPC_E500MC
|
config PPC_E500MC
|
||||||
@ -166,9 +167,14 @@ config BOOKE
|
|||||||
|
|
||||||
config FSL_BOOKE
|
config FSL_BOOKE
|
||||||
bool
|
bool
|
||||||
depends on E200 || E500
|
depends on (E200 || E500) && PPC32
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
# this is for common code between PPC32 & PPC64 FSL BOOKE
|
||||||
|
config PPC_FSL_BOOK3E
|
||||||
|
bool
|
||||||
|
select FSL_EMB_PERFMON
|
||||||
|
default y if FSL_BOOKE
|
||||||
|
|
||||||
config PTE_64BIT
|
config PTE_64BIT
|
||||||
bool
|
bool
|
||||||
|
Loading…
Reference in New Issue
Block a user