Rev 2221 | Rev 2302 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2221 | Rev 2222 | ||
|---|---|---|---|
| Line 61... | Line 61... | ||
| 61 | movw %cx, %ss |
61 | movw %cx, %ss |
| 62 | 62 | ||
| 63 | jmpl $selector(KTEXT_DES), $multiboot_meeting_point |
63 | jmpl $selector(KTEXT_DES), $multiboot_meeting_point |
| 64 | multiboot_meeting_point: |
64 | multiboot_meeting_point: |
| 65 | 65 | ||
| 66 | pushl %ebx # save parameters from GRUB |
66 | movl %eax, grub_eax # save parameters from GRUB |
| 67 | pushl %eax |
67 | movl %ebx, grub_ebx |
| 68 | 68 | ||
| 69 | xorl %eax, %eax |
69 | xorl %eax, %eax |
| 70 | cpuid |
70 | cpuid |
| 71 | cmp $0x0, %eax # any function > 0? |
71 | cmp $0x0, %eax # any function > 0? |
| 72 | jbe pse_unsupported |
72 | jbe pse_unsupported |
| Line 102... | Line 102... | ||
| 102 | mov %bx, KA2PA(vesa_bpp) |
102 | mov %bx, KA2PA(vesa_bpp) |
| 103 | #endif |
103 | #endif |
| 104 | 104 | ||
| 105 | call map_kernel # map kernel and turn paging on |
105 | call map_kernel # map kernel and turn paging on |
| 106 | 106 | ||
| 107 | popl %eax |
107 | movl grub_eax, %eax |
| 108 | popl %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 size or map available |
| 113 | movl %ecx, e801memorysize |
113 | movl %ecx, e801memorysize |
| Line 479... | Line 479... | ||
| 479 | jz 8b # Force relative jump |
479 | jz 8b # Force relative jump |
| 480 | 480 | ||
| 481 | 481 | ||
| 482 | .code32 |
482 | .code32 |
| 483 | vesa_init_protect: |
483 | vesa_init_protect: |
| 484 | popl %esp |
- | |
| 485 | - | ||
| 486 | movw $selector(KDATA_DES), %cx |
484 | movw $selector(KDATA_DES), %cx |
| 487 | movw %cx, %es |
485 | movw %cx, %es |
| 488 | movw %cx, %fs |
486 | movw %cx, %fs |
| 489 | movw %cx, %gs |
487 | movw %cx, %gs |
| 490 | movw %cx, %ds # kernel data + stack |
488 | movw %cx, %ds # kernel data + stack |
| 491 | movw %cx, %ss |
489 | movw %cx, %ss |
| 492 | 490 | ||
| - | 491 | movl $START_STACK, %esp # initialize stack pointer |
|
| - | 492 | ||
| 493 | jmpl $selector(KTEXT_DES), $vesa_meeting_point |
493 | jmpl $selector(KTEXT_DES), $vesa_meeting_point |
| 494 | 494 | ||
| 495 | .align 4 |
495 | .align 4 |
| 496 | e_vesa_init: |
496 | e_vesa_init: |
| 497 | #endif |
497 | #endif |
| Line 500... | Line 500... | ||
| 500 | 500 | ||
| 501 | .align 4096 |
501 | .align 4096 |
| 502 | page_directory: |
502 | page_directory: |
| 503 | .space 4096, 0 |
503 | .space 4096, 0 |
| 504 | 504 | ||
| - | 505 | grub_eax: |
|
| - | 506 | .long 0 |
|
| - | 507 | ||
| - | 508 | grub_ebx: |
|
| - | 509 | .long 0 |
|
| - | 510 | ||
| 505 | pse_msg: |
511 | pse_msg: |
| 506 | .ascii "Page Size Extension not supported. System halted.\0" |
512 | .ascii "Page Size Extension not supported. System halted.\0" |