14764c05fSLaurent Vivier #ifndef _ASMPOWERPC_PPC_ASM_H 24764c05fSLaurent Vivier #define _ASMPOWERPC_PPC_ASM_H 34764c05fSLaurent Vivier 44764c05fSLaurent Vivier #define LOAD_REG_IMMEDIATE(reg,expr) \ 54764c05fSLaurent Vivier lis reg,(expr)@highest; \ 64764c05fSLaurent Vivier ori reg,reg,(expr)@higher; \ 74764c05fSLaurent Vivier rldicr reg,reg,32,31; \ 84764c05fSLaurent Vivier oris reg,reg,(expr)@h; \ 94764c05fSLaurent Vivier ori reg,reg,(expr)@l; 104764c05fSLaurent Vivier 114764c05fSLaurent Vivier #define LOAD_REG_ADDR(reg,name) \ 124764c05fSLaurent Vivier ld reg,name@got(r2) 134764c05fSLaurent Vivier 14*f1ccf5d2SLaurent Vivier #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ 15*f1ccf5d2SLaurent Vivier 16*f1ccf5d2SLaurent Vivier #define FIXUP_ENDIAN 17*f1ccf5d2SLaurent Vivier 18*f1ccf5d2SLaurent Vivier #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ 19*f1ccf5d2SLaurent Vivier 20*f1ccf5d2SLaurent Vivier #define FIXUP_ENDIAN \ 21*f1ccf5d2SLaurent Vivier .long 0x05000048; /* bl . + 4 */ \ 22*f1ccf5d2SLaurent Vivier .long 0xa602487d; /* mflr r10 */ \ 23*f1ccf5d2SLaurent Vivier .long 0x20004a39; /* addi r10,r10,32 */ \ 24*f1ccf5d2SLaurent Vivier .long 0xa600607d; /* mfmsr r11 */ \ 25*f1ccf5d2SLaurent Vivier .long 0x01006b69; /* xori r11,r11,1 */ \ 26*f1ccf5d2SLaurent Vivier .long 0xa6035a7d; /* mtsrr0 r10 */ \ 27*f1ccf5d2SLaurent Vivier .long 0xa6037b7d; /* mtsrr1 r11 */ \ 28*f1ccf5d2SLaurent Vivier .long 0x2400004c; /* rfid */ \ 29*f1ccf5d2SLaurent Vivier .long 0x00000048; /* b . */ \ 30*f1ccf5d2SLaurent Vivier 31*f1ccf5d2SLaurent Vivier #endif /* __BYTE_ORDER__ */ 32*f1ccf5d2SLaurent Vivier 334764c05fSLaurent Vivier #endif /* _ASMPOWERPC_PPC_ASM_H */ 34