summaryrefslogtreecommitdiffstats
path: root/sbe/image/pm_loader.S
diff options
context:
space:
mode:
authorSachin Gupta <sgupta2m@in.ibm.com>2015-07-20 23:28:58 -0500
committerAmit J. Tendolkar <amit.tendolkar@in.ibm.com>2016-02-03 00:12:11 -0600
commitd39b495d089e8bc51e5dfa794cf6fd3d3db9f9ed (patch)
treeca365bfb28a1c7b373c18e7e5c2f14c44dc7854c /sbe/image/pm_loader.S
parent309c9ac32ee2e05ea5975b0973f79cd8b22acda2 (diff)
downloadtalos-sbe-d39b495d089e8bc51e5dfa794cf6fd3d3db9f9ed.tar.gz
talos-sbe-d39b495d089e8bc51e5dfa794cf6fd3d3db9f9ed.zip
SEEPREOM/PIBMEM Loader
RTC: 123472 Change-Id: I625ade56cbd56d7c3e7c6510e863351f054408ee Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19793 Tested-by: Jenkins Server Reviewed-by: Amit J. Tendolkar <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'sbe/image/pm_loader.S')
-rw-r--r--sbe/image/pm_loader.S57
1 files changed, 57 insertions, 0 deletions
diff --git a/sbe/image/pm_loader.S b/sbe/image/pm_loader.S
new file mode 100644
index 00000000..84c64020
--- /dev/null
+++ b/sbe/image/pm_loader.S
@@ -0,0 +1,57 @@
+
+ .nolist
+#include "pk.h"
+#include "sbe_link.H"
+ .list
+
+### ****************************************************************************
+### .loader_text - This section contains pm loader code
+### @TODO via RTC 136315
+### It also contains vector code. We can remove vector code
+### once OTPROM support for simics is in.
+### ****************************************************************************
+
+ .section .loader_text, "ax", @progbits
+
+ .global __vectors
+
+__vectors:
+
+ ############################################################
+ # 0x0040 : System Reset
+ ############################################################
+ .global __system_reset
+ .org __vectors + 0x0040
+__system_reset:
+ b __pmLoader
+
+
+__pmLoader:
+ _liw %r3, SBE_LOADER_BASE_SECTION # Base Loader Section Location
+ _liw %r4, SBE_LOADER_BASE_ORIGIN # dest
+ _liw %r9, SBE_SEEPROM_BASE_ORIGIN
+ lwz r5, 4(r3) #size of image in bytes
+ li r6, 3
+ srw r5, r5, r6 # Number of double word transfers
+ mtctr r5 # set the counter for loop
+ lwz r8, 0(r3) # offset of baseloader section
+ adde r8, r8, r9 # add base address to offset to get absolute address
+
+copy_loop:
+ lvd d28, 0(r8)
+ stvd d28, 0(r4)
+ addi r8, r8, 8
+ addi r4, r4, 8
+ bdnz copy_loop
+
+ ############################################################
+ # SBE entry function is 4 byte number in image header
+ ############################################################
+
+ _liw %r3, SBE_SEEPROM_BASE_ORIGIN + SBE_LOADER_ENTRY_HEADER_OFFSET
+ lwz r6, 0(r3)
+ mtlr r6
+ blr
+
+ .epilogue __pmLoader
+
OpenPOWER on IntegriCloud