1 /* asmmacro.h: Assembler macros. 2 * 3 * Copyright (C) 1996 David S. Miller (davem@caipfs.rutgers.edu) 4 */ 5 6 #ifndef _SPARC_ASMMACRO_H 7 #define _SPARC_ASMMACRO_H 8 9 #include <asm/btfixup.h> 10 #include <asm/asi.h> 11 12 #define GET_PROCESSOR4M_ID(reg) \ 13 rd %tbr, %reg; \ 14 srl %reg, 12, %reg; \ 15 and %reg, 3, %reg; 16 17 #define GET_PROCESSOR4D_ID(reg) \ 18 lda [%g0] ASI_M_VIKING_TMP1, %reg; 19 20 /* All trap entry points _must_ begin with this macro or else you 21 * lose. It makes sure the kernel has a proper window so that 22 * c-code can be called. 23 */ 24 #define SAVE_ALL_HEAD \ 25 sethi %hi(trap_setup), %l4; \ 26 jmpl %l4 + %lo(trap_setup), %l6; 27 #define SAVE_ALL \ 28 SAVE_ALL_HEAD \ 29 nop; 30 31 /* All traps low-level code here must end with this macro. */ 32 #define RESTORE_ALL b ret_trap_entry; clr %l6; 33 34 /* sun4 probably wants half word accesses to ASI_SEGMAP, while sun4c+ 35 likes byte accesses. These are to avoid ifdef mania. */ 36 37 #define lduXa lduba 38 #define stXa stba 39 40 #endif /* !(_SPARC_ASMMACRO_H) */ 41