powerpc/config: Add CONFIG_BOOKE_OR_40x
We have many functionnalities common to 40x and BOOKE, it leads to many places with #if defined(CONFIG_BOOKE) || defined(CONFIG_40x). We are going to add a few more with KUAP for booke/40x, so create a new symbol which is defined when either BOOKE or 40x is defined. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/9a3dbd60924cb25c9f944d3d8205ac5a0d15e229.1634627931.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
25ae981faf
commit
047a6fd401
|
@ -61,7 +61,7 @@
|
||||||
|
|
||||||
static inline void __hard_irq_enable(void)
|
static inline void __hard_irq_enable(void)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_BOOKE) || IS_ENABLED(CONFIG_40x))
|
if (IS_ENABLED(CONFIG_BOOKE_OR_40x))
|
||||||
wrtee(MSR_EE);
|
wrtee(MSR_EE);
|
||||||
else if (IS_ENABLED(CONFIG_PPC_8xx))
|
else if (IS_ENABLED(CONFIG_PPC_8xx))
|
||||||
wrtspr(SPRN_EIE);
|
wrtspr(SPRN_EIE);
|
||||||
|
@ -73,7 +73,7 @@ static inline void __hard_irq_enable(void)
|
||||||
|
|
||||||
static inline void __hard_irq_disable(void)
|
static inline void __hard_irq_disable(void)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_BOOKE) || IS_ENABLED(CONFIG_40x))
|
if (IS_ENABLED(CONFIG_BOOKE_OR_40x))
|
||||||
wrtee(0);
|
wrtee(0);
|
||||||
else if (IS_ENABLED(CONFIG_PPC_8xx))
|
else if (IS_ENABLED(CONFIG_PPC_8xx))
|
||||||
wrtspr(SPRN_EID);
|
wrtspr(SPRN_EID);
|
||||||
|
@ -85,7 +85,7 @@ static inline void __hard_irq_disable(void)
|
||||||
|
|
||||||
static inline void __hard_EE_RI_disable(void)
|
static inline void __hard_EE_RI_disable(void)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_BOOKE) || IS_ENABLED(CONFIG_40x))
|
if (IS_ENABLED(CONFIG_BOOKE_OR_40x))
|
||||||
wrtee(0);
|
wrtee(0);
|
||||||
else if (IS_ENABLED(CONFIG_PPC_8xx))
|
else if (IS_ENABLED(CONFIG_PPC_8xx))
|
||||||
wrtspr(SPRN_NRI);
|
wrtspr(SPRN_NRI);
|
||||||
|
@ -97,7 +97,7 @@ static inline void __hard_EE_RI_disable(void)
|
||||||
|
|
||||||
static inline void __hard_RI_enable(void)
|
static inline void __hard_RI_enable(void)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_BOOKE) || IS_ENABLED(CONFIG_40x))
|
if (IS_ENABLED(CONFIG_BOOKE_OR_40x))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_PPC_8xx))
|
if (IS_ENABLED(CONFIG_PPC_8xx))
|
||||||
|
|
|
@ -36,7 +36,7 @@ extern int distribute_irqs;
|
||||||
|
|
||||||
struct pt_regs;
|
struct pt_regs;
|
||||||
|
|
||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
/*
|
/*
|
||||||
* Per-cpu stacks for handling critical, debug and machine check
|
* Per-cpu stacks for handling critical, debug and machine check
|
||||||
* level interrupts.
|
* level interrupts.
|
||||||
|
|
|
@ -291,7 +291,7 @@ static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc)
|
||||||
|
|
||||||
static inline bool cpu_has_msr_ri(void)
|
static inline bool cpu_has_msr_ri(void)
|
||||||
{
|
{
|
||||||
return !IS_ENABLED(CONFIG_BOOKE) && !IS_ENABLED(CONFIG_40x);
|
return !IS_ENABLED(CONFIG_BOOKE_OR_40x);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool regs_is_unrecoverable(struct pt_regs *regs)
|
static inline bool regs_is_unrecoverable(struct pt_regs *regs)
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
#include <asm/feature-fixups.h>
|
#include <asm/feature-fixups.h>
|
||||||
|
|
||||||
/* Pickup Book E specific registers. */
|
/* Pickup Book E specific registers. */
|
||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
#include <asm/reg_booke.h>
|
#include <asm/reg_booke.h>
|
||||||
#endif /* CONFIG_BOOKE || CONFIG_40x */
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_FSL_EMB_PERFMON
|
#ifdef CONFIG_FSL_EMB_PERFMON
|
||||||
#include <asm/reg_fsl_emb.h>
|
#include <asm/reg_fsl_emb.h>
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PPC32
|
#ifdef CONFIG_PPC32
|
||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
#include "head_booke.h"
|
#include "head_booke.h"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -105,7 +105,7 @@ transfer_to_syscall:
|
||||||
stw r11, 0(r1)
|
stw r11, 0(r1)
|
||||||
mflr r12
|
mflr r12
|
||||||
stw r12, _LINK(r1)
|
stw r12, _LINK(r1)
|
||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
rlwinm r9,r9,0,14,12 /* clear MSR_WE (necessary?) */
|
rlwinm r9,r9,0,14,12 /* clear MSR_WE (necessary?) */
|
||||||
#endif
|
#endif
|
||||||
lis r12,STACK_FRAME_REGS_MARKER@ha /* exception frame marker */
|
lis r12,STACK_FRAME_REGS_MARKER@ha /* exception frame marker */
|
||||||
|
|
|
@ -811,7 +811,7 @@ void __init init_IRQ(void)
|
||||||
ppc_md.init_IRQ();
|
ppc_md.init_IRQ();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
void *critirq_ctx[NR_CPUS] __read_mostly;
|
void *critirq_ctx[NR_CPUS] __read_mostly;
|
||||||
void *dbgirq_ctx[NR_CPUS] __read_mostly;
|
void *dbgirq_ctx[NR_CPUS] __read_mostly;
|
||||||
void *mcheckirq_ctx[NR_CPUS] __read_mostly;
|
void *mcheckirq_ctx[NR_CPUS] __read_mostly;
|
||||||
|
|
|
@ -48,7 +48,7 @@ static struct hard_trap_info
|
||||||
{ 0x0800, 0x08 /* SIGFPE */ }, /* fp unavailable */
|
{ 0x0800, 0x08 /* SIGFPE */ }, /* fp unavailable */
|
||||||
{ 0x0900, 0x0e /* SIGALRM */ }, /* decrementer */
|
{ 0x0900, 0x0e /* SIGALRM */ }, /* decrementer */
|
||||||
{ 0x0c00, 0x14 /* SIGCHLD */ }, /* system call */
|
{ 0x0c00, 0x14 /* SIGCHLD */ }, /* system call */
|
||||||
#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
{ 0x2002, 0x05 /* SIGTRAP */ }, /* debug */
|
{ 0x2002, 0x05 /* SIGTRAP */ }, /* debug */
|
||||||
#if defined(CONFIG_FSL_BOOKE)
|
#if defined(CONFIG_FSL_BOOKE)
|
||||||
{ 0x2010, 0x08 /* SIGFPE */ }, /* spe unavailable */
|
{ 0x2010, 0x08 /* SIGFPE */ }, /* spe unavailable */
|
||||||
|
@ -67,7 +67,7 @@ static struct hard_trap_info
|
||||||
{ 0x2010, 0x08 /* SIGFPE */ }, /* fp unavailable */
|
{ 0x2010, 0x08 /* SIGFPE */ }, /* fp unavailable */
|
||||||
{ 0x2020, 0x08 /* SIGFPE */ }, /* ap unavailable */
|
{ 0x2020, 0x08 /* SIGFPE */ }, /* ap unavailable */
|
||||||
#endif
|
#endif
|
||||||
#else /* ! (defined(CONFIG_40x) || defined(CONFIG_BOOKE)) */
|
#else /* !CONFIG_BOOKE_OR_40x */
|
||||||
{ 0x0d00, 0x05 /* SIGTRAP */ }, /* single-step */
|
{ 0x0d00, 0x05 /* SIGTRAP */ }, /* single-step */
|
||||||
#if defined(CONFIG_PPC_8xx)
|
#if defined(CONFIG_PPC_8xx)
|
||||||
{ 0x1000, 0x04 /* SIGILL */ }, /* software emulation */
|
{ 0x1000, 0x04 /* SIGILL */ }, /* software emulation */
|
||||||
|
|
|
@ -29,7 +29,7 @@ void setup_tlb_core_data(void);
|
||||||
static inline void setup_tlb_core_data(void) { }
|
static inline void setup_tlb_core_data(void) { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_PPC_BOOK3E) || defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
void exc_lvl_early_init(void);
|
void exc_lvl_early_init(void);
|
||||||
#else
|
#else
|
||||||
static inline void exc_lvl_early_init(void) { }
|
static inline void exc_lvl_early_init(void) { }
|
||||||
|
|
|
@ -175,7 +175,7 @@ void __init emergency_stack_init(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
void __init exc_lvl_early_init(void)
|
void __init exc_lvl_early_init(void)
|
||||||
{
|
{
|
||||||
unsigned int i, hw_cpu;
|
unsigned int i, hw_cpu;
|
||||||
|
|
|
@ -770,7 +770,7 @@ static int __init get_freq(char *name, int cells, unsigned long *val)
|
||||||
|
|
||||||
static void start_cpu_decrementer(void)
|
static void start_cpu_decrementer(void)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#ifdef CONFIG_BOOKE_OR_40x
|
||||||
unsigned int tcr;
|
unsigned int tcr;
|
||||||
|
|
||||||
/* Clear any pending timer interrupts */
|
/* Clear any pending timer interrupts */
|
||||||
|
|
|
@ -287,6 +287,11 @@ config BOOKE
|
||||||
depends on E500 || 44x || PPC_BOOK3E
|
depends on E500 || 44x || PPC_BOOK3E
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config BOOKE_OR_40x
|
||||||
|
bool
|
||||||
|
depends on BOOKE || 40x
|
||||||
|
default y
|
||||||
|
|
||||||
config FSL_BOOKE
|
config FSL_BOOKE
|
||||||
bool
|
bool
|
||||||
depends on E500 && PPC32
|
depends on E500 && PPC32
|
||||||
|
|
Loading…
Reference in New Issue