diff options
-rw-r--r-- | firmware/fw_base.S | 10 | ||||
-rw-r--r-- | firmware/fw_dynamic.S | 18 | ||||
-rw-r--r-- | firmware/fw_jump.S | 16 | ||||
-rw-r--r-- | firmware/fw_payload.S | 28 | ||||
-rw-r--r-- | firmware/payloads/test_head.S | 6 |
5 files changed, 34 insertions, 44 deletions
diff --git a/firmware/fw_base.S b/firmware/fw_base.S index 0797cc0..119622c 100644 --- a/firmware/fw_base.S +++ b/firmware/fw_base.S @@ -41,8 +41,8 @@ 999: .endm - .align 3 .section .entry, "ax", %progbits + .align 3 .globl _start .globl _start_warm _start: @@ -405,8 +405,8 @@ _link_start: _link_end: RISCV_PTR _fw_reloc_end - .align 3 .section .entry, "ax", %progbits + .align 3 .globl _hartid_to_scratch _hartid_to_scratch: add sp, sp, -(3 * __SIZEOF_POINTER__) @@ -440,15 +440,15 @@ _hartid_to_scratch: add sp, sp, (3 * __SIZEOF_POINTER__) ret - .align 3 .section .entry, "ax", %progbits + .align 3 .globl _start_hang _start_hang: wfi j _start_hang - .align 3 .section .entry, "ax", %progbits + .align 3 .globl _trap_handler _trap_handler: /* Swap TP and MSCRATCH */ @@ -603,8 +603,8 @@ _skip_mstatush_restore: mret - .align 3 .section .entry, "ax", %progbits + .align 3 .globl _reset_regs _reset_regs: diff --git a/firmware/fw_dynamic.S b/firmware/fw_dynamic.S index 192698a..d658011 100644 --- a/firmware/fw_dynamic.S +++ b/firmware/fw_dynamic.S @@ -11,14 +11,14 @@ #include "fw_base.S" - .align 3 .section .entry, "ax", %progbits + .align 3 _bad_dynamic_info: wfi j _bad_dynamic_info - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_boot_hart /* * This function is called very early even before @@ -43,8 +43,8 @@ fw_boot_hart: 2: li a0, -1 ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_save_info /* * We can only use a0, a1, a2, a3, and a4 registers here. @@ -86,8 +86,8 @@ fw_save_info: 2: ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_prev_arg1 /* * We can only use a0, a1, and a2 registers here. @@ -99,8 +99,8 @@ fw_prev_arg1: add a0, zero, zero ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_arg1 /* * We can only use a0, a1, and a2 registers here. @@ -113,8 +113,8 @@ fw_next_arg1: REG_L a0, (a0) ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_addr /* * We can only use a0, a1, and a2 registers here. @@ -125,8 +125,8 @@ fw_next_addr: REG_L a0, (a0) ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_mode /* * We can only use a0, a1, and a2 registers here. @@ -137,8 +137,8 @@ fw_next_mode: REG_L a0, (a0) ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_options /* * We can only use a0, a1, and a2 registers here. @@ -150,8 +150,8 @@ fw_options: REG_L a0, (a0) ret - .align 3 .section .entry, "ax", %progbits + .align 3 _dynamic_next_arg1: RISCV_PTR 0x0 _dynamic_next_addr: diff --git a/firmware/fw_jump.S b/firmware/fw_jump.S index e0a3b53..afbcec0 100644 --- a/firmware/fw_jump.S +++ b/firmware/fw_jump.S @@ -9,8 +9,8 @@ #include "fw_base.S" - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_boot_hart /* * This function is called very early even before @@ -22,8 +22,8 @@ fw_boot_hart: li a0, -1 ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_save_info /* * We can only use a0, a1, a2, a3, and a4 registers here. @@ -34,8 +34,8 @@ fw_boot_hart: fw_save_info: ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_prev_arg1 /* * We can only use a0, a1, and a2 registers here. @@ -47,8 +47,8 @@ fw_prev_arg1: add a0, zero, zero ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_arg1 /* * We can only use a0, a1, and a2 registers here. @@ -64,8 +64,8 @@ fw_next_arg1: #endif ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_addr /* * We can only use a0, a1, and a2 registers here. @@ -76,8 +76,8 @@ fw_next_addr: REG_L a0, (a0) ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_mode /* * We can only use a0, a1, and a2 registers here. @@ -87,8 +87,8 @@ fw_next_mode: li a0, PRV_S ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_options /* * We can only use a0, a1, and a2 registers here. @@ -103,7 +103,7 @@ fw_options: #error "Must define FW_JUMP_ADDR" #endif - .align 3 .section .entry, "ax", %progbits + .align 3 _jump_addr: RISCV_PTR FW_JUMP_ADDR diff --git a/firmware/fw_payload.S b/firmware/fw_payload.S index 84d9ad4..9805d8c 100644 --- a/firmware/fw_payload.S +++ b/firmware/fw_payload.S @@ -9,8 +9,8 @@ #include "fw_base.S" - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_boot_hart /* * This function is called very early even before @@ -22,8 +22,8 @@ fw_boot_hart: li a0, -1 ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_save_info /* * We can only use a0, a1, a2, a3, and a4 registers here. @@ -34,8 +34,8 @@ fw_boot_hart: fw_save_info: ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_prev_arg1 /* * We can only use a0, a1, and a2 registers here. @@ -51,8 +51,8 @@ fw_prev_arg1: #endif ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_arg1 /* * We can only use a0, a1, and a2 registers here. @@ -68,8 +68,8 @@ fw_next_arg1: #endif ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_addr /* * We can only use a0, a1, and a2 registers here. @@ -79,8 +79,8 @@ fw_next_addr: la a0, payload_bin ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_next_mode /* * We can only use a0, a1, and a2 registers here. @@ -90,8 +90,8 @@ fw_next_mode: li a0, PRV_S ret - .align 3 .section .entry, "ax", %progbits + .align 3 .global fw_options /* * We can only use a0, a1, and a2 registers here. @@ -102,24 +102,16 @@ fw_options: add a0, zero, zero ret - /* - * We disable relaxation because use of ".align" - * and ".balign" can potentially generate compile - * errors with latest RISC-V GCC Binutils. - */ - .option push - .option norelax - #ifdef FW_PAYLOAD_FDT_PATH - .align 4 .section .text, "ax", %progbits + .align 4 .globl fdt_bin fdt_bin: .incbin FW_PAYLOAD_FDT_PATH #endif - .align 4 .section .payload, "ax", %progbits + .align 4 .globl payload_bin payload_bin: #ifndef FW_PAYLOAD_PATH @@ -128,5 +120,3 @@ payload_bin: #else .incbin FW_PAYLOAD_PATH #endif - - .option pop diff --git a/firmware/payloads/test_head.S b/firmware/payloads/test_head.S index ef1405a..840013e 100644 --- a/firmware/payloads/test_head.S +++ b/firmware/payloads/test_head.S @@ -23,8 +23,8 @@ #define REG_L __REG_SEL(ld, lw) #define REG_S __REG_SEL(sd, sw) - .align 3 .section .entry, "ax", %progbits + .align 3 .globl _start _start: /* Pick one hart to run the main boot sequence */ @@ -71,15 +71,15 @@ _start_warm: /* We don't expect to reach here hence just hang */ j _start_hang - .align 3 .section .entry, "ax", %progbits + .align 3 .globl _start_hang _start_hang: wfi j _start_hang - .align 3 .section .entry, "ax", %progbits + .align 3 _hart_lottery: RISCV_PTR 0 _boot_a0: |