comparison cos/kernel/goto64.asm @ 23:5dd47d6eebac

Added ubersimple malloc algorithm
author windel
date Thu, 01 Dec 2011 21:42:59 +0100
parents b1fed2171e1a
children d8627924d40d
comparison
equal deleted inserted replaced
22:69bc6d477b38 23:5dd47d6eebac
86 86
87 gdt64pointer: ; GDT pointer 87 gdt64pointer: ; GDT pointer
88 dw gdt64end - gdt64 - 1 ; Limit (size) 88 dw gdt64end - gdt64 - 1 ; Limit (size)
89 dq gdt64 ; Base 89 dq gdt64 ; Base
90 90
91 hltmessage:
92 db "Long mode not supported", 0x0
93
91 ; Start of loader code: 94 ; Start of loader code:
92 loader: 95 loader:
93 96
94 ; Check that the CPU supports long mode: 97 ; Check that the CPU supports long mode:
95 mov eax, 80000000h 98 mov eax, 80000000h
101 bt edx, 29 104 bt edx, 29
102 jnc no_long_mode 105 jnc no_long_mode
103 jmp cpu_has_long_mode 106 jmp cpu_has_long_mode
104 107
105 no_long_mode: 108 no_long_mode:
109 ; Print long mode not supported
110 mov edi, 0xb8000
111 mov esi, hltmessage
112 xor eax,eax
113 loop1:
114 lodsb
115 mov dl, al
116 stosb
117 mov al, 0x1f
118 stosb
119 cmp dl, 0
120 jne loop1
121
106 hlt 122 hlt
107 123
108 cpu_has_long_mode: 124 cpu_has_long_mode:
109 125
110 lgdt [gdt32pointer] ; Reload a valid temporary 32 bits GDT, overload GRUB gdt. 126 lgdt [gdt32pointer] ; Reload a valid temporary 32 bits GDT, overload GRUB gdt.