blob: 52a42dfbe174b6291957f799a86c1ddb81ba5a3a [file] [log] [blame]
#ifndef _ASMPOWERPC_PPC_ASM_H
#define _ASMPOWERPC_PPC_ASM_H
#include <asm/asm-offsets.h>
#include <asm/reg.h>
#define SAVE_GPR(n, base) std n,GPR0+8*(n)(base)
#define REST_GPR(n, base) ld n,GPR0+8*(n)(base)
#define LOAD_REG_IMMEDIATE(reg,expr) \
lis reg,(expr)@highest; \
ori reg,reg,(expr)@higher; \
rldicr reg,reg,32,31; \
oris reg,reg,(expr)@h; \
ori reg,reg,(expr)@l;
#define LOAD_REG_ADDR(reg,name) \
ld reg,name@got(r2)
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#define FIXUP_ENDIAN
#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define FIXUP_ENDIAN \
.long 0x05000048; /* bl . + 4 */ \
.long 0xa602487d; /* mflr r10 */ \
.long 0x20004a39; /* addi r10,r10,32 */ \
.long 0xa600607d; /* mfmsr r11 */ \
.long 0x01006b69; /* xori r11,r11,1 */ \
.long 0xa6035a7d; /* mtsrr0 r10 */ \
.long 0xa6037b7d; /* mtsrr1 r11 */ \
.long 0x2400004c; /* rfid */ \
.long 0x00000048; /* b . */ \
#endif /* __BYTE_ORDER__ */
#endif /* _ASMPOWERPC_PPC_ASM_H */