powerpc: EX_TABLE macro for exception tables
This macro is taken from s390, and allows more flexibility in changing exception table format. mpe: Put it in ppc_asm.h and only define one version using stringinfy_in_c(). Add some empty definitions and headers to keep the selftests happy. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
997e200182
commit
24bfa6a9e0
@@ -21,18 +21,12 @@
|
||||
|
||||
#define STKFRM (PPC_MIN_STKFRM + 16)
|
||||
|
||||
.macro extab instr,handler
|
||||
.section __ex_table,"a"
|
||||
PPC_LONG \instr,\handler
|
||||
.previous
|
||||
.endm
|
||||
|
||||
.macro inst32 op
|
||||
reg = 0
|
||||
.rept 32
|
||||
20: \op reg,0,r4
|
||||
b 3f
|
||||
extab 20b,99f
|
||||
EX_TABLE(20b,99f)
|
||||
reg = reg + 1
|
||||
.endr
|
||||
.endm
|
||||
@@ -100,7 +94,7 @@ _GLOBAL(do_lfs)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
|
||||
/* Load FP reg N from double at *p. N is in r3, p in r4. */
|
||||
_GLOBAL(do_lfd)
|
||||
@@ -127,7 +121,7 @@ _GLOBAL(do_lfd)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
|
||||
/* Store FP reg N to float at *p. N is in r3, p in r4. */
|
||||
_GLOBAL(do_stfs)
|
||||
@@ -154,7 +148,7 @@ _GLOBAL(do_stfs)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
|
||||
/* Store FP reg N to double at *p. N is in r3, p in r4. */
|
||||
_GLOBAL(do_stfd)
|
||||
@@ -181,7 +175,7 @@ _GLOBAL(do_stfd)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
|
||||
#ifdef CONFIG_ALTIVEC
|
||||
/* Get the contents of vrN into v0; N is in r3. */
|
||||
@@ -248,7 +242,7 @@ _GLOBAL(do_lvx)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
|
||||
/* Store vector reg N to *p. N is in r3, p in r4. */
|
||||
_GLOBAL(do_stvx)
|
||||
@@ -276,7 +270,7 @@ _GLOBAL(do_stvx)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
#endif /* CONFIG_ALTIVEC */
|
||||
|
||||
#ifdef CONFIG_VSX
|
||||
@@ -344,7 +338,7 @@ _GLOBAL(do_lxvd2x)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
|
||||
/* Store VSX reg N to vector doubleword *p. N is in r3, p in r4. */
|
||||
_GLOBAL(do_stxvd2x)
|
||||
@@ -372,7 +366,7 @@ _GLOBAL(do_stxvd2x)
|
||||
mr r3,r9
|
||||
addi r1,r1,STKFRM
|
||||
blr
|
||||
extab 2b,3b
|
||||
EX_TABLE(2b,3b)
|
||||
|
||||
#endif /* CONFIG_VSX */
|
||||
|
||||
|
Reference in New Issue
Block a user