summaryrefslogtreecommitdiffstats
path: root/lib/libsetjmp/sh/asm.h
blob: db30b149b5a623bee4c04b52a12e9c32858eca87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifdef __STDC__
# define _C_LABEL(x)    _ ## x
#else
# define _C_LABEL(x)    _/**/x
#endif
#define _ASM_LABEL(x)   x

#if __SH5__
# if __SH5__ == 32 && __SHMEDIA__
#  define TEXT .section .text..SHmedia32, "ax"
# else
#  define TEXT .text
# endif

# define _ENTRY(name)	\
	TEXT; .balign 8; .globl name; name:
#else
#define _ENTRY(name)	\
	.text; .align 2; .globl name; name:
#endif /* __SH5__ */

#define ENTRY(name)	\
	_ENTRY(_C_LABEL(name))

#if (defined (__sh2__) || defined (__SH2E__) || defined (__sh3__) || defined (__SH3E__) \
     || defined (__SH4_SINGLE__) || defined (__SH4__)) \
     || defined (__SH4_SINGLE_ONLY__) || defined (__SH5__) || defined (__SH2A__)
#define DELAYED_BRANCHES
#define SL(branch, dest, in_slot, in_slot_arg2) \
	branch##.s dest; in_slot, in_slot_arg2
#else
#define SL(branch, dest, in_slot, in_slot_arg2) \
	in_slot, in_slot_arg2; branch dest
#endif

#ifdef __LITTLE_ENDIAN__
#define SHHI shlld
#define SHLO shlrd
#else
#define SHHI shlrd
#define SHLO shlld
#endif