diff options
Diffstat (limited to 'src/securerom/branchtable.S')
-rw-r--r-- | src/securerom/branchtable.S | 88 |
1 files changed, 41 insertions, 47 deletions
diff --git a/src/securerom/branchtable.S b/src/securerom/branchtable.S index d3c1c8608..86a1f92a8 100644 --- a/src/securerom/branchtable.S +++ b/src/securerom/branchtable.S @@ -25,74 +25,68 @@ #**************************************************************************** #* branch table - a more stable location for software entering rom code #**************************************************************************** -# adr function -# 0 instruction_start -# 2 .SHA512_Init -# 4 .SHA512_Update -# 6 .SHA512_Final -# 8 .SHA512_Hash -# A .ec_verify -# C .ROM_verify -# 100 rom_sreset -branchtable: - .section ".branchtable","ax" +.include "kernel/ppcconsts.S" - .globl _instruction_start -_instruction_start: - b instruction_start - nop +branchtable: + .section ".branchtable","ax" - .globl _SHA512_Init + .globl _SHA512_Init _SHA512_Init: - li r0, .L.SHA512_Init@l - b springboard + li r0, .L.SHA512_Init@l + b springboard - .globl _SHA512_Update + .globl _SHA512_Update _SHA512_Update: - li r0, .L.SHA512_Update@l - b springboard + li r0, .L.SHA512_Update@l + b springboard - .globl _SHA512_Final + .globl _SHA512_Final _SHA512_Final: - li r0, .L.SHA512_Final@l - b springboard + li r0, .L.SHA512_Final@l + b springboard - .globl _SHA512_Hash + .globl _SHA512_Hash _SHA512_Hash: - li r0, .L.SHA512_Hash@l - b springboard + li r0, .L.SHA512_Hash@l + b springboard - .globl _ec_verify + .globl _ec_verify _ec_verify: - li r0, .L.ec_verify@l - b springboard + li r0, .L.ec_verify@l + b springboard - .globl _ROM_verify + .globl _ROM_verify _ROM_verify: - li r0, .L.ROM_verify@l - b springboard + li r0, .L.ROM_verify@l + b springboard #define CFAR 28 springboard: - b boingboing + b boingboing boingboing: - mfspr r2, CFAR // get address of springboard - addi r2, r2, _instruction_start-springboard // base address - add r0, r0, r2 // calculate entry relative - addi r2, r2, 0x4000 //TOC+0x8000 part 1 - addi r2, r2, (__toc_start+0x4000)@l //TOC+0x8000 part 2 - mtctr r0 - bctr // jump + mfspr r2, CFAR ;// get address of springboard + addi r2, r2, _SHA512_Init-springboard ;// base address + add r0, r0, r2 ;// calculate entry relative + addi r2, r2, 0x4000 ;//TOC+0x8000 part 1 + addi r2, r2, (__toc_start+0x4000)@l ;//TOC+0x8000 part 2 + mtctr r0 + bctr ;// jump # could put other assembly ocde routines here to conserver ROM space # including the sreset routine -# need to align on bootrombase+0x100 !!! - .org .branchtable+0x100 - .globl _rom_sreset +# need to align on securerombase+0x100 !!! + .org .branchtable+0x100 + .globl _rom_sreset _rom_sreset: - li r0, rom_sreset@l - b springboard - nop + li r0, rom_sreset@l + b springboard + nop + +.section .data + +.global hbi_ImageId +hbi_ImageId: + .space 128 |