.

board/raspberrypi/rpi/lowlevel\_init.S

1    #include <config.h>
2    
3    .align 8
4    .global fw_dtb_pointer
5    fw_dtb_pointer:
6    #ifdef CONFIG_ARM64
7        .dword 0x0
8    #else
9        .word 0x0
10    #endif
11
12    /*
13     * Routine: save_boot_params (called after reset from start.S)
14     * Description: save ATAG/FDT address provided by the firmware at boot time
15     */
16
17    .global save_boot_params
18    save_boot_params:
19
20        /* The firmware provided ATAG/FDT address can be found in r2/x0 */
21    #ifdef CONFIG_ARM64
22        adr    x8, fw_dtb_pointer
23        str    x0, [x8]
24    #else
25        str    r2, fw_dtb_pointer
26    #endif
27
28        /* Returns */
29        b    save_boot_params_ret
  • 3번 줄에서
  • 4번 줄에서 fw_dtb_pointer를 외부에서 호출할 수 있도록 global로 선언합니다.
  • 17번 줄에서 save_boot_params도 위와 같이 선언합니다.
  • 21번 줄에서 우리는 32bit용으로 컴파일 했기때문에 22, 23번 줄은 수행되지 않습니다.
  • 25번 줄에서 r2레지스터를 fw_dtb_pointer 주소에 저장합니다.
  • 6번 줄에서 우리는 32bit용으로 컴파일 했기때문에 4byte 0x0값을 fw_dtb_pointer라벨이 선언된 곳에 저장합니다.
  • 즉 레지스터 r2값을 fw_dtb_pointer 라벨이 선언된 주소에 저장합니다.
  • 29번 라인에서 save_boot_params_ret으로 점프합니다.

results matching ""

    No results matching ""