Lines Matching +full:- +full:v
6 #include "apic-defs.h"
8 /* Boot-related data structures */
14 .limit = sizeof(boot_idt) - 1,
22 {0xffff, 0, 0, .type_limit_flags = 0xcf9b}, /* flat 32-bit code segment */
23 {0xffff, 0, 0, .type_limit_flags = 0xcf93}, /* flat 32-bit data segment */
24 {0xffff, 0, 0, .type_limit_flags = 0xcf1b}, /* flat 32-bit code segment, not present */
26 {0xffff, 0, 0, .type_limit_flags = 0x8f9b}, /* 16-bit code segment */
27 {0xffff, 0, 0, .type_limit_flags = 0x8f93}, /* 16-bit data segment */
28 {0xffff, 0, 0, .type_limit_flags = 0xcffb}, /* 32-bit code segment (user) */
29 {0xffff, 0, 0, .type_limit_flags = 0xcff3}, /* 32-bit data segment (user) */
36 {0xffff, 0, 0, .type_limit_flags = 0xaf9b}, /* 0x08 64-bit code segment */
37 {0xffff, 0, 0, .type_limit_flags = 0xcf93}, /* 0x10 32/64-bit data segment */
38 {0xffff, 0, 0, .type_limit_flags = 0xaf1b}, /* 0x18 64-bit code segment, not present */
39 {0xffff, 0, 0, .type_limit_flags = 0xcf9b}, /* 0x20 32-bit code segment */
40 {0xffff, 0, 0, .type_limit_flags = 0x8f9b}, /* 0x28 16-bit code segment */
41 {0xffff, 0, 0, .type_limit_flags = 0x8f93}, /* 0x30 16-bit data segment */
42 {0xffff, 0, 0, .type_limit_flags = 0xcffb}, /* 0x38 32-bit code segment (user) */
43 {0xffff, 0, 0, .type_limit_flags = 0xcff3}, /* 0x40 32/64-bit data segment (user) */
44 {0xffff, 0, 0, .type_limit_flags = 0xaffb}, /* 0x48 64-bit code segment (user) */
51 .limit = sizeof(gdt) - 1,
72 e->offset0 = (unsigned long)addr; in set_desc_entry()
73 e->selector = sel; in set_desc_entry()
74 e->ist = 0; in set_desc_entry()
75 e->type = type; in set_desc_entry()
76 e->dpl = dpl; in set_desc_entry()
77 e->p = 1; in set_desc_entry()
78 e->offset1 = (unsigned long)addr >> 16; in set_desc_entry()
81 e->offset2 = (unsigned long)addr >> 32; in set_desc_entry()
94 e->dpl = dpl; in set_idt_dpl()
100 e->selector = sel; in set_idt_sel()
113 #define VEC(v) case v##_VECTOR: return "#" #v in exception_mnemonic() argument
145 cpu ? "cpu " : "", regs->vector, in unhandled_exception()
146 exception_mnemonic(regs->vector), regs->rip); in unhandled_exception()
147 if (regs->vector == 14) in unhandled_exception()
148 printf("PF at %#lx addr %#lx\n", regs->rip, read_cr2()); in unhandled_exception()
162 regs->error_code, regs->rflags, regs->cs, in unhandled_exception()
163 regs->rax, regs->rcx, regs->rdx, regs->rbx, in unhandled_exception()
164 regs->rbp, regs->rsi, regs->rdi, in unhandled_exception()
166 regs->r8, regs->r9, regs->r10, regs->r11, in unhandled_exception()
167 regs->r12, regs->r13, regs->r14, regs->r15, in unhandled_exception()
174 dump_frame_stack((void*) regs->rip, (void*) regs->rbp); in unhandled_exception()
182 this_cpu_write_exception_vector(regs->vector); in check_exception_table()
183 this_cpu_write_exception_rflags_rf((regs->rflags >> 16) & 1); in check_exception_table()
184 this_cpu_write_exception_error_code(regs->error_code); in check_exception_table()
187 if (ex->rip == regs->rip) { in check_exception_table()
188 regs->rip = ex->handler; in check_exception_table()
197 handler handle_exception(u8 v, handler fn) in handle_exception() argument
201 old = exception_handlers[v]; in handle_exception()
202 if (v < 32) in handle_exception()
203 exception_handlers[v] = fn; in handle_exception()
212 if (regs->vector < 32 && exception_handlers[regs->vector]) { in do_handle_exception()
213 exception_handlers[regs->vector](regs); in do_handle_exception()
306 * Use the non-FEP ASM_TRY() as KVM will inject a #UD on the prefix in __is_fep_available()
365 entry->base1 = (base & 0xFFFF); in set_gdt_entry_base()
366 entry->base2 = (base >> 16) & 0xFF; in set_gdt_entry_base()
367 entry->base3 = (base >> 24) & 0xFF; in set_gdt_entry_base()
370 if (!entry->s) { in set_gdt_entry_base()
372 entry16->zero = 0; in set_gdt_entry_base()
373 entry16->base4 = base >> 32; in set_gdt_entry_base()
383 entry->limit1 = (limit & 0xFFFF); in set_gdt_entry()
384 entry->type_limit_flags = ((limit & 0xF0000) >> 8) | ((flags & 0xF0) << 8) | type; in set_gdt_entry()
392 entry->type_limit_flags &= ~0xFF; in clear_tss_busy()
393 entry->type_limit_flags |= 0x89; in clear_tss_busy()
414 e->selector = sel; in set_idt_task_gate()
415 e->ist = 0; in set_idt_task_gate()
416 e->type = 5; in set_idt_task_gate()
417 e->dpl = 0; in set_idt_task_gate()
418 e->p = 1; in set_idt_task_gate()
422 * 0 - main task
423 * 1 - interrupt task
441 set_gdt_entry(TSS_INTR, (u32)&tss_intr, desc_size - 1, 0x89, 0); in setup_tss32()
495 regs->rip = (unsigned long)&exception_handler_longjmp; in exception_handler()
496 regs->cs = read_cs(); in exception_handler()
542 base = entry->base1 | ((u32)entry->base2 << 16) | ((u32)entry->base3 << 24); in get_gdt_entry_base()
544 if (!entry->s) { in get_gdt_entry_base()
545 base |= (u64)((struct system_desc64 *)entry)->base4 << 32; in get_gdt_entry_base()
554 limit = entry->limit1 | ((u32)entry->limit2 << 16); in get_gdt_entry_limit()
555 if (entry->g) { in get_gdt_entry_limit()