Mercurial > lcfOS
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. |