~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-sparc/asmmacro.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 <linux/config.h>
 10 #include <asm/btfixup.h>
 11 #include <asm/asi.h>
 12 
 13 #define GET_PROCESSOR4M_ID(reg) \
 14         rd      %tbr, %reg; \
 15         srl     %reg, 12, %reg; \
 16         and     %reg, 3, %reg;
 17 
 18 #define GET_PROCESSOR4D_ID(reg) \
 19         lda     [%g0] ASI_M_VIKING_TMP1, %reg;
 20 
 21 /* Blackbox */
 22 #define GET_PROCESSOR_ID(reg) \
 23         sethi   %hi(___b_smp_processor_id), %reg; \
 24         sethi   %hi(boot_cpu_id), %reg; \
 25         ldub    [%reg + %lo(boot_cpu_id)], %reg;
 26 
 27 #define GET_PROCESSOR_MID(reg, tmp) \
 28         rd      %tbr, %reg; \
 29         sethi   %hi(C_LABEL(mid_xlate)), %tmp; \
 30         srl     %reg, 12, %reg; \
 31         or      %tmp, %lo(C_LABEL(mid_xlate)), %tmp; \
 32         and     %reg, 3, %reg; \
 33         ldub    [%tmp + %reg], %reg;
 34 
 35 #define GET_PROCESSOR_OFFSET(reg, tmp) \
 36         GET_PROCESSOR_ID(reg) \
 37         sethi   %hi(C_LABEL(cpu_offset)), %tmp; \
 38         sll     %reg, 2, %reg; \
 39         or      %tmp, %lo(C_LABEL(cpu_offset)), %tmp; \
 40         ld      [%tmp + %reg], %reg;
 41 
 42 /* All trap entry points _must_ begin with this macro or else you
 43  * lose.  It makes sure the kernel has a proper window so that
 44  * c-code can be called.
 45  */
 46 #define SAVE_ALL_HEAD \
 47         sethi   %hi(trap_setup), %l4; \
 48         jmpl    %l4 + %lo(trap_setup), %l6;
 49 #define SAVE_ALL \
 50         SAVE_ALL_HEAD \
 51          nop;
 52 
 53 /* All traps low-level code here must end with this macro. */
 54 #define RESTORE_ALL b ret_trap_entry; clr %l6;
 55 
 56 /* sun4 probably wants half word accesses to ASI_SEGMAP, while sun4c+
 57    likes byte accesses. These are to avoid ifdef mania. */
 58 
 59 #ifdef CONFIG_SUN4
 60 #define lduXa   lduha
 61 #define stXa    stha
 62 #else
 63 #define lduXa   lduba
 64 #define stXa    stba
 65 #endif
 66 
 67 #endif /* !(_SPARC_ASMMACRO_H) */
 68 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.