Rev 8284 | Rev 9227 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8284 | Rev 8656 | ||
---|---|---|---|
Line 21... | Line 21... | ||
21 | MEMORY_MAP_SIZE = 0x10000 |
21 | MEMORY_MAP_SIZE = 0x10000 |
22 | GOP_BUFFER_SIZE = 0x100 |
22 | GOP_BUFFER_SIZE = 0x100 |
23 | LIP_BUFFER_SIZE = 0x100 |
23 | LIP_BUFFER_SIZE = 0x100 |
24 | FILE_BUFFER_SIZE = 0x1000 |
24 | FILE_BUFFER_SIZE = 0x1000 |
Line -... | Line 25... | ||
- | 25 | ||
25 | 26 | KERNEL_TRAMPOLINE = 0x8f80 ; just before BOOT_LO |
|
26 | KERNEL_BASE = 0x10000 |
27 | KERNEL_BASE = 0x10000 |
27 | RAMDISK_BASE = 0x100000 |
28 | RAMDISK_BASE = 0x100000 |
Line 28... | Line 29... | ||
28 | MAX_FILE_SIZE = 0x10000000 |
29 | MAX_FILE_SIZE = 0x10000000 |
Line 816... | Line 817... | ||
816 | mov rsi, cfg_opt_value_syspath |
817 | mov rsi, cfg_opt_value_syspath |
817 | mov rdi, BOOT_LO.syspath |
818 | mov rdi, BOOT_LO.syspath |
818 | mov ecx, 0x17 |
819 | mov ecx, 0x17 |
819 | rep movsb |
820 | rep movsb |
Line -... | Line 821... | ||
- | 821 | ||
- | 822 | ; kernel trampoline |
|
- | 823 | mov rsi, kernel_trampoline |
|
- | 824 | mov rdi, KERNEL_TRAMPOLINE |
|
- | 825 | mov ecx, kernel_trampoline.size |
|
- | 826 | rep movsb |
|
- | 827 | ||
820 | 828 | mov rax, GDTR |
|
Line 821... | Line 829... | ||
821 | lgdt [cs:GDTR] |
829 | lgdt [cs:rax] |
822 | 830 | ||
823 | mov ax, DATA_32_SELECTOR |
831 | mov ax, DATA_32_SELECTOR |
824 | mov ds, ax |
832 | mov ds, ax |
825 | mov es, ax |
833 | mov es, ax |
826 | mov fs, ax |
834 | mov fs, ax |
Line 827... | Line 835... | ||
827 | mov gs, ax |
835 | mov gs, ax |
828 | mov ss, ax |
836 | mov ss, ax |
829 | 837 | ||
830 | push CODE_32_SELECTOR |
838 | push CODE_32_SELECTOR |
831 | lea rax, [.next] |
- | |
832 | push rax |
- | |
833 | retf |
- | |
834 | use32 |
- | |
835 | align 16 |
- | |
836 | .next: |
- | |
837 | mov eax, cr0 |
- | |
838 | and eax, not CR0_PG |
- | |
839 | mov cr0, eax |
- | |
840 | - | ||
841 | mov ecx, MSR_AMD_EFER |
- | |
842 | rdmsr |
- | |
843 | btr eax, 8 ; LME |
- | |
844 | wrmsr |
- | |
845 | - | ||
846 | mov eax, cr4 |
- | |
847 | and eax, not CR4_PAE |
- | |
848 | mov cr4, eax |
- | |
Line 849... | Line -... | ||
849 | - | ||
850 | push KERNEL_BASE |
839 | mov rax, KERNEL_TRAMPOLINE |
851 | retn |
840 | push rax |
852 | 841 | retf |
|
853 | use64 |
842 | |
854 | .error: |
843 | .error: |
Line 1084... | Line 1073... | ||
1084 | mov rdi, msg |
1073 | mov rdi, msg |
1085 | rep stosw |
1074 | rep stosw |
1086 | pop rdi rsi rdx rcx rbx rax |
1075 | pop rdi rsi rdx rcx rbx rax |
1087 | ret |
1076 | ret |
Line -... | Line 1077... | ||
- | 1077 | ||
- | 1078 | use32 |
|
- | 1079 | kernel_trampoline: |
|
- | 1080 | org KERNEL_TRAMPOLINE |
|
- | 1081 | mov eax, cr0 |
|
1088 | 1082 | and eax, not CR0_PG |
|
- | 1083 | mov cr0, eax |
|
- | 1084 | ||
- | 1085 | mov ecx, MSR_AMD_EFER |
|
- | 1086 | rdmsr |
|
- | 1087 | btr eax, 8 ; LME |
|
- | 1088 | wrmsr |
|
- | 1089 | ||
- | 1090 | mov eax, cr4 |
|
- | 1091 | and eax, not CR4_PAE |
|
- | 1092 | mov cr4, eax |
|
- | 1093 | ||
- | 1094 | push KERNEL_BASE |
|
- | 1095 | retn |
|
1089 | section '.rodata' data readable |
1096 | |
1090 | align 16 |
1097 | align 16 |
1091 | GDTR: |
1098 | GDTR: |
1092 | dw 4*8-1 |
1099 | dw 4*8-1 |
1093 | dq GDT |
1100 | dq GDT |
1094 | align 16 |
1101 | align 16 |
1095 | GDT: |
1102 | GDT: |
1096 | dw 0, 0, 0, 0 |
1103 | dw 0, 0, 0, 0 |
1097 | dw 0FFFFh,0,9A00h,0CFh ; 32-bit code |
1104 | dw 0FFFFh,0,9A00h,0CFh ; 32-bit code |
1098 | dw 0FFFFh,0,9200h,0CFh ; flat data |
1105 | dw 0FFFFh,0,9200h,0CFh ; flat data |
- | 1106 | dw 0FFFFh,0,9A00h,0AFh ; 64-bit code |
|
- | 1107 | assert $ < BOOT_LO |
|
Line -... | Line 1108... | ||
- | 1108 | kernel_trampoline.size = $ - KERNEL_TRAMPOLINE |
|
1099 | dw 0FFFFh,0,9A00h,0AFh ; 64-bit code |
1109 | |
1100 | 1110 | section '.rodata' data readable |
|
1101 | gopuuid db EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID |
1111 | gopuuid db EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID |
Line 1102... | Line 1112... | ||
1102 | lipuuid db EFI_LOADED_IMAGE_PROTOCOL_GUID |
1112 | lipuuid db EFI_LOADED_IMAGE_PROTOCOL_GUID |