Subversion Repositories Kolibri OS

Rev

Rev 8206 | Rev 8284 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8206 Rev 8220
Line 710... Line 710...
710
        cmp     [cfg_opt_value_ask_params], 0
710
        cmp     [cfg_opt_value_ask_params], 0
711
        jz      @f
711
        jz      @f
712
        call    ask_for_params
712
        call    ask_for_params
713
@@:
713
@@:
Line 714... Line -...
714
 
-
 
715
;        call    calc_memmap
-
 
716
;        call    dump_memmap
-
 
717
 
714
 
718
        movzx   ecx, [cfg_opt_value_vmode]
715
        movzx   ecx, [cfg_opt_value_vmode]
719
        eficall [gop_interface], EFI_GRAPHICS_OUTPUT_PROTOCOL.SetMode, \
716
        eficall [gop_interface], EFI_GRAPHICS_OUTPUT_PROTOCOL.SetMode, \
720
                [gop_interface], rcx
717
                [gop_interface], rcx
721
        test    eax, eax
718
        test    eax, eax
Line 768... Line 765...
768
        ; ramdisk
765
        ; ramdisk
769
;        eficall BootServices, AllocatePages, EFI_RESERVED_MEMORY_TYPE, \
766
;        eficall BootServices, AllocatePages, EFI_RESERVED_MEMORY_TYPE, \
770
;                2880*512/0x1000, EFI_ALLOCATE_ADDRESS
767
;                2880*512/0x1000, EFI_ALLOCATE_ADDRESS
Line 771... Line 768...
771
 
768
 
-
 
769
        call    calc_memmap
Line 772... Line 770...
772
        call    calc_memmap
770
;        call    dump_memmap
773
 
771
 
774
        mov     rbx, [efi_table]
772
        mov     rbx, [efi_table]
775
        mov     rbx, [rbx+EFI_SYSTEM_TABLE.BootServices]
773
        mov     rbx, [rbx+EFI_SYSTEM_TABLE.BootServices]
Line 859... Line 857...
859
                msg_error
857
                msg_error
860
        jmp     $
858
        jmp     $
Line 861... Line 859...
861
 
859
 
862
 
-
 
863
halt_on_error:
860
 
864
        push    rax rbx rcx rdx rsi rdi
861
halt_on_error:
865
        test    eax, eax
862
        test    eax, eax
866
        jz      @f
863
        jz      @f
867
        call    clearbuf
864
        call    clearbuf
Line 874... Line 871...
874
        mov     rbx, [efi_table]
871
        mov     rbx, [efi_table]
875
        mov     rbx, [rbx+EFI_SYSTEM_TABLE.ConOut]
872
        mov     rbx, [rbx+EFI_SYSTEM_TABLE.ConOut]
876
        eficall rbx, EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString, rbx, msg
873
        eficall rbx, EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString, rbx, msg
877
        jmp     $
874
        jmp     $
878
@@:
875
@@:
879
        pop     rdi rsi rdx rcx rbx rax
-
 
880
        ret
876
        ret
Line 881... Line 877...
881
 
877
 
882
find_rsdp:
878
find_rsdp:
883
        push    rbx
879
        push    rbx
Line 920... Line 916...
920
        mov     rbx, [rbx+EFI_SYSTEM_TABLE.BootServices]
916
        mov     rbx, [rbx+EFI_SYSTEM_TABLE.BootServices]
921
        eficall rbx, EFI_BOOT_SERVICES.GetMemoryMap, memory_map_size, \
917
        eficall rbx, EFI_BOOT_SERVICES.GetMemoryMap, memory_map_size, \
922
                [memory_map], memory_map_key, descriptor_size, descriptor_ver
918
                [memory_map], memory_map_key, descriptor_size, descriptor_ver
923
        call    halt_on_error
919
        call    halt_on_error
Line 924... Line -...
924
 
-
 
925
        mov     rdi, BOOT_LO.memmap_block_cnt
-
 
926
        mov     dword[rdi], 0
920
 
927
        mov     rdi, BOOT_LO.memmap_blocks
-
 
928
        mov     rax, [memory_map_size]
-
 
929
        xor     edx, edx
-
 
930
        mov     rcx, [descriptor_size]
-
 
931
        div     ecx
-
 
932
        mov     ecx, eax
-
 
933
        cmp     ecx, MAX_MEMMAP_BLOCKS
-
 
934
        jbe     @f
-
 
935
        mov     ecx, MAX_MEMMAP_BLOCKS
-
 
936
@@:
-
 
937
        xor     eax, eax
921
        mov     rdi, BOOT_LO.memmap_blocks
938
        mov     [rax+BOOT_LO.memmap_block_cnt], 0
922
        mov     dword[rdi-4], 0 ; memmap_block_cnt
-
 
923
        mov     rsi, [memory_map]
-
 
924
        mov     rbx, rsi
939
        mov     rsi, [memory_map]
925
        add     rbx, [memory_map_size]
940
.next_descr:
926
.next_descr:
941
        call    add_uefi_memmap
927
        call    add_uefi_memmap
942
        add     rsi, [descriptor_size]
-
 
943
        add     rdi, sizeof.e820entry
928
        add     rsi, [descriptor_size]
944
        dec     ecx
929
        cmp     rsi, rbx
945
        jnz     .next_descr
930
        jb      .next_descr
Line 946... Line 931...
946
        ret
931
        ret
947
 
932
 
948
dump_memmap:
933
dump_memmap:
Line 995... Line 980...
995
 
980
 
996
 
981
 
997
; linux/arch/x86/platform/efi/efi.c
982
; linux/arch/x86/platform/efi/efi.c
998
; do_add_efi_memmap
983
; do_add_efi_memmap
-
 
