1 /* SPDX-License-Identifier: GPL-2.0 */ 1 2 #ifndef _ASM_X86_VM86_H 3 #define _ASM_X86_VM86_H 4 5 #include <asm/ptrace.h> 6 #include <uapi/asm/vm86.h> 7 8 /* 9 * This is the (kernel) stack-layout when we h 10 * mode - the main change is that the old segm 11 * useful any more and are forced to be zero b 12 * hardware when a trap occurs), and the real 13 * at the end of the structure. Look at ptrace 14 * setup. For user space layout see 'struct vm 15 */ 16 17 struct kernel_vm86_regs { 18 /* 19 * normal regs, with special meaning for the s 20 */ 21 struct pt_regs pt; 22 /* 23 * these are specific to v86 mode: 24 */ 25 unsigned short es, __esh; 26 unsigned short ds, __dsh; 27 unsigned short fs, __fsh; 28 unsigned short gs, __gsh; 29 }; 30 31 struct vm86 { 32 struct vm86plus_struct __user *user_vm 33 struct pt_regs regs32; 34 unsigned long veflags; 35 unsigned long veflags_mask; 36 unsigned long saved_sp0; 37 38 unsigned long flags; 39 unsigned long cpu_type; 40 struct revectored_struct int_revectore 41 struct revectored_struct int21_revecto 42 struct vm86plus_info_struct vm86plus; 43 }; 44 45 #ifdef CONFIG_VM86 46 47 void handle_vm86_fault(struct kernel_vm86_regs 48 int handle_vm86_trap(struct kernel_vm86_regs * 49 void save_v86_state(struct kernel_vm86_regs *, 50 51 struct task_struct; 52 53 #define free_vm86(t) do { 54 struct thread_struct *__t = (t); 55 if (__t->vm86 != NULL) { 56 kfree(__t->vm86); 57 __t->vm86 = NULL; 58 } 59 } while (0) 60 61 /* 62 * Support for VM86 programs to request interr 63 * real mode hardware drivers: 64 */ 65 #define FIRST_VM86_IRQ 3 66 #define LAST_VM86_IRQ 15 67 68 static inline int invalid_vm86_irq(int irq) 69 { 70 return irq < FIRST_VM86_IRQ || irq > L 71 } 72 73 void release_vm86_irqs(struct task_struct *); 74 75 #else 76 77 #define handle_vm86_fault(a, b) 78 #define release_vm86_irqs(a) 79 80 static inline int handle_vm86_trap(struct kern 81 { 82 return 0; 83 } 84 85 static inline void save_v86_state(struct kerne 86 87 #define free_vm86(task) do { (void)(task); } w 88 89 #endif /* CONFIG_VM86 */ 90 91 #endif /* _ASM_X86_VM86_H */ 92
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.