diff options
author | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2014-03-07 11:51:56 +0530 |
---|---|---|
committer | Alexey Kardashevskiy <aik@ozlabs.ru> | 2014-03-18 17:06:47 +1100 |
commit | c3d633a04491a959dd021a9199e3199fc3ad8a41 (patch) | |
tree | 88f7dd9e16c6b58cef6dd77e335085bad456995d /slof/entry.S | |
parent | 4099049c2588cc4ab4ce0fb7b96f8033ab03f538 (diff) | |
download | SLOF-c3d633a04491a959dd021a9199e3199fc3ad8a41.zip SLOF-c3d633a04491a959dd021a9199e3199fc3ad8a41.tar.gz SLOF-c3d633a04491a959dd021a9199e3199fc3ad8a41.tar.bz2 |
ELF: Enter LE binary in LE mode
Trampoline code in the LE binary were helping fix this. This patch now
takes care of switching the mode to LE for LE elf binaries.
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Diffstat (limited to 'slof/entry.S')
-rw-r--r-- | slof/entry.S | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/slof/entry.S b/slof/entry.S index bbaca9f..dcff57b 100644 --- a/slof/entry.S +++ b/slof/entry.S @@ -178,7 +178,30 @@ call_client: mflr 4 mtctr 3 bl swap_ci_regs + /* Check if LE loading */ + cmpwi 0,13,1 + beq 0f bctrl + b 1f +0: /* handle LE */ + mfmsr 13 + xori 13,13,1 + mtsrr1 13 + mfctr 13 + mr 12,13 + mtsrr0 13 + rfid +#if 0 /* in case we return back, still to be tested */ + .long 0x05009f42; /* bcl 20,31,$+4 */ + .long 0xa602c87d; /* mflr r14 */ + .long 0x1c00ce39; /* addi r14,r14,28 */ + .long 0xa600e07d; /* mfmsr r15 */ + .long 0x0100ef69; /* xori r15,r15,1 */ + .long 0xa603da7d; /* mtsrr0 r14 */ + .long 0xa603fb7d; /* mtsrr1 r15 */ + .long 0x2400004c; /* rfid */ +#endif +1: bl swap_ci_regs mtlr 4 li 3, -1 # client app return |