Commit 70ec3a6c authored by Russell King's avatar Russell King
Browse files

ARM: net: bpf: move stack documentation



Move the stack documentation towards the top of the file, where it's
relevant for things like the register layout.

Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent d1220efd
Loading
Loading
Loading
Loading
+21 −21
Original line number Diff line number Diff line
@@ -27,6 +27,27 @@

int bpf_jit_enable __read_mostly;

/*
 * eBPF prog stack layout
 *
 *                         high
 * original ARM_SP =>     +-----+ eBPF prologue
 *                        |FP/LR|
 * current ARM_FP =>      +-----+
 *                        | ... | callee saved registers
 * eBPF fp register =>    +-----+ <= (BPF_FP)
 *                        | ... | eBPF JIT scratch space
 *                        |     | eBPF prog stack
 *                        +-----+
 *                        |RSVD | JIT scratchpad
 * current ARM_SP =>      +-----+ <= (BPF_FP - STACK_SIZE)
 *                        |     |
 *                        | ... | Function call stack
 *                        |     |
 *                        +-----+
 *                          low
 */

#define STACK_OFFSET(k)	(k)
#define TMP_REG_1	(MAX_BPF_JIT_REG + 0)	/* TEMP Register 1 */
#define TMP_REG_2	(MAX_BPF_JIT_REG + 1)	/* TEMP Register 2 */
@@ -1091,27 +1112,6 @@ static void build_prologue(struct jit_ctx *ctx)

	u16 reg_set = 0;

	/*
	 * eBPF prog stack layout
	 *
	 *                         high
	 * original ARM_SP =>     +-----+ eBPF prologue
	 *                        |FP/LR|
	 * current ARM_FP =>      +-----+
	 *                        | ... | callee saved registers
	 * eBPF fp register =>    +-----+ <= (BPF_FP)
	 *                        | ... | eBPF JIT scratch space
	 *                        |     | eBPF prog stack
	 *                        +-----+
	 *			  |RSVD | JIT scratchpad
	 * current A64_SP =>      +-----+ <= (BPF_FP - STACK_SIZE)
	 *                        |     |
	 *                        | ... | Function call stack
	 *                        |     |
	 *                        +-----+
	 *                          low
	 */

	/* Save callee saved registers. */
	reg_set |= (1<<r4) | (1<<r5) | (1<<r6) | (1<<r7) | (1<<r8) | (1<<r10);
#ifdef CONFIG_FRAME_POINTER