FILE
faultinfo_64.h
File preview with syntax highlighting.
linux-6.19.14/arch/x86/um/shared/sysdep/faultinfo_64.h
1/* 2 * Copyright (C) 2004 Fujitsu Siemens Computers GmbH 3 * Author: Bodo Stroesser <bstroesser@fujitsu-siemens.com> 4 * Licensed under the GPL 5 */ 6 7#ifndef __FAULTINFO_X86_64_H 8#define __FAULTINFO_X86_64_H 9 10/* this structure contains the full arch-specific faultinfo 11 * from the traps. 12 * On i386, ptrace_faultinfo unfortunately doesn't provide 13 * all the info, since trap_no is missing. 14 * All common elements are defined at the same position in 15 * both structures, thus making it easy to copy the 16 * contents without knowledge about the structure elements. 17 */ 18struct faultinfo { 19 int error_code; /* in ptrace_faultinfo misleadingly called is_write */ 20 unsigned long cr2; /* in ptrace_faultinfo called addr */ 21 int trap_no; /* missing in ptrace_faultinfo */ 22}; 23 24#define FAULT_WRITE(fi) ((fi).error_code & 2) 25#define FAULT_ADDRESS(fi) ((fi).cr2) 26 27/* This is Page Fault */ 28#define SEGV_IS_FIXABLE(fi) ((fi)->trap_no == 14) 29 30#define PTRACE_FULL_FAULTINFO 1 31 32#define ___backtrack_faulted(_faulted) \ 33 asm volatile ( \ 34 "movq $__get_kernel_nofault_faulted_%=,%1\n" \ 35 "mov $0, %0\n" \ 36 "jmp _end_%=\n" \ 37 "__get_kernel_nofault_faulted_%=:\n" \ 38 "mov $1, %0;" \ 39 "_end_%=:" \ 40 : "=r" (_faulted), \ 41 "=m" (current->thread.segv_continue) :: \ 42 ) 43 44#endif
~/
Read-only file preview.