calling.h (597473720f4dc69749542bfcfed4a927a43d935e) | calling.h (55aedddb6149ab71bec9f050846855113977b033) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <linux/jump_label.h> 3#include <asm/unwind_hints.h> 4#include <asm/cpufeatures.h> 5#include <asm/page_types.h> 6#include <asm/percpu.h> 7#include <asm/asm-offsets.h> 8#include <asm/processor-flags.h> --- 158 unchanged lines hidden (view full) --- 167 .endif 168 popq %rdx 169 popq %rsi 170 .if \pop_rdi 171 popq %rdi 172 .endif 173.endm 174 | 1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <linux/jump_label.h> 3#include <asm/unwind_hints.h> 4#include <asm/cpufeatures.h> 5#include <asm/page_types.h> 6#include <asm/percpu.h> 7#include <asm/asm-offsets.h> 8#include <asm/processor-flags.h> --- 158 unchanged lines hidden (view full) --- 167 .endif 168 popq %rdx 169 popq %rsi 170 .if \pop_rdi 171 popq %rdi 172 .endif 173.endm 174 |
175/* 176 * This is a sneaky trick to help the unwinder find pt_regs on the stack. The 177 * frame pointer is replaced with an encoded pointer to pt_regs. The encoding 178 * is just setting the LSB, which makes it an invalid stack address and is also 179 * a signal to the unwinder that it's a pt_regs pointer in disguise. 180 * 181 * NOTE: This macro must be used *after* PUSH_AND_CLEAR_REGS because it corrupts 182 * the original rbp. 183 */ 184.macro ENCODE_FRAME_POINTER ptregs_offset=0 185#ifdef CONFIG_FRAME_POINTER 186 leaq 1+\ptregs_offset(%rsp), %rbp 187#endif 188.endm 189 | |
190#ifdef CONFIG_PAGE_TABLE_ISOLATION 191 192/* 193 * PAGE_TABLE_ISOLATION PGDs are 8k. Flip bit 12 to switch between the two 194 * halves: 195 */ 196#define PTI_USER_PGTABLE_BIT PAGE_SHIFT 197#define PTI_USER_PGTABLE_MASK (1 << PTI_USER_PGTABLE_BIT) --- 155 unchanged lines hidden (view full) --- 353#ifdef CONFIG_CONTEXT_TRACKING 354#ifdef CONFIG_JUMP_LABEL 355 STATIC_JUMP_IF_FALSE .Lafter_call_\@, context_tracking_enabled, def=0 356#endif 357 call enter_from_user_mode 358.Lafter_call_\@: 359#endif 360.endm | 175#ifdef CONFIG_PAGE_TABLE_ISOLATION 176 177/* 178 * PAGE_TABLE_ISOLATION PGDs are 8k. Flip bit 12 to switch between the two 179 * halves: 180 */ 181#define PTI_USER_PGTABLE_BIT PAGE_SHIFT 182#define PTI_USER_PGTABLE_MASK (1 << PTI_USER_PGTABLE_BIT) --- 155 unchanged lines hidden (view full) --- 338#ifdef CONFIG_CONTEXT_TRACKING 339#ifdef CONFIG_JUMP_LABEL 340 STATIC_JUMP_IF_FALSE .Lafter_call_\@, context_tracking_enabled, def=0 341#endif 342 call enter_from_user_mode 343.Lafter_call_\@: 344#endif 345.endm |
346 347#ifdef CONFIG_PARAVIRT_XXL 348#define GET_CR2_INTO(reg) GET_CR2_INTO_AX ; _ASM_MOV %_ASM_AX, reg 349#else 350#define GET_CR2_INTO(reg) _ASM_MOV %cr2, reg 351#endif |
|