diff options
Diffstat (limited to 'cpu/i386/start16.S')
-rw-r--r-- | cpu/i386/start16.S | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/cpu/i386/start16.S b/cpu/i386/start16.S index 239f2ff..1ebb6bc 100644 --- a/cpu/i386/start16.S +++ b/cpu/i386/start16.S @@ -39,74 +39,74 @@ start16: board_init16_ret: /* Turn of cache (this might require a 486-class CPU) */ - movl %cr0, %eax - orl $0x60000000,%eax - movl %eax, %cr0 + movl %cr0, %eax + orl $0x60000000,%eax + movl %eax, %cr0 wbinvd /* load the descriptor tables */ o32 cs lidt idt_ptr -o32 cs lgdt gdt_ptr +o32 cs lgdt gdt_ptr /* Now, we enter protected mode */ - movl %cr0, %eax - orl $1,%eax - movl %eax, %cr0 + movl %cr0, %eax + orl $1,%eax + movl %eax, %cr0 /* Flush the prefetch queue */ - jmp ff + jmp ff ff: /* Finally jump to the 32bit initialization code */ movw $code32start, %ax - movw %ax,%bp + movw %ax,%bp o32 cs ljmp *(%bp) /* 48-bit far pointer */ code32start: - .long _start /* offset */ - .word 0x10 /* segment */ + .long _start /* offset */ + .word 0x10 /* segment */ idt_ptr: - .word 0 /* limit */ - .long 0 /* base */ + .word 0 /* limit */ + .long 0 /* base */ gdt_ptr: - .word 0x30 /* limit (48 bytes = 6 GDT entries) */ - .long BOOT_SEG + gdt /* base */ + .word 0x30 /* limit (48 bytes = 6 GDT entries) */ + .long BOOT_SEG + gdt /* base */ /* The GDT table ... * - * Selector Type - * 0x00 NULL - * 0x08 Unused + * Selector Type + * 0x00 NULL + * 0x08 Unused * 0x10 32bit code * 0x18 32bit data/stack * 0x20 16bit code - * 0x28 16bit data/stack + * 0x28 16bit data/stack */ gdt: - .word 0, 0, 0, 0 /* NULL */ - .word 0, 0, 0, 0 /* unused */ - - .word 0xFFFF /* 4Gb - (0x100000*0x1000 = 4Gb) */ - .word 0 /* base address = 0 */ - .word 0x9B00 /* code read/exec */ - .word 0x00CF /* granularity = 4096, 386 (+5th nibble of limit) */ - - .word 0xFFFF /* 4Gb - (0x100000*0x1000 = 4Gb) */ - .word 0x0 /* base address = 0 */ - .word 0x9300 /* data read/write */ - .word 0x00CF /* granularity = 4096, 386 (+5th nibble of limit) */ - - .word 0xFFFF /* 64kb */ - .word 0 /* base address = 0 */ - .word 0x9b00 /* data read/write */ - .word 0x0010 /* granularity = 1 (+5th nibble of limit) */ - - .word 0xFFFF /* 64kb */ - .word 0 /* base address = 0 */ - .word 0x9300 /* data read/write */ - .word 0x0010 /* granularity = 1 (+5th nibble of limit) */ + .word 0, 0, 0, 0 /* NULL */ + .word 0, 0, 0, 0 /* unused */ + + .word 0xFFFF /* 4Gb - (0x100000*0x1000 = 4Gb) */ + .word 0 /* base address = 0 */ + .word 0x9B00 /* code read/exec */ + .word 0x00CF /* granularity = 4096, 386 (+5th nibble of limit) */ + + .word 0xFFFF /* 4Gb - (0x100000*0x1000 = 4Gb) */ + .word 0x0 /* base address = 0 */ + .word 0x9300 /* data read/write */ + .word 0x00CF /* granularity = 4096, 386 (+5th nibble of limit) */ + + .word 0xFFFF /* 64kb */ + .word 0 /* base address = 0 */ + .word 0x9b00 /* data read/write */ + .word 0x0010 /* granularity = 1 (+5th nibble of limit) */ + + .word 0xFFFF /* 64kb */ + .word 0 /* base address = 0 */ + .word 0x9300 /* data read/write */ + .word 0x0010 /* granularity = 1 (+5th nibble of limit) */ |