14 #define MAX_ERRNO 4095 15 #define GFP_KERNEL 0x14000c0 17 #define O_RDONLY 00000000 18 #define O_WRONLY 00000001 19 #define O_RDWR 00000002 20 #define O_CREAT 00000100 21 #define O_EXCL 00000200 22 #define O_TRUNC 00001000 38 #define UMH_WAIT_EXEC 1 39 #define UMH_WAIT_PROC 2 40 #define UMH_KILLABLE 4 41 #define LIX_NAME_MAX 128 43 #define __VMALLOC_BASE_L4 0xffffc90000000000UL 44 #define __VMALLOC_BASE_L5 0xffa0000000000000UL 46 #define VMALLOC_SIZE_TB_L4 32UL 47 #define VMALLOC_SIZE_TB_L5 12800UL 49 #define __VMEMMAP_BASE_L4 0xffffea0000000000UL 50 #define __VMEMMAP_BASE_L5 0xffd4000000000000UL 52 # define VMALLOC_START __VMALLOC_BASE_L4 53 # define VMALLOC_SIZE_TB VMALLOC_SIZE_TB_L4 54 # define VMEMMAP_START __VMEMMAP_BASE_L4 56 #define VMALLOC_END (VMALLOC_START + (VMALLOC_SIZE_TB << 40) - 1) 58 #define PAGE_KERNEL_EXEC 0x163 60 #define KERNEL_VERSION(K, Patch, Sublevel) ((Sublevel) | ((Patch) << 16) | ((K) << 24)) 62 # define __unreachable __builtin_unreachable() 63 # define __likely(x) __builtin_expect(!!(x), 1) 64 # define __unlikely(x) __builtin_expect(!!(x), 0) 66 #define IS_ERR_VALUE(x) __unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO) 68 #define BIT(x) (1ULL << (x)) 69 #define UNUSED_PARAMETER(P) ((void)(P)) 70 #define PAGE_SIZE 0x1000 73 #define __fn_aligned __attribute__((aligned(1))) 74 #define __fn_save_all __attribute__((no_caller_saved_registers)) 76 #define __section(S) __attribute__((section (S))) 78 #define __default_fn_attr __fn_save_all __fn_aligned 79 #define __fn_naked __attribute__((naked)) 80 #define __fn_section(x) __attribute__((__section__(x))) 82 #define __aligned(x) __attribute__((aligned(x))) 89 #define __agent_data(x) __section("." x "_data") __aligned(1) 96 #define __agent_text(x) __default_fn_attr __section("." x "_text") 103 #define __agent_trampoline(x) __fn_naked __section("." x "_trampoline") 106 #define __agent_exit(x) \ 107 asm(".global __exit_" x); \ 108 asm("__exit_" x ":"); \ 112 #define GNUASM_DEFINE_STR(SYMBOL, STR) \ 113 asm volatile ("#define " SYMBOL " " #STR); 116 #define GNUASM_DEFINE_VAL(SYMBOL, VALUE) \ 117 asm volatile ("#define " SYMBOL " %0" :: "n"(VALUE)) 121 asm(".global __exit"); \ 126 #define __do_exit(address, do_exit_fn, vfree_fn) \ 127 asm volatile("mov rdi, %[_address];" \ 128 "push %[_do_exit_fn];" \ 129 "jmp %[_vfree_fn];" \ 130 : : [_address] "rm" (address), [_do_exit_fn] "rm"(do_exit_fn), [_vfree_fn] "rm"(vfree_fn) :) 134 #define __breakpoint_param_1(param) \ 135 register size_t __p1 asm("r8") = (size_t)(param); asm volatile("" :: "r" (__p1)); 138 #define __breakpoint_param_2(param) \ 139 register size_t __p2 asm("r9") = (size_t)(param); asm volatile("" :: "r" (__p2)); 142 #define __breakpoint_param_3(param) \ 143 register size_t __p3 asm("r10") = (size_t)(param); asm volatile("" :: "r" (__p3)); 146 #define __breakpoint_param_4(param) \ 147 register size_t __p4 asm("r11") = (size_t)(param); asm volatile("" :: "r" (__p4)); 150 #define __breakpoint_param_5(param) \ 151 register size_t __p5 asm("r12") = (size_t)(param); asm volatile("" :: "r" (__p5)); 154 #define __breakpoint_param_6(param) \ 155 register size_t __p6 asm("r13") = (size_t)(param); asm volatile("" :: "r" (__p6)); 158 #define __breakpoint_param_7(param) \ 159 register size_t __p7 asm("r14") = (size_t)(param); asm volatile("" :: "r" (__p7)); 162 #define __breakpoint_param_8(param) \ 163 register size_t __p8 asm("r15") = (size_t)(param); asm volatile("" :: "r" (__p8)); 172 asm volatile(
"int3" :
"+a"(
token) : );
177 #define breakpoint_1(token, p1) \ 179 __breakpoint_param_1(p1); \ 185 #define breakpoint_2(token, p1, p2) \ 187 __breakpoint_param_1(p1); \ 188 __breakpoint_param_2(p2); \ 193 #define breakpoint_3(token, p1, p2, p3) \ 195 __breakpoint_param_1(p1); \ 196 __breakpoint_param_2(p2); \ 197 __breakpoint_param_3(p3); \ 202 #define breakpoint_4(token, p1, p2, p3, p4) \ 204 __breakpoint_param_1(p1); \ 205 __breakpoint_param_2(p2); \ 206 __breakpoint_param_3(p3); \ 207 __breakpoint_param_4(p4); \ 212 #define breakpoint_5(token, p1, p2, p3, p4, p5) \ 214 __breakpoint_param_1(p1); \ 215 __breakpoint_param_2(p2); \ 216 __breakpoint_param_3(p3); \ 217 __breakpoint_param_4(p4); \ 218 __breakpoint_param_5(p5); \ 223 #define breakpoint_6(token, p1, p2, p3, p4, p5, p6) \ 225 __breakpoint_param_1(p1); \ 226 __breakpoint_param_2(p2); \ 227 __breakpoint_param_3(p3); \ 228 __breakpoint_param_4(p4); \ 229 __breakpoint_param_5(p5); \ 230 __breakpoint_param_6(p6); \ 234 #endif // !_COMMON_H_ struct data::@0 token
The tokens used to communicate with Intocore.
static __default_fn_attr unsigned long breakpoint(unsigned long token)
Generate INT3 instruction for hypercall.
#define __default_fn_attr