1 /*  This file was based on the modified setjmp.S performed by
2  *  Joel Sherill (joel@OARcorp.com) which specified the use
3  *  of the __USER_LABEL_PREFIX__ and __REGISTER_PREFIX__ macros.
4  **
5  ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
6  ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  */
8 
9 /* These are predefined by new versions of GNU cpp.  */
10 
11 #ifndef __USER_LABEL_PREFIX__
12 #define __USER_LABEL_PREFIX__ _
13 #endif
14 
15 #define __REG_PREFIX__ %
16 
17 /* ANSI concatenation macros.  */
18 
19 #define CONCAT1(a, b) CONCAT2(a, b)
20 #define CONCAT2(a, b) a##b
21 
22 /* Use the right prefix for global labels.  */
23 
24 #define SYM(x) CONCAT1(__USER_LABEL_PREFIX__, x)
25 
26 /* Use the right prefix for registers.  */
27 
28 #define REG(x) CONCAT1(__REG_PREFIX__, x)
29 
30 #define eax REG(eax)
31 #define ebx REG(ebx)
32 #define ecx REG(ecx)
33 #define edx REG(edx)
34 #define esi REG(esi)
35 #define edi REG(edi)
36 #define ebp REG(ebp)
37 #define esp REG(esp)
38 
39 #define st0 REG(st)
40 #define st1 REG(st(1))
41 #define st2 REG(st(2))
42 #define st3 REG(st(3))
43 #define st4 REG(st(4))
44 #define st5 REG(st(5))
45 #define st6 REG(st(6))
46 #define st7 REG(st(7))
47 
48 #define ax REG(ax)
49 #define bx REG(bx)
50 #define cx REG(cx)
51 #define dx REG(dx)
52 
53 #define ah REG(ah)
54 #define bh REG(bh)
55 #define ch REG(ch)
56 #define dh REG(dh)
57 
58 #define al REG(al)
59 #define bl REG(bl)
60 #define cl REG(cl)
61 #define dl REG(dl)
62 
63 #define mm1 REG(mm1)
64 #define mm2 REG(mm2)
65 #define mm3 REG(mm3)
66 #define mm4 REG(mm4)
67 #define mm5 REG(mm5)
68 #define mm6 REG(mm6)
69 #define mm7 REG(mm7)
70 
71 #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
72 #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
73 #else
74 #define SOTYPE_FUNCTION(sym)
75 #endif
76 
77 #ifdef _I386MACH_ALLOW_HW_INTERRUPTS
78 #define        __CLI
79 #define        __STI
80 #else
81 #define __CLI  cli
82 #define __STI  sti
83 #endif
84