1 #ifndef _ASMPOWERPC_PPC_ASM_H 2 #define _ASMPOWERPC_PPC_ASM_H 3 4 #include <asm/asm-offsets.h> 5 #include <asm/reg.h> 6 7 #define SAVE_GPR(n, base) std n,GPR0+8*(n)(base) 8 #define REST_GPR(n, base) ld n,GPR0+8*(n)(base) 9 10 #define LOAD_REG_IMMEDIATE(reg,expr) \ 11 lis reg,(expr)@highest; \ 12 ori reg,reg,(expr)@higher; \ 13 rldicr reg,reg,32,31; \ 14 oris reg,reg,(expr)@h; \ 15 ori reg,reg,(expr)@l; 16 17 #define LOAD_REG_ADDR(reg,name) \ 18 ld reg,name@got(r2) 19 20 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ 21 22 #define FIXUP_ENDIAN 23 24 #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ 25 26 #define FIXUP_ENDIAN \ 27 .long 0x05000048; /* bl . + 4 */ \ 28 .long 0xa602487d; /* mflr r10 */ \ 29 .long 0x20004a39; /* addi r10,r10,32 */ \ 30 .long 0xa600607d; /* mfmsr r11 */ \ 31 .long 0x01006b69; /* xori r11,r11,1 */ \ 32 .long 0xa6035a7d; /* mtsrr0 r10 */ \ 33 .long 0xa6037b7d; /* mtsrr1 r11 */ \ 34 .long 0x2400004c; /* rfid */ \ 35 .long 0x00000048; /* b . */ \ 36 37 #endif /* __BYTE_ORDER__ */ 38 39 #endif /* _ASMPOWERPC_PPC_ASM_H */ 40