GNU PROLOG with UTF8 support
mach.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------*
2  * Prolog To Wam Compiler INRIA Rocquencourt - CLoE Project *
3  * C Run-time Daniel Diaz - 1994 *
4  * *
5  * Machine Dependent Features - Header file *
6  * *
7  * machine.h *
8  *-------------------------------------------------------------------------*/
9 
10 /*---------------------------------*
11  * Asm Labels, Symbols and Gotos *
12  *---------------------------------*/
13 
14 #if defined(M_sony_news) || defined(M_ultrix_dec) || defined(M_alpha_osf) ||\
15  defined(M_ix86_linux) || defined(M_ix86_sco) || defined(M_ix86_bsd) ||\
16  defined(M_x86_64_linux) || defined(m_x86_64_bsd) || \
17  defined(M_powerpc_bsd) || defined(M_sparc_bsd) || defined(__ELF__)
18 
19 # define M_Asm_Symbol1(name) #name
20 # define M_Asm_Symbol(name) M_Asm_Symbol1(name)
21 
22 #elif defined (M_ix86_win32)
23 
24 # define M_Asm_Symbol1(name) _##name
25 # define M_Asm_Symbol(name) M_Asm_Symbol1(name)
26 
27 #else
28 
29 # define M_Asm_Symbol1(name) "_"#name
30 # define M_Asm_Symbol(name) M_Asm_Symbol1(name)
31 
32 #endif
33 
34 
35 
36 #if defined(M_ix86_win32)
37 
38 #define M_Indirect_Goto(p_lab) {register long adr=(long) p_lab; _asm jmp adr}
39 
40 #else
41 
42 #define M_Indirect_Goto(p_lab) {goto *(void*) p_lab;}
43 
44 #endif
45 
46 
47 #if defined(M_sparc_sunos) || defined(M_ultrix_dec) || \
48  defined(M_sony_news) || defined(M_hppa_NeXT)
49 
50 # define M_Direct_Goto(lab) {lab(); return;}
51 
52 
53 #elif defined(M_alpha_osf)
54 
55 # define M_Direct_Goto(lab) {asm("lda $28," M_Asm_Symbol(lab)); \
56  asm("jmp $31,($28)," M_Asm_Symbol(lab));\
57  return;}
58 
59 #elif defined(M_ix86) && defined(__GNUC__)
60 
61 # define M_Direct_Goto(lab) {asm("jmp " M_Asm_Symbol(lab)); return;}
62 
63 #elif defined(_MSC_VER)
64 
65 # define M_Direct_Goto(lab) {_asm {jmp M_Asm_Symbol(lab)}; return;}
66 
67 #elif defined(M_x86_64_linux) || defined(M_x86_64_solaris) || defined(M_x86_64_bsd)
68 
69 # define M_Direct_Goto(lab) {asm("jmp " M_Asm_Symbol(lab)); return;}
70 
71 #elif defined(M_powerpc_linux) || defined(M_powerpc_bsd)
72 
73 # define M_Direct_Goto(lab) {asm("b " M_Asm_Symbol(lab)); return;}
74 
75 #elif defined(M_m68k_NeXT)
76 
77 # define M_Direct_Goto(lab) {asm("jmp " M_Asm_Symbol(lab)); return;}
78 
79 #endif
80 
81 
82 
83 
84 /*---------------------------------*
85  * WAM *
86  *---------------------------------*/
87 
88 #if 0
89 
90 #if defined(M_ix86)
91 
92 register WamWord *reg_bank asm("ebx");
93 
94 #elif defined(M_powerpc)
95 
96 register WamWord *reg_bank asm("r31");
97 
98 #elif defined(M_x86_64)
99 
100 register WamWord *reg_bank asm("r12");
101 
102 #else
103 
104 WamWord *reg_bank;
105 
106 #endif
107 
108 #endif
109 
110 
long WamWord
Definition: LINUX_SIGSEGV.c:4