diff --git a/i386/loader/src-asm/memory/gdt.asm b/i386/loader/src-asm/memory/gdt.asm index a0b5c99..220c686 100755 --- a/i386/loader/src-asm/memory/gdt.asm +++ b/i386/loader/src-asm/memory/gdt.asm @@ -67,7 +67,7 @@ make_regular_data_segment_in_gdt: .write_base_address: mov [eax + 2], bx - shr bx, 16 + shr ebx, 16 mov [eax + 4], bl mov [eax + 7], bh @@ -282,7 +282,7 @@ make_code_segment_in_gdt: .write_base_address: mov [eax + 2], bx - shr bx, 16 + shr ebx, 16 mov [eax + 4], bl mov [eax + 7], bh @@ -389,6 +389,9 @@ load_flat_gdt: or ebx, 1 mov cr0, ebx + xor bx, bx + mov ds, bx + jmp dword 0x08:.epilog bits 32 @@ -407,7 +410,7 @@ bits 32 align 16 .gdtr: .gdtr.length: - dw 23 + dw 15 .gdtr.pointer: dd GDT_MEMORY_AREA