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" |