diff options
Diffstat (limited to 'firmware/fw_jump.S')
-rw-r--r-- | firmware/fw_jump.S | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/firmware/fw_jump.S b/firmware/fw_jump.S index 4b71863..cdf1f41 100644 --- a/firmware/fw_jump.S +++ b/firmware/fw_jump.S @@ -11,17 +11,35 @@ .align 3 .section .entry, "ax", %progbits + .global fw_save_info + /* + * We can only use a0, a1, a2, a3, and a4 registers here. + * The a0, a1, and a2 registers will be same as passed by + * previous booting stage. + * Nothing to be returned here. + */ +fw_save_info: + ret + + .align 3 + .section .entry, "ax", %progbits .global fw_prev_arg1 + /* + * We can only use a0, a1, and a2 registers here. + * The previous arg1 should be returned in 'a0'. + */ fw_prev_arg1: - /* We return previous arg1 in 'a0' */ add a0, zero, zero ret .align 3 .section .entry, "ax", %progbits .global fw_next_arg1 + /* + * We can only use a0, a1, and a2 registers here. + * The next arg1 should be returned in 'a0'. + */ fw_next_arg1: - /* We return next arg1 in 'a0' */ #ifdef FW_JUMP_FDT_ADDR li a0, FW_JUMP_FDT_ADDR #else @@ -32,12 +50,38 @@ fw_next_arg1: .align 3 .section .entry, "ax", %progbits .global fw_next_addr + /* + * We can only use a0, a1, and a2 registers here. + * The next address should be returned in 'a0'. + */ fw_next_addr: - /* We return next address in 'a0' */ la a0, _jump_addr REG_L a0, (a0) ret + .align 3 + .section .entry, "ax", %progbits + .global fw_next_mode + /* + * We can only use a0, a1, and a2 registers here. + * The next address should be returned in 'a0' + */ +fw_next_mode: + li a0, PRV_S + ret + + .align 3 + .section .entry, "ax", %progbits + .global fw_options + /* + * We can only use a0, a1, and a2 registers here. + * The 'a4' register will have default options. + * The next address should be returned in 'a0'. + */ +fw_options: + add a0, zero, zero + ret + #ifndef FW_JUMP_ADDR #error "Must define FW_JUMP_ADDR" #endif |