forked from Imagelibrary/rtems
bsp/qoriq: Use LA to load an address
Add 64-bit support for LA. Update #3082.
This commit is contained in:
@@ -54,45 +54,45 @@ _start:
|
|||||||
bl bsp_fdt_copy
|
bl bsp_fdt_copy
|
||||||
|
|
||||||
/* Get start stack */
|
/* Get start stack */
|
||||||
LWI START_STACK, start_stack_end
|
LA START_STACK, start_stack_end
|
||||||
|
|
||||||
bl .Linitmore
|
bl .Linitmore
|
||||||
|
|
||||||
/* Copy fast text */
|
/* Copy fast text */
|
||||||
LWI r3, bsp_section_fast_text_begin
|
LA r3, bsp_section_fast_text_begin
|
||||||
LWI r4, bsp_section_fast_text_load_begin
|
LA r4, bsp_section_fast_text_load_begin
|
||||||
LWI r5, bsp_section_fast_text_size
|
LA r5, bsp_section_fast_text_size
|
||||||
bl .Lcopy
|
bl .Lcopy
|
||||||
LWI r3, bsp_section_fast_text_begin
|
LA r3, bsp_section_fast_text_begin
|
||||||
LWI r4, bsp_section_fast_text_size
|
LA r4, bsp_section_fast_text_size
|
||||||
bl rtems_cache_flush_multiple_data_lines
|
bl rtems_cache_flush_multiple_data_lines
|
||||||
|
|
||||||
/* Copy read-only data */
|
/* Copy read-only data */
|
||||||
LWI r3, bsp_section_rodata_begin
|
LA r3, bsp_section_rodata_begin
|
||||||
LWI r4, bsp_section_rodata_load_begin
|
LA r4, bsp_section_rodata_load_begin
|
||||||
LWI r5, bsp_section_rodata_size
|
LA r5, bsp_section_rodata_size
|
||||||
bl .Lcopy
|
bl .Lcopy
|
||||||
LWI r3, bsp_section_rodata_begin
|
LA r3, bsp_section_rodata_begin
|
||||||
LWI r4, bsp_section_rodata_size
|
LA r4, bsp_section_rodata_size
|
||||||
bl rtems_cache_flush_multiple_data_lines
|
bl rtems_cache_flush_multiple_data_lines
|
||||||
|
|
||||||
/* Copy fast data */
|
/* Copy fast data */
|
||||||
LWI r3, bsp_section_fast_data_begin
|
LA r3, bsp_section_fast_data_begin
|
||||||
LWI r4, bsp_section_fast_data_load_begin
|
LA r4, bsp_section_fast_data_load_begin
|
||||||
LWI r5, bsp_section_fast_data_size
|
LA r5, bsp_section_fast_data_size
|
||||||
bl .Lcopy
|
bl .Lcopy
|
||||||
|
|
||||||
/* Copy data */
|
/* Copy data */
|
||||||
LWI r3, bsp_section_data_begin
|
LA r3, bsp_section_data_begin
|
||||||
LWI r4, bsp_section_data_load_begin
|
LA r4, bsp_section_data_load_begin
|
||||||
LWI r5, bsp_section_data_size
|
LA r5, bsp_section_data_size
|
||||||
bl .Lcopy
|
bl .Lcopy
|
||||||
|
|
||||||
/* NULL pointer access protection (only core 0 has to do this) */
|
/* NULL pointer access protection (only core 0 has to do this) */
|
||||||
mfspr r3, BOOKE_PIR
|
mfspr r3, BOOKE_PIR
|
||||||
cmpwi r3, 0
|
cmpwi r3, 0
|
||||||
bne .Lnull_area_setup_done
|
bne .Lnull_area_setup_done
|
||||||
LWI r3, bsp_section_start_begin
|
LA r3, bsp_section_start_begin
|
||||||
srawi r3, r3, 2
|
srawi r3, r3, 2
|
||||||
mtctr r3
|
mtctr r3
|
||||||
li r3, -4
|
li r3, -4
|
||||||
@@ -106,13 +106,13 @@ _start:
|
|||||||
bl .Linitmmu
|
bl .Linitmmu
|
||||||
|
|
||||||
/* Clear SBSS */
|
/* Clear SBSS */
|
||||||
LWI r3, bsp_section_sbss_begin
|
LA r3, bsp_section_sbss_begin
|
||||||
LWI r4, bsp_section_sbss_size
|
LA r4, bsp_section_sbss_size
|
||||||
bl bsp_start_zero
|
bl bsp_start_zero
|
||||||
|
|
||||||
/* Clear BSS */
|
/* Clear BSS */
|
||||||
LWI r3, bsp_section_bss_begin
|
LA r3, bsp_section_bss_begin
|
||||||
LWI r4, bsp_section_bss_size
|
LA r4, bsp_section_bss_size
|
||||||
bl bsp_start_zero
|
bl bsp_start_zero
|
||||||
|
|
||||||
/* Set up EABI and SYSV environment */
|
/* Set up EABI and SYSV environment */
|
||||||
|
|||||||
@@ -869,8 +869,16 @@ void ShowBATS(void);
|
|||||||
#include <rtems/asm.h>
|
#include <rtems/asm.h>
|
||||||
|
|
||||||
.macro LA reg, addr
|
.macro LA reg, addr
|
||||||
|
#if defined(__powerpc64__)
|
||||||
|
lis \reg, (\addr)@highest
|
||||||
|
ori \reg, \reg, (\addr)@higher
|
||||||
|
rldicr \reg, \reg, 32, 31
|
||||||
|
oris \reg, \reg, (\addr)@h
|
||||||
|
ori \reg, \reg, (\addr)@l
|
||||||
|
#else
|
||||||
lis \reg, (\addr)@h
|
lis \reg, (\addr)@h
|
||||||
ori \reg, \reg, (\addr)@l
|
ori \reg, \reg, (\addr)@l
|
||||||
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro LA32 reg, addr
|
.macro LA32 reg, addr
|
||||||
|
|||||||
Reference in New Issue
Block a user