diff options
| author | Vineet Gupta <vgupta@kernel.org> | 2020-05-12 22:18:08 -0700 |
|---|---|---|
| committer | Vineet Gupta <vgupta@kernel.org> | 2023-08-17 20:31:59 -0700 |
| commit | cfca4b5abe0cc13f9d9f45f760efd8260e31200f (patch) | |
| tree | bac7d51b9a322dbb17a9428c87aeae26aa5678ef /arch/arc/include/asm/ptrace.h | |
| parent | fad84e39f116035ae8d550c6020107b8ac113b45 (diff) | |
| download | linux-cfca4b5abe0cc13f9d9f45f760efd8260e31200f.tar.gz linux-cfca4b5abe0cc13f9d9f45f760efd8260e31200f.tar.bz2 linux-cfca4b5abe0cc13f9d9f45f760efd8260e31200f.zip | |
ARC: entry: use gp to cache task pointer (vs. r25)
The motivation is eventual ABI considerations for ARCv3 but even without
it this change us worthwhile as diffstat reduces 100 net lines
r25 is a callee saved register, normally not saved by entry code in
pt_regs. However because of its usage in CONFIG_ARC_CURR_IN_REG it needs
to be. This in turn requires a whole bunch of special casing when we
need to access r25. Then there is distinction between user mode r25 vs.
kernel mode r25 - hence distinct SAVE_CALLEE_SAVED_{USER,KERNEL}
Instead use gp which is a scratch register and thus saved already in entry
code. This cleans things up significantly and much nocer on eyes:
- SAVE_CALLEE_SAVED_{USER,KERNEL} are now exactly same
- no special user_r25 slot in pt_reggs
Note that typical global asm registers are callee-saved (r25), but gp is
not callee-saved thus needs additional -ffixed-<reg> toggle
Signed-off-by: Vineet Gupta <vgupta@kernel.org>
Diffstat (limited to 'arch/arc/include/asm/ptrace.h')
| -rw-r--r-- | arch/arc/include/asm/ptrace.h | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/arch/arc/include/asm/ptrace.h b/arch/arc/include/asm/ptrace.h index cf90fcd2a628..e9798f46cdc4 100644 --- a/arch/arc/include/asm/ptrace.h +++ b/arch/arc/include/asm/ptrace.h @@ -52,11 +52,9 @@ struct pt_regs { }; unsigned long event; }; - - unsigned long user_r25; }; -#define MAX_REG_OFFSET offsetof(struct pt_regs, user_r25) +#define MAX_REG_OFFSET offsetof(struct pt_regs, event) #else @@ -79,8 +77,6 @@ struct pt_regs { unsigned long bta; /* bta_l1, bta_l2, erbta */ - unsigned long user_r25; - unsigned long r26; /* gp */ unsigned long fp; unsigned long sp; /* user/kernel sp depending on where we came from */ |
