xref: /netbsd/sys/arch/mips/include/endian_machdep.h (revision 6550d01e)
1 /*	$NetBSD: endian_machdep.h,v 1.2 2009/12/14 00:46:04 matt Exp $	*/
2 
3 #ifndef _BYTE_ORDER
4 # error  Define MIPS target CPU endian-ness in port-specific header file.
5 #endif
6 
7 #ifdef _LOCORE
8 
9 /*
10  *   Endian-independent assembly-code aliases for unaligned memory accesses.
11  */
12 #if _BYTE_ORDER == _LITTLE_ENDIAN
13 # define LWHI lwr
14 # define LWLO lwl
15 # define SWHI swr
16 # define SWLO swl
17 # if SZREG == 4
18 #  define REG_LHI   lwr
19 #  define REG_LLO   lwl
20 #  define REG_SHI   swr
21 #  define REG_SLO   swl
22 # else
23 #  define REG_LHI   ldr
24 #  define REG_LLO   ldl
25 #  define REG_SHI   sdr
26 #  define REG_SLO   sdl
27 # endif
28 #endif
29 
30 #if _BYTE_ORDER == _BIG_ENDIAN
31 # define LWHI lwl
32 # define LWLO lwr
33 # define SWHI swl
34 # define SWLO swr
35 # if SZREG == 4
36 #  define REG_LHI   lwl
37 #  define REG_LLO   lwr
38 #  define REG_SHI   swl
39 #  define REG_SLO   swr
40 # else
41 #  define REG_LHI   ldl
42 #  define REG_LLO   ldr
43 #  define REG_SHI   sdl
44 #  define REG_SLO   sdr
45 # endif
46 #endif
47 
48 #endif /* LOCORE */
49