[PATCH] powerpc: Cleanup LOADADDR etc. asm macros
This patch consolidates the variety of macros used for loading 32 or 64-bit constants in assembler (LOADADDR, LOADBASE, SET_REG_TO_*). The idea is to make the set of macros consistent across 32 and 64 bit and to make it more obvious which is the appropriate one to use in a given situation. The new macros and their semantics are described in the comments in ppc_asm.h. In the process, we change several places that were unnecessarily using immediate loads on ppc64 to use the GOT/TOC. Likewise we cleanup a couple of places where we were clumsily subtracting PAGE_OFFSET with asm instructions to use assemble-time arithmetic or the toreal() macro instead. Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:

committed by
Paul Mackerras

parent
7e78e5e502
commit
e58c3495e6
@@ -39,7 +39,7 @@ _GLOBAL(reloc_offset)
|
||||
mflr r0
|
||||
bl 1f
|
||||
1: mflr r3
|
||||
LOADADDR(r4,1b)
|
||||
LOAD_REG_IMMEDIATE(r4,1b)
|
||||
subf r3,r4,r3
|
||||
mtlr r0
|
||||
blr
|
||||
@@ -51,7 +51,7 @@ _GLOBAL(add_reloc_offset)
|
||||
mflr r0
|
||||
bl 1f
|
||||
1: mflr r5
|
||||
LOADADDR(r4,1b)
|
||||
LOAD_REG_IMMEDIATE(r4,1b)
|
||||
subf r5,r4,r5
|
||||
add r3,r3,r5
|
||||
mtlr r0
|
||||
@@ -498,15 +498,15 @@ _GLOBAL(identify_cpu)
|
||||
*/
|
||||
_GLOBAL(do_cpu_ftr_fixups)
|
||||
/* Get CPU 0 features */
|
||||
LOADADDR(r6,cur_cpu_spec)
|
||||
LOAD_REG_IMMEDIATE(r6,cur_cpu_spec)
|
||||
sub r6,r6,r3
|
||||
ld r4,0(r6)
|
||||
sub r4,r4,r3
|
||||
ld r4,CPU_SPEC_FEATURES(r4)
|
||||
/* Get the fixup table */
|
||||
LOADADDR(r6,__start___ftr_fixup)
|
||||
LOAD_REG_IMMEDIATE(r6,__start___ftr_fixup)
|
||||
sub r6,r6,r3
|
||||
LOADADDR(r7,__stop___ftr_fixup)
|
||||
LOAD_REG_IMMEDIATE(r7,__stop___ftr_fixup)
|
||||
sub r7,r7,r3
|
||||
/* Do the fixup */
|
||||
1: cmpld r6,r7
|
||||
|
Reference in New Issue
Block a user