mirror of
https://gitlab.com/qemu-project/openbios.git
synced 2024-02-13 08:34:06 +08:00
Eliminate M4 macros
git-svn-id: svn://coreboot.org/openbios/openbios-devel@266 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
103
arch/ppc/start.S
103
arch/ppc/start.S
@@ -14,7 +14,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
changequote([[[[[,]]]]]) [[[[[ /* shield includes from m4-expansion */
|
||||
#include "asm/asmdefs.h"
|
||||
#include "asm/processor.h"
|
||||
#include "osi.h"
|
||||
@@ -26,38 +25,37 @@ changequote([[[[[,]]]]]) [[[[[ /* shield includes from m4-expansion */
|
||||
#define ILLEGAL_VECTOR( v ) .org __vectors + v ; bl trap_error ;
|
||||
#define VECTOR( v, dummystr ) .org __vectors + v ; vector__##v
|
||||
|
||||
MACRO(EXCEPTION_PREAMBLE, [
|
||||
mtsprg1 r1 // scratch
|
||||
mfsprg0 r1 // exception stack in sprg0
|
||||
addi r1,r1,-80 // push exception frame
|
||||
|
||||
stw r0,0(r1) // save r0
|
||||
mfsprg1 r0
|
||||
stw r0,4(r1) // save r1
|
||||
stw r2,8(r1) // save r2
|
||||
stw r3,12(r1) // save r3
|
||||
stw r4,16(r1)
|
||||
stw r5,20(r1)
|
||||
stw r6,24(r1)
|
||||
stw r7,28(r1)
|
||||
stw r8,32(r1)
|
||||
stw r9,36(r1)
|
||||
stw r10,40(r1)
|
||||
stw r11,44(r1)
|
||||
stw r12,48(r1)
|
||||
|
||||
mflr r0
|
||||
stw r0,52(r1)
|
||||
mfcr r0
|
||||
stw r0,56(r1)
|
||||
mfctr r0
|
||||
stw r0,60(r1)
|
||||
mfxer r0
|
||||
stw r0,64(r1)
|
||||
|
||||
// 76(r1) unused
|
||||
addi r1,r1,-16 // call conventions uses 0(r1) and 4(r1)...
|
||||
])
|
||||
#define EXCEPTION_PREAMBLE \
|
||||
mtsprg1 r1 ; /* scratch */ \
|
||||
mfsprg0 r1 ; /* exception stack in sprg0 */ \
|
||||
addi r1,r1,-80 ; /* push exception frame */ \
|
||||
\
|
||||
stw r0,0(r1) ; /* save r0 */ \
|
||||
mfsprg1 r0 ; \
|
||||
stw r0,4(r1) ; /* save r1 */ \
|
||||
stw r2,8(r1) ; /* save r2 */ \
|
||||
stw r3,12(r1) ; /* save r3 */ \
|
||||
stw r4,16(r1) ; \
|
||||
stw r5,20(r1) ; \
|
||||
stw r6,24(r1) ; \
|
||||
stw r7,28(r1) ; \
|
||||
stw r8,32(r1) ; \
|
||||
stw r9,36(r1) ; \
|
||||
stw r10,40(r1) ; \
|
||||
stw r11,44(r1) ; \
|
||||
stw r12,48(r1) ; \
|
||||
\
|
||||
mflr r0 ; \
|
||||
stw r0,52(r1) ; \
|
||||
mfcr r0 ; \
|
||||
stw r0,56(r1) ; \
|
||||
mfctr r0 ; \
|
||||
stw r0,60(r1) ; \
|
||||
mfxer r0 ; \
|
||||
stw r0,64(r1) ; \
|
||||
\
|
||||
/* 76(r1) unused */ \
|
||||
addi r1,r1,-16 ; /* call conventions uses 0(r1) and 4(r1)... */
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
@@ -86,12 +84,15 @@ GLOBL(_start):
|
||||
li r0,0
|
||||
mtmsr r0
|
||||
|
||||
LOADI r1,estack
|
||||
lis r1,HA(estack)
|
||||
addi r1,r1,LO(estack)
|
||||
mtsprg0 r1 // setup exception stack
|
||||
LOADI r1,stack
|
||||
lis r1,HA(stack)
|
||||
addi r1,r1,LO(stack)
|
||||
|
||||
// copy exception vectors
|
||||
LOADI r3,__vectors
|
||||
lis r3,HA(__vectors)
|
||||
addi r3,r3,LO(__vectors)
|
||||
li r4,0
|
||||
li r5,__vectors_end - __vectors + 16
|
||||
rlwinm r5,r5,0,0,28
|
||||
@@ -136,17 +137,21 @@ GLOBL(call_elf):
|
||||
stwu r1,-16(r1)
|
||||
stw r0,20(r1)
|
||||
mtlr r3
|
||||
LOADI r8,saved_stack // save our stack pointer
|
||||
lis r8,HA(saved_stack)
|
||||
addi r8,r8,LO(saved_stack) // save our stack pointer
|
||||
stw r1,0(r8)
|
||||
LOADI r1,client_stack
|
||||
LOADI r5,of_client_callback // r5 = callback
|
||||
lis r1,HA(client_stack)
|
||||
addi r1,r1,LO(client_stack)
|
||||
lis r5,HA(of_client_callback)
|
||||
addi r5,r5,LO(of_client_callback) // r5 = callback
|
||||
li r6,0 // r6 = address of client program arguments (unused)
|
||||
li r7,0 // r7 = length of client program arguments (unused)
|
||||
li r0,MSR_FP | MSR_ME | MSR_DR | MSR_IR
|
||||
mtmsr r0
|
||||
blrl
|
||||
|
||||
LOADI r8,saved_stack // restore stack pointer
|
||||
lis r8,HA(saved_stack)
|
||||
addi r8,r8,LO(saved_stack) // restore stack pointer
|
||||
mr r1,r8
|
||||
lwz r0,20(r1)
|
||||
mtlr r0
|
||||
@@ -156,7 +161,8 @@ GLOBL(call_elf):
|
||||
blr
|
||||
|
||||
GLOBL(of_client_callback):
|
||||
LOADI r4,saved_stack
|
||||
lis r4,HA(saved_stack)
|
||||
addi r4,r4,LO(saved_stack)
|
||||
lwz r4,0(r4)
|
||||
stwu r4,-32(r4)
|
||||
mflr r5
|
||||
@@ -191,8 +197,10 @@ GLOBL(of_rtas_start):
|
||||
/* r3 = argument buffer, r4 = of_rtas_start */
|
||||
/* according to the CHRP standard, cr must be preserved (cr0/cr1 too?) */
|
||||
mr r6,r3
|
||||
LOADI r3,OSI_SC_MAGIC_R3
|
||||
LOADI r4,OSI_SC_MAGIC_R4
|
||||
lis r3,HA(OSI_SC_MAGIC_R3)
|
||||
addi r3,r3,LO(OSI_SC_MAGIC_R3)
|
||||
lis r4,HA(OSI_SC_MAGIC_R4)
|
||||
addi r4,r4,LO(OSI_SC_MAGIC_R4)
|
||||
li r5,OSI_OF_RTAS
|
||||
sc
|
||||
blr
|
||||
@@ -203,7 +211,8 @@ GLOBL(of_rtas_end):
|
||||
GLOBL(nw_dec_calibration):
|
||||
.long 0
|
||||
GLOBL(timer_calib_start):
|
||||
LOADI r3,nw_dec_calibration
|
||||
lis r3,HA(nw_dec_calibration)
|
||||
addi r3,r3,LO(nw_dec_calibration)
|
||||
lwz r3,0(r3)
|
||||
blr
|
||||
GLOBL(timer_calib_end):
|
||||
@@ -254,14 +263,16 @@ ILLEGAL_VECTOR( 0x200 )
|
||||
|
||||
VECTOR( 0x300, "DSI" ):
|
||||
EXCEPTION_PREAMBLE
|
||||
LOADI r3,dsi_exception
|
||||
lis r3,HA(dsi_exception)
|
||||
addi r3,r3,LO(dsi_exception)
|
||||
mtctr r3
|
||||
bctrl
|
||||
b exception_return
|
||||
|
||||
VECTOR( 0x400, "ISI" ):
|
||||
EXCEPTION_PREAMBLE
|
||||
LOADI r3,isi_exception
|
||||
lis r3,HA(isi_exception)
|
||||
addi r3,r3,LO(isi_exception)
|
||||
mtctr r3
|
||||
bctrl
|
||||
b exception_return
|
||||
|
||||
Reference in New Issue
Block a user