Commit bef8968d authored by Russell King's avatar Russell King Committed by Daniel Borkmann

ARM: net: bpf: always use odd/even register pair

Always use an odd/even register pair for our 64-bit registers, so that
we're able to use the double-word load/store instructions in the future.
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent b5045229
...@@ -47,27 +47,27 @@ ...@@ -47,27 +47,27 @@
* The callee saved registers depends on whether frame pointers are enabled. * The callee saved registers depends on whether frame pointers are enabled.
* With frame pointers (to be compliant with the ABI): * With frame pointers (to be compliant with the ABI):
* *
* high * high
* original ARM_SP => +------------------+ \ * original ARM_SP => +--------------+ \
* | pc | | * | pc | |
* current ARM_FP => +------------------+ } callee saved registers * current ARM_FP => +--------------+ } callee saved registers
* |r4-r8,r10,fp,ip,lr| | * |r4-r9,fp,ip,lr| |
* +------------------+ / * +--------------+ /
* low * low
* *
* Without frame pointers: * Without frame pointers:
* *
* high * high
* original ARM_SP => +------------------+ * original ARM_SP => +--------------+
* | r4-r8,r10,fp,lr | callee saved registers * | r4-r9,fp,lr | callee saved registers
* current ARM_FP => +------------------+ * current ARM_FP => +--------------+
* low * low
* *
* When popping registers off the stack at the end of a BPF function, we * When popping registers off the stack at the end of a BPF function, we
* reference them via the current ARM_FP register. * reference them via the current ARM_FP register.
*/ */
#define CALLEE_MASK (1 << ARM_R4 | 1 << ARM_R5 | 1 << ARM_R6 | \ #define CALLEE_MASK (1 << ARM_R4 | 1 << ARM_R5 | 1 << ARM_R6 | \
1 << ARM_R7 | 1 << ARM_R8 | 1 << ARM_R10 | \ 1 << ARM_R7 | 1 << ARM_R8 | 1 << ARM_R9 | \
1 << ARM_FP) 1 << ARM_FP)
#define CALLEE_PUSH_MASK (CALLEE_MASK | 1 << ARM_LR) #define CALLEE_PUSH_MASK (CALLEE_MASK | 1 << ARM_LR)
#define CALLEE_POP_MASK (CALLEE_MASK | 1 << ARM_PC) #define CALLEE_POP_MASK (CALLEE_MASK | 1 << ARM_PC)
...@@ -157,7 +157,7 @@ static const s8 bpf2a32[][2] = { ...@@ -157,7 +157,7 @@ static const s8 bpf2a32[][2] = {
* for constant blindings and others. * for constant blindings and others.
*/ */
[TMP_REG_1] = {ARM_R7, ARM_R6}, [TMP_REG_1] = {ARM_R7, ARM_R6},
[TMP_REG_2] = {ARM_R10, ARM_R8}, [TMP_REG_2] = {ARM_R9, ARM_R8},
/* Tail call count. Stored on stack scratch space. */ /* Tail call count. Stored on stack scratch space. */
[TCALL_CNT] = {STACK_OFFSET(BPF_TC_HI), STACK_OFFSET(BPF_TC_LO)}, [TCALL_CNT] = {STACK_OFFSET(BPF_TC_HI), STACK_OFFSET(BPF_TC_LO)},
/* temporary register for blinding constants. /* temporary register for blinding constants.
......
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