Changeset 1d3d2cf in mainline for kernel/arch/ia32
- Timestamp:
- 2010-08-11T14:18:34Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- be3f94c
- Parents:
- 482dde7
- Location:
- kernel/arch/ia32
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/include/pm.h
r482dde7 r1d3d2cf 58 58 #endif /* CONFIG_FB */ 59 59 60 #define gdtselector(des) ((des) << 3)60 #define GDT_SELECTOR(des) ((des) << 3) 61 61 62 62 #define PL_KERNEL 0 … … 153 153 154 154 extern ptr_16_32_t gdtr; 155 extern ptr_16_32_t bootstrap_gdtr;156 155 extern ptr_16_32_t protected_ap_gdtr; 157 156 extern tss_t *tss_p; -
kernel/arch/ia32/src/asm.S
r482dde7 r1d3d2cf 225 225 * Switch to kernel selectors. 226 226 */ 227 movw $( gdtselector(KDATA_DES)), %ax227 movw $(GDT_SELECTOR(KDATA_DES)), %ax 228 228 movw %ax, %ds 229 229 movw %ax, %es … … 304 304 * Switch to kernel selectors. 305 305 */ 306 movl $( gdtselector(KDATA_DES)), %eax306 movl $(GDT_SELECTOR(KDATA_DES)), %eax 307 307 movl %eax, %ds 308 308 movl %eax, %es … … 407 407 * Switch to kernel selectors. 408 408 */ 409 movl $( gdtselector(KDATA_DES)), %eax409 movl $(GDT_SELECTOR(KDATA_DES)), %eax 410 410 movl %eax, %ds 411 411 movl %eax, %es … … 416 416 */ 417 417 xorl %eax, %eax 418 cmpl $( gdtselector(KTEXT_DES)), ISTATE_OFFSET_CS(%esp)418 cmpl $(GDT_SELECTOR(KTEXT_DES)), ISTATE_OFFSET_CS(%esp) 419 419 cmovnzl %eax, %ebp 420 420 -
kernel/arch/ia32/src/boot/boot.S
r482dde7 r1d3d2cf 78 78 79 79 /* Initialize Global Descriptor Table register */ 80 lgdtl KA2PA(bootstrap_gdtr)80 lgdtl bootstrap_gdtr 81 81 82 82 /* Kernel data + stack */ 83 movw $ gdtselector(KDATA_DES), %cx83 movw $GDT_SELECTOR(KDATA_DES), %cx 84 84 movw %cx, %es 85 85 movw %cx, %fs … … 88 88 movw %cx, %ss 89 89 90 jmpl $ gdtselector(KTEXT_DES), $multiboot_meeting_point90 jmpl $GDT_SELECTOR(KTEXT_DES), $multiboot_meeting_point 91 91 multiboot_meeting_point: 92 92 … … 514 514 page_directory: 515 515 .space 4096, 0 516 517 bootstrap_gdtr: 518 .word GDT_SELECTOR(GDT_ITEMS) 519 .long KA2PA(gdt) 516 520 517 521 grub_eax: -
kernel/arch/ia32/src/boot/vesa_real.inc
r482dde7 r1d3d2cf 30 30 .code32 31 31 vesa_init: 32 jmp $ gdtselector(VESA_INIT_DES), $vesa_init_real - vesa_init32 jmp $GDT_SELECTOR(VESA_INIT_DES), $vesa_init_real - vesa_init 33 33 34 34 .code16 … … 335 335 vesa_leave_real2: 336 336 337 ljmpl $ gdtselector(KTEXT32_DES), $(vesa_init_protected - vesa_init + VESA_INIT_SEGMENT << 4)337 ljmpl $GDT_SELECTOR(KTEXT32_DES), $(vesa_init_protected - vesa_init + VESA_INIT_SEGMENT << 4) 338 338 339 339 no_mode: -
kernel/arch/ia32/src/boot/vesa_ret.inc
r482dde7 r1d3d2cf 7 7 8 8 /* Kernel data + stack */ 9 movw $ gdtselector(KDATA_DES), %cx9 movw $GDT_SELECTOR(KDATA_DES), %cx 10 10 movw %cx, %es 11 11 movw %cx, %fs … … 14 14 movw %cx, %ss 15 15 16 jmpl $ gdtselector(KTEXT_DES), $vesa_meeting_point16 jmpl $GDT_SELECTOR(KTEXT_DES), $vesa_meeting_point -
kernel/arch/ia32/src/ddi/ddi.c
r482dde7 r1d3d2cf 153 153 */ 154 154 gdt_p[TSS_DES].access = AR_PRESENT | AR_TSS | DPL_KERNEL; 155 tr_load( gdtselector(TSS_DES));155 tr_load(GDT_SELECTOR(TSS_DES)); 156 156 157 157 /* -
kernel/arch/ia32/src/pm.c
r482dde7 r1d3d2cf 86 86 87 87 /* gdtr is changed by kmp before next CPU is initialized */ 88 ptr_16_32_t bootstrap_gdtr = { .limit = sizeof(gdt), .base = KA2PA((uintptr_t) gdt) };89 88 ptr_16_32_t gdtr = { .limit = sizeof(gdt), .base = (uintptr_t) gdt }; 90 89 … … 128 127 129 128 d->unused = 0; 130 d->selector = gdtselector(KTEXT_DES);129 d->selector = GDT_SELECTOR(KTEXT_DES); 131 130 132 131 if (i == VECTOR_SYSCALL) { … … 283 282 * to its own TSS. We just need to load the TR register. 284 283 */ 285 tr_load( gdtselector(TSS_DES));284 tr_load(GDT_SELECTOR(TSS_DES)); 286 285 287 286 clean_IOPL_NT_flags(); /* Disable I/O on nonprivileged levels and clear NT flag. */ -
kernel/arch/ia32/src/proc/scheduler.c
r482dde7 r1d3d2cf 67 67 /* Set kernel stack for CPL3 -> CPL0 switch via interrupt */ 68 68 CPU->arch.tss->esp0 = kstk; 69 CPU->arch.tss->ss0 = gdtselector(KDATA_DES);69 CPU->arch.tss->ss0 = GDT_SELECTOR(KDATA_DES); 70 70 71 71 /* Set up TLS in GS register */ -
kernel/arch/ia32/src/syscall.c
r482dde7 r1d3d2cf 45 45 46 46 /* set kernel mode CS selector */ 47 write_msr(IA32_MSR_SYSENTER_CS, gdtselector(KTEXT_DES));47 write_msr(IA32_MSR_SYSENTER_CS, GDT_SELECTOR(KTEXT_DES)); 48 48 /* set kernel mode entry point */ 49 49 write_msr(IA32_MSR_SYSENTER_EIP, (uint32_t) sysenter_handler); -
kernel/arch/ia32/src/userspace.c
r482dde7 r1d3d2cf 75 75 "iret\n" 76 76 : 77 : [udata_des] "i" ( gdtselector(UDATA_DES) | PL_USER),77 : [udata_des] "i" (GDT_SELECTOR(UDATA_DES) | PL_USER), 78 78 [stack_size] "r" ((uint8_t *) kernel_uarg->uspace_stack + THREAD_STACK_SIZE), 79 79 [ipl] "r" (ipl), 80 [utext_des] "i" ( gdtselector(UTEXT_DES) | PL_USER),80 [utext_des] "i" (GDT_SELECTOR(UTEXT_DES) | PL_USER), 81 81 [entry] "r" (kernel_uarg->uspace_entry), 82 82 [uarg] "r" (kernel_uarg->uspace_uarg), 83 [tls_des] "r" ( gdtselector(TLS_DES))83 [tls_des] "r" (GDT_SELECTOR(TLS_DES)) 84 84 : "eax"); 85 85
Note:
See TracChangeset
for help on using the changeset viewer.