Rev 2713 | Rev 2784 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2713 | Rev 2725 | ||
|---|---|---|---|
| Line 180... | Line 180... | ||
| 180 | 180 | ||
| 181 | cmpl $MULTIBOOT_LOADER_MAGIC, %eax # compare GRUB signature |
181 | cmpl $MULTIBOOT_LOADER_MAGIC, %eax # compare GRUB signature |
| 182 | je valid_boot |
182 | je valid_boot |
| 183 | 183 | ||
| 184 | xorl %ecx, %ecx # no memory size or map available |
184 | xorl %ecx, %ecx # no memory size or map available |
| 185 | movl %ecx, e801memorysize |
- | |
| 186 | movl %ecx, e820counter |
185 | movl %ecx, e820counter |
| 187 | 186 | ||
| 188 | jmp invalid_boot |
187 | jmp invalid_boot |
| 189 | 188 | ||
| 190 | valid_boot: |
189 | valid_boot: |
| 191 | 190 | ||
| 192 | movl (%ebx), %eax # ebx = physical address of struct multiboot_info |
191 | movl (%ebx), %eax # ebx = physical address of struct multiboot_info |
| 193 | 192 | ||
| 194 | bt $0, %eax # mbi->flags[0] (mem_lower, mem_upper valid) |
- | |
| 195 | jc mem_valid |
- | |
| 196 | - | ||
| 197 | xorl %ecx, %ecx |
- | |
| 198 | jmp mem_invalid |
- | |
| 199 | - | ||
| 200 | mem_valid: |
- | |
| 201 | movl 4(%ebx), %ecx # mbi->mem_lower |
- | |
| 202 | addl 8(%ebx), %ecx # mbi->mem_upper |
- | |
| 203 | - | ||
| 204 | mem_invalid: |
- | |
| 205 | movl %ecx, e801memorysize |
- | |
| 206 | - | ||
| 207 | bt $3, %eax # mbi->flags[3] (mods_count, mods_addr valid) |
193 | bt $3, %eax # mbi->flags[3] (mods_count, mods_addr valid) |
| 208 | jc mods_valid |
194 | jc mods_valid |
| 209 | 195 | ||
| 210 | xorq %rcx, %rcx |
196 | xorq %rcx, %rcx |
| 211 | movq %rcx, init |
197 | movq %rcx, init |