984
add_uefi_memmap:
-
 
985
        xor     eax, eax
Line 999... Line -...
999
add_uefi_memmap:
-
 
1000
        push    rax rbx rcx rdx rsi rdi
986
        cmp     [rax+BOOT_LO.memmap_block_cnt], MAX_MEMMAP_BLOCKS
1001
 
-
 
1002
        mov     r10d, [rsi+EFI_MEMORY_DESCRIPTOR.Type]
987
        jz      .done
Line 1003... Line 988...
1003
        mov     r11, [rsi+EFI_MEMORY_DESCRIPTOR.PhysicalStart]
988
 
1004
        mov     r13, [rsi+EFI_MEMORY_DESCRIPTOR.NumberOfPages]
-
 
1005
        mov     r14, [rsi+EFI_MEMORY_DESCRIPTOR.Attribute]
989
        mov     rax, [rsi+EFI_MEMORY_DESCRIPTOR.PhysicalStart]
1006
 
990
        mov     [rdi+e820entry.addr], rax
Line 1007... Line -...
1007
        mov     [rdi+e820entry.addr], r11
-
 
-
 
991
 
1008
        mov     rax, r13
992
        mov     rax, [rsi+EFI_MEMORY_DESCRIPTOR.NumberOfPages]
1009
        shl     rax, 12
993
        shl     rax, 12
1010
        mov     [rdi+e820entry.size], rax
994
        mov     [rdi+e820entry.size], rax
1011
 
995
 
1012
 
996
        mov     ecx, [rsi+EFI_MEMORY_DESCRIPTOR.Type]
1013
        cmp     r10d, EFI_LOADER_CODE
997
        cmp     ecx, EFI_LOADER_CODE
1014
        jz      .case0
998
        jz      .mem_ram_if_wb
1015
        cmp     r10d, EFI_LOADER_DATA
999
        cmp     ecx, EFI_LOADER_DATA
1016
        jz      .case0
1000
        jz      .mem_ram_if_wb
1017
        cmp     r10d, EFI_BOOT_SERVICES_CODE
1001
        cmp     ecx, EFI_BOOT_SERVICES_CODE
1018
        jz      .case0
1002
        jz      .mem_ram_if_wb
1019
        cmp     r10d, EFI_BOOT_SERVICES_DATA
-
 
1020
        jz      .case0
-
 
1021
        cmp     r10d, EFI_CONVENTIONAL_MEMORY
-
 
1022
        jz      .case0
-
 
1023
        cmp     r10d, EFI_ACPI_RECLAIM_MEMORY
-
 
1024
        jz      .case1
-
 
1025
        cmp     r10d, EFI_ACPI_MEMORY_NVS
-
 
1026
        jz      .case2
-
 
1027
        cmp     r10d, EFI_UNUSABLE_MEMORY
-
 
1028
        jz      .case3
-
 
1029
        cmp     r10d, EFI_PERSISTENT_MEMORY
-
 
1030
        jz      .case4
-
 
1031
        jmp     .default
-
 
1032
 
-
 
1033
.case0:
-
 
1034
        test    r14, EFI_MEMORY_WB
-
 
1035
        jz      @f
-
 
1036
        mov     eax, E820_RAM
-
 
1037
        jmp     .done
1003
        cmp     ecx, EFI_BOOT_SERVICES_DATA
1038
    @@:
1004
        jz      .mem_ram_if_wb
1039
        mov     eax, E820_RESERVED
1005
        cmp     ecx, EFI_CONVENTIONAL_MEMORY
1040
        jmp     .done
1006
        jz      .mem_ram_if_wb
1041
.case1:
1007
        cmp     ecx, EFI_ACPI_RECLAIM_MEMORY
1042
        mov     eax, E820_ACPI
1008
        mov     eax, E820_ACPI
1043
        jmp     .done
1009
        jz      .type_done
1044
.case2:
1010
        cmp     ecx, EFI_ACPI_MEMORY_NVS
1045
        mov     eax, E820_NVS
1011
        mov     eax, E820_NVS
1046
        jmp     .done
1012
        jz      .type_done
1047
.case3:
1013
        cmp     ecx, EFI_UNUSABLE_MEMORY
-
 
1014
        mov     eax, E820_UNUSABLE
-
 
1015
        jz      .type_done
-
 
1016
        cmp     ecx, EFI_PERSISTENT_MEMORY
-
 
1017
        mov     eax, E820_PMEM
-
 
1018
        jz      .type_done
1048
        mov     eax, E820_UNUSABLE
1019
        jmp     .reserved
1049
        jmp     .done
1020
.mem_ram_if_wb:
1050
.case4:
-
 
1051
        mov     eax, E820_PMEM
-
 
1052
        jmp     .done
1021
        test    [rsi+EFI_MEMORY_DESCRIPTOR.Attribute], dword EFI_MEMORY_WB
1053
.default:
1022
        mov     eax, E820_RAM
1054
        mov     eax, E820_RESERVED
-
 
1055
        jmp     .done
1023
        jnz     .type_done
-
 
1024
.reserved:
1056
 
1025
        mov     eax, E820_RESERVED
1057
.done:
-
 
-
 
1026
.type_done:
1058
        mov     [rdi+e820entry.type], eax
1027
        mov     [rdi+e820entry.type], eax
-
 
1028
        cmp     eax, E820_RAM
-
 
1029
        jnz     @f
1059
 
1030
        xor     eax, eax
Line 1060... Line 1031...
1060
        mov     rax, BOOT_LO.memmap_block_cnt
1031
        inc     [rax+BOOT_LO.memmap_block_cnt]
1061
        inc     word[rax]
1032
        add     rdi, sizeof.e820entry