Rev 4127 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4127 | Rev 4195 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | 29 | ||
30 | #include <arch/boot/boot.h> |
30 | #include <arch/boot/boot.h> |
31 | #include <arch/boot/memmap.h> |
31 | #include <arch/boot/memmap.h> |
32 | #include <arch/mm/page.h> |
32 | #include <arch/mm/page.h> |
33 | #include <arch/pm.h> |
33 | #include <arch/pm.h> |
- | 34 | #include <arch/cpuid.h> |
|
34 | 35 | ||
35 | #define START_STACK (BOOT_OFFSET - BOOT_STACK_SIZE) |
36 | #define START_STACK (BOOT_OFFSET - BOOT_STACK_SIZE) |
36 | 37 | ||
37 | .section K_TEXT_START, "ax" |
38 | .section K_TEXT_START, "ax" |
38 | 39 | ||
Line 65... | Line 66... | ||
65 | multiboot_meeting_point: |
66 | multiboot_meeting_point: |
66 | 67 | ||
67 | movl %eax, grub_eax # save parameters from GRUB |
68 | movl %eax, grub_eax # save parameters from GRUB |
68 | movl %ebx, grub_ebx |
69 | movl %ebx, grub_ebx |
69 | 70 | ||
70 | xorl %eax, %eax |
71 | movl $(INTEL_CPUID_LEVEL), %eax |
71 | cpuid |
72 | cpuid |
72 | cmp $0x0, %eax # any function > 0? |
73 | cmp $0x0, %eax # any function > 0? |
73 | jbe pse_unsupported |
74 | jbe pse_unsupported |
- | 75 | ||
74 | movl $0x1, %eax # basic function code 1 |
76 | movl $(INTEL_CPUID_STANDARD), %eax |
75 | cpuid |
77 | cpuid |
76 | bt $3, %edx # test if PSE is supported |
78 | bt $(INTEL_PSE), %edx |
77 | jc pse_supported |
79 | jc pse_supported |
78 | 80 | ||
79 | pse_unsupported: |
81 | pse_unsupported: |
80 | movl $pse_msg, %esi |
82 | movl $pse_msg, %esi |
81 | jmp error_halt |
83 | jmp error_halt |
82 | 84 | ||
83 | pse_supported: |
85 | pse_supported: |
- | 86 | ||
- | 87 | bt $(INTEL_SEP), %edx |
|
- | 88 | jc sep_supported |
|
- | 89 | ||
- | 90 | movl $sep_msg, %esi |
|
- | 91 | jmp error_halt |
|
- | 92 | ||
- | 93 | sep_supported: |
|
84 | 94 | ||
85 | #include "vesa_prot.inc" |
95 | #include "vesa_prot.inc" |
86 | 96 | ||
87 | # map kernel and turn paging on |
97 | # map kernel and turn paging on |
88 | call map_kernel |
98 | call map_kernel |
Line 211... | Line 221... | ||
211 | grub_ebx: |
221 | grub_ebx: |
212 | .long 0 |
222 | .long 0 |
213 | 223 | ||
214 | pse_msg: |
224 | pse_msg: |
215 | .asciz "Page Size Extension not supported. System halted." |
225 | .asciz "Page Size Extension not supported. System halted." |
- | 226 | ||
- | 227 | sep_msg: |
|
- | 228 | .asciz "SYSENTER/SYSEXIT not supported. System halted." |