Subversion Repositories Kolibri OS

Rev

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