Rev 2302 | Rev 2784 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2302 | Rev 2725 | ||
|---|---|---|---|
| Line 107... | Line 107... | ||
| 107 | movl grub_eax, %eax |
107 | movl grub_eax, %eax |
| 108 | movl grub_ebx, %ebx |
108 | movl grub_ebx, %ebx |
| 109 | cmpl $MULTIBOOT_LOADER_MAGIC, %eax # compare GRUB signature |
109 | cmpl $MULTIBOOT_LOADER_MAGIC, %eax # compare GRUB signature |
| 110 | je valid_boot |
110 | je valid_boot |
| 111 | 111 | ||
| 112 | xorl %ecx, %ecx # no memory size or map available |
112 | xorl %ecx, %ecx # no memory map available |
| 113 | movl %ecx, e801memorysize |
- | |
| 114 | movl %ecx, e820counter |
113 | movl %ecx, e820counter |
| 115 | 114 | ||
| 116 | jmp invalid_boot |
115 | jmp invalid_boot |
| 117 | 116 | ||
| 118 | valid_boot: |
117 | valid_boot: |
| 119 | 118 | ||
| 120 | movl (%ebx), %eax # ebx = physical address of struct multiboot_info |
119 | movl (%ebx), %eax # ebx = physical address of struct multiboot_info |
| 121 | 120 | ||
| 122 | bt $0, %eax # mbi->flags[0] (mem_lower, mem_upper valid) |
- | |
| 123 | jc mem_valid |
- | |
| 124 | - | ||
| 125 | xorl %ecx, %ecx |
- | |
| 126 | jmp mem_invalid |
- | |
| 127 | - | ||
| 128 | mem_valid: |
- | |
| 129 | movl 4(%ebx), %ecx # mbi->mem_lower |
- | |
| 130 | addl 8(%ebx), %ecx # mbi->mem_upper |
- | |
| 131 | - | ||
| 132 | mem_invalid: |
- | |
| 133 | movl %ecx, e801memorysize |
- | |
| 134 | - | ||
| 135 | bt $3, %eax # mbi->flags[3] (mods_count, mods_addr valid) |
121 | bt $3, %eax # mbi->flags[3] (mods_count, mods_addr valid) |
| 136 | jc mods_valid |
122 | jc mods_valid |
| 137 | 123 | ||
| 138 | xorl %ecx, %ecx |
124 | xorl %ecx, %ecx |
| 139 | movl %ecx, init |
125 | movl %ecx, init |