2005-08-08 07:24:38 +04:00
# ifndef _PPC64_PPC_ASM_H
# define _PPC64_PPC_ASM_H
/*
*
* Definitions used by various bits of low - level assembly code on PowerPC .
*
* Copyright ( C ) 1995 - 1999 Gary Thomas , Paul Mackerras , Cort Dougan .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*/
/* Condition Register Bit Fields */
# define cr0 0
# define cr1 1
# define cr2 2
# define cr3 3
# define cr4 4
# define cr5 5
# define cr6 6
# define cr7 7
/* General Purpose Registers (GPRs) */
# define r0 0
# define r1 1
# define r2 2
# define r3 3
# define r4 4
# define r5 5
# define r6 6
# define r7 7
# define r8 8
# define r9 9
# define r10 10
# define r11 11
# define r12 12
# define r13 13
# define r14 14
# define r15 15
# define r16 16
# define r17 17
# define r18 18
# define r19 19
# define r20 20
# define r21 21
# define r22 22
# define r23 23
# define r24 24
# define r25 25
# define r26 26
# define r27 27
# define r28 28
# define r29 29
# define r30 30
# define r31 31
2013-08-21 04:33:12 +04:00
# define SPRN_TBRL 268
# define SPRN_TBRU 269
2016-06-30 17:34:37 +03:00
# define SPRN_HSRR0 0x13A /* Hypervisor Save/Restore 0 */
# define SPRN_HSRR1 0x13B /* Hypervisor Save/Restore 1 */
# define MSR_LE 0x0000000000000001
2013-08-21 04:33:12 +04:00
2014-04-24 11:23:39 +04:00
# define FIXUP_ENDIAN \
2017-05-01 15:01:09 +03:00
tdi 0 , 0 , 0x48 ; /* Reverse endian of b . + 8 */ \
b $ + 44 ; /* Skip trampoline if endian is good */ \
2014-04-24 11:23:39 +04:00
. long 0xa600607d ; /* mfmsr r11 */ \
. long 0x01006b69 ; /* xori r11,r11,1 */ \
2017-05-01 15:01:09 +03:00
. long 0x00004039 ; /* li r10,0 */ \
. long 0x6401417d ; /* mtmsrd r10,1 */ \
. long 0x05009f42 ; /* bcl 20,31,$+4 */ \
. long 0xa602487d ; /* mflr r10 */ \
. long 0x14004a39 ; /* addi r10,r10,20 */ \
2014-04-24 11:23:39 +04:00
. long 0xa6035a7d ; /* mtsrr0 r10 */ \
. long 0xa6037b7d ; /* mtsrr1 r11 */ \
. long 0x2400004c /* rfid */
2017-08-08 14:58:50 +03:00
# ifdef CONFIG_PPC_8xx
# define MFTBL(dest) mftb dest
# define MFTBU(dest) mftbu dest
# else
# define MFTBL(dest) mfspr dest, SPRN_TBRL
# define MFTBU(dest) mfspr dest, SPRN_TBRU
# endif
2005-08-08 07:24:38 +04:00
# endif /* _PPC64_PPC_ASM_H */