Commit 1c9debbc authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/signal: Use PPC_RAW_xx() macros

To improve readability, use PPC_RAW_xx() macros instead of
open coding. Those macros are self-explanatory so the comments
can go as well.
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/4ca2bfdca2f47a293d05f61eb3c4e487ee170f1f.1621506159.git.christophe.leroy@csgroup.eu
parent 8804d5be
...@@ -275,7 +275,6 @@ ...@@ -275,7 +275,6 @@
#define PPC_INST_MFSPR_DSCR_USER_MASK 0xfc1ffffe #define PPC_INST_MFSPR_DSCR_USER_MASK 0xfc1ffffe
#define PPC_INST_MTSPR_DSCR_USER 0x7c0303a6 #define PPC_INST_MTSPR_DSCR_USER 0x7c0303a6
#define PPC_INST_MTSPR_DSCR_USER_MASK 0xfc1ffffe #define PPC_INST_MTSPR_DSCR_USER_MASK 0xfc1ffffe
#define PPC_INST_SC 0x44000002
#define PPC_INST_STRING 0x7c00042a #define PPC_INST_STRING 0x7c00042a
#define PPC_INST_STRING_MASK 0xfc0007fe #define PPC_INST_STRING_MASK 0xfc0007fe
#define PPC_INST_STRING_GEN_MASK 0xfc00067e #define PPC_INST_STRING_GEN_MASK 0xfc00067e
...@@ -294,7 +293,6 @@ ...@@ -294,7 +293,6 @@
#define PPC_INST_ADD 0x7c000214 #define PPC_INST_ADD 0x7c000214
#define PPC_INST_BLR 0x4e800020 #define PPC_INST_BLR 0x4e800020
#define PPC_INST_BCTR 0x4e800420 #define PPC_INST_BCTR 0x4e800420
#define PPC_INST_BCTRL 0x4e800421
#define PPC_INST_DIVD 0x7c0003d2 #define PPC_INST_DIVD 0x7c0003d2
#define PPC_INST_RLDICR 0x78000004 #define PPC_INST_RLDICR 0x78000004
#define PPC_INST_ORI 0x60000000 #define PPC_INST_ORI 0x60000000
...@@ -418,6 +416,8 @@ ...@@ -418,6 +416,8 @@
#define PPC_RAW_STBCIX(s, a, b) (0x7c0007aa | __PPC_RS(s) | __PPC_RA(a) | __PPC_RB(b)) #define PPC_RAW_STBCIX(s, a, b) (0x7c0007aa | __PPC_RS(s) | __PPC_RA(a) | __PPC_RB(b))
#define PPC_RAW_DCBFPS(a, b) (0x7c0000ac | ___PPC_RA(a) | ___PPC_RB(b) | (4 << 21)) #define PPC_RAW_DCBFPS(a, b) (0x7c0000ac | ___PPC_RA(a) | ___PPC_RB(b) | (4 << 21))
#define PPC_RAW_DCBSTPS(a, b) (0x7c0000ac | ___PPC_RA(a) | ___PPC_RB(b) | (6 << 21)) #define PPC_RAW_DCBSTPS(a, b) (0x7c0000ac | ___PPC_RA(a) | ___PPC_RB(b) | (6 << 21))
#define PPC_RAW_SC() (0x44000002)
/* /*
* Define what the VSX XX1 form instructions will look like, then add * Define what the VSX XX1 form instructions will look like, then add
* the 128 bit load store instructions based on that. * the 128 bit load store instructions based on that.
...@@ -486,6 +486,7 @@ ...@@ -486,6 +486,7 @@
#define PPC_RAW_MTLR(r) (0x7c0803a6 | ___PPC_RT(r)) #define PPC_RAW_MTLR(r) (0x7c0803a6 | ___PPC_RT(r))
#define PPC_RAW_MFLR(t) (PPC_INST_MFLR | ___PPC_RT(t)) #define PPC_RAW_MFLR(t) (PPC_INST_MFLR | ___PPC_RT(t))
#define PPC_RAW_BCTR() (PPC_INST_BCTR) #define PPC_RAW_BCTR() (PPC_INST_BCTR)
#define PPC_RAW_BCTRL() (0x4e800421)
#define PPC_RAW_MTCTR(r) (PPC_INST_MTCTR | ___PPC_RT(r)) #define PPC_RAW_MTCTR(r) (PPC_INST_MTCTR | ___PPC_RT(r))
#define PPC_RAW_ADDI(d, a, i) (PPC_INST_ADDI | ___PPC_RT(d) | ___PPC_RA(a) | IMM_L(i)) #define PPC_RAW_ADDI(d, a, i) (PPC_INST_ADDI | ___PPC_RT(d) | ___PPC_RA(a) | IMM_L(i))
#define PPC_RAW_LI(r, i) PPC_RAW_ADDI(r, 0, i) #define PPC_RAW_LI(r, i) PPC_RAW_ADDI(r, 0, i)
......
...@@ -828,10 +828,8 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset, ...@@ -828,10 +828,8 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
tramp = VDSO32_SYMBOL(tsk->mm->context.vdso, sigtramp_rt32); tramp = VDSO32_SYMBOL(tsk->mm->context.vdso, sigtramp_rt32);
} else { } else {
tramp = (unsigned long)mctx->mc_pad; tramp = (unsigned long)mctx->mc_pad;
/* Set up the sigreturn trampoline: li r0,sigret; sc */ unsafe_put_user(PPC_RAW_LI(_R0, __NR_rt_sigreturn), &mctx->mc_pad[0], failed);
unsafe_put_user(PPC_INST_ADDI + __NR_rt_sigreturn, &mctx->mc_pad[0], unsafe_put_user(PPC_RAW_SC(), &mctx->mc_pad[1], failed);
failed);
unsafe_put_user(PPC_INST_SC, &mctx->mc_pad[1], failed);
asm("dcbst %y0; sync; icbi %y0; sync" :: "Z" (mctx->mc_pad[0])); asm("dcbst %y0; sync; icbi %y0; sync" :: "Z" (mctx->mc_pad[0]));
} }
unsafe_put_sigset_t(&frame->uc.uc_sigmask, oldset, failed); unsafe_put_sigset_t(&frame->uc.uc_sigmask, oldset, failed);
...@@ -926,9 +924,8 @@ int handle_signal32(struct ksignal *ksig, sigset_t *oldset, ...@@ -926,9 +924,8 @@ int handle_signal32(struct ksignal *ksig, sigset_t *oldset,
tramp = VDSO32_SYMBOL(tsk->mm->context.vdso, sigtramp32); tramp = VDSO32_SYMBOL(tsk->mm->context.vdso, sigtramp32);
} else { } else {
tramp = (unsigned long)mctx->mc_pad; tramp = (unsigned long)mctx->mc_pad;
/* Set up the sigreturn trampoline: li r0,sigret; sc */ unsafe_put_user(PPC_RAW_LI(_R0, __NR_sigreturn), &mctx->mc_pad[0], failed);
unsafe_put_user(PPC_INST_ADDI + __NR_sigreturn, &mctx->mc_pad[0], failed); unsafe_put_user(PPC_RAW_SC(), &mctx->mc_pad[1], failed);
unsafe_put_user(PPC_INST_SC, &mctx->mc_pad[1], failed);
asm("dcbst %y0; sync; icbi %y0; sync" :: "Z" (mctx->mc_pad[0])); asm("dcbst %y0; sync; icbi %y0; sync" :: "Z" (mctx->mc_pad[0]));
} }
user_access_end(); user_access_end();
......
...@@ -618,15 +618,12 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp) ...@@ -618,15 +618,12 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp)
int i; int i;
long err = 0; long err = 0;
/* bctrl # call the handler */ /* Call the handler and pop the dummy stackframe*/
err |= __put_user(PPC_INST_BCTRL, &tramp[0]); err |= __put_user(PPC_RAW_BCTRL(), &tramp[0]);
/* addi r1, r1, __SIGNAL_FRAMESIZE # Pop the dummy stackframe */ err |= __put_user(PPC_RAW_ADDI(_R1, _R1, __SIGNAL_FRAMESIZE), &tramp[1]);
err |= __put_user(PPC_INST_ADDI | __PPC_RT(R1) | __PPC_RA(R1) |
(__SIGNAL_FRAMESIZE & 0xffff), &tramp[1]); err |= __put_user(PPC_RAW_LI(_R0, syscall), &tramp[2]);
/* li r0, __NR_[rt_]sigreturn| */ err |= __put_user(PPC_RAW_SC(), &tramp[3]);
err |= __put_user(PPC_INST_ADDI | (syscall & 0xffff), &tramp[2]);
/* sc */
err |= __put_user(PPC_INST_SC, &tramp[3]);
/* Minimal traceback info */ /* Minimal traceback info */
for (i=TRAMP_TRACEBACK; i < TRAMP_SIZE ;i++) for (i=TRAMP_TRACEBACK; i < TRAMP_SIZE ;i++)
......
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