Lines Matching +full:32 +full:- +full:bit
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()
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()
195 static handler exception_handlers[32];
202 if (v < 32) 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()
279 static void *idt_handlers[32] = {
310 for (i = 0; i < 32; i++) { in setup_idt()
346 entry->base1 = (base & 0xFFFF); in set_gdt_entry_base()
347 entry->base2 = (base >> 16) & 0xFF; in set_gdt_entry_base()
348 entry->base3 = (base >> 24) & 0xFF; in set_gdt_entry_base()
351 if (!entry->s) { in set_gdt_entry_base()
353 entry16->zero = 0; in set_gdt_entry_base()
354 entry16->base4 = base >> 32; in set_gdt_entry_base()
364 entry->limit1 = (limit & 0xFFFF); in set_gdt_entry()
365 entry->type_limit_flags = ((limit & 0xF0000) >> 8) | ((flags & 0xF0) << 8) | type; in set_gdt_entry()
373 entry->type_limit_flags &= ~0xFF; in clear_tss_busy()
374 entry->type_limit_flags |= 0x89; in clear_tss_busy()
395 e->selector = sel; in set_idt_task_gate()
396 e->ist = 0; in set_idt_task_gate()
397 e->type = 5; in set_idt_task_gate()
398 e->dpl = 0; in set_idt_task_gate()
399 e->p = 1; in set_idt_task_gate()
403 * 0 - main task
404 * 1 - interrupt task
422 set_gdt_entry(TSS_INTR, (u32)&tss_intr, desc_size - 1, 0x89, 0); in setup_tss32()
476 regs->rip = (unsigned long)&exception_handler_longjmp; in exception_handler()
477 regs->cs = read_cs(); in exception_handler()
523 base = entry->base1 | ((u32)entry->base2 << 16) | ((u32)entry->base3 << 24); in get_gdt_entry_base()
525 if (!entry->s) { in get_gdt_entry_base()
526 base |= (u64)((struct system_desc64 *)entry)->base4 << 32; in get_gdt_entry_base()
535 limit = entry->limit1 | ((u32)entry->limit2 << 16); in get_gdt_entry_limit()
536 if (entry->g) { in get_gdt_entry_limit()