1 /* src/vm/jit/powerpc/darwin/md-asm.h - assembler defines for PowerPC Darwin ABI
3 Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
4 R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
5 C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
6 Institut f. Computersprachen - TU Wien
8 This file is part of CACAO.
10 This program is free software; you can redistribute it and/or
11 modify it under the terms of the GNU General Public License as
12 published by the Free Software Foundation; either version 2, or (at
13 your option) any later version.
15 This program is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
25 Contact: cacao@complang.tuwien.ac.at
27 Authors: Christian Thalinger
31 $Id: md-asm.h 2963 2005-07-09 18:08:52Z twisti $
39 #include <mach/ppc/asm.h>
42 /* define register names compatible with Linux names **************************/
78 /* register defines ***********************************************************/
170 /* save and restore macros ****************************************************/
172 #define SAVE_ARGUMENT_REGISTERS(off) \
173 stw a0,(0+(off))*4(sp); \
174 stw a1,(1+(off))*4(sp); \
175 stw a2,(2+(off))*4(sp); \
176 stw a3,(3+(off))*4(sp); \
177 stw a4,(4+(off))*4(sp); \
178 stw a5,(5+(off))*4(sp); \
179 stw a6,(6+(off))*4(sp); \
180 stw a7,(7+(off))*4(sp); \
182 stfd fa0,(8+(off))*4)(sp); \
183 stfd fa1,(10+(off))*4)(sp); \
184 stfd fa2,(12+(off))*4)(sp); \
185 stfd fa3,(14+(off))*4)(sp); \
186 stfd fa4,(16+(off))*4)(sp); \
187 stfd fa5,(18+(off))*4)(sp); \
188 stfd fa6,(20+(off))*4)(sp); \
189 stfd fa7,(22+(off))*4)(sp); \
190 stfd fa8,(24+(off))*4)(sp); \
191 stfd fa9,(26+(off))*4)(sp); \
192 stfd fa10,(28+(off))*4)(sp); \
193 stfd fa11,(30+(off))*4)(sp); \
194 stfd fa12,(32+(off))*4)(sp);
196 #define RESTORE_ARGUMENT_REGISTERS(off) \
197 lwz a0,(0+(off))*4(sp); \
198 lwz a1,(1+(off))*4(sp); \
199 lwz a2,(2+(off))*4(sp); \
200 lwz a3,(3+(off))*4(sp); \
201 lwz a4,(4+(off))*4(sp); \
202 lwz a5,(5+(off))*4(sp); \
203 lwz a6,(6+(off))*4(sp); \
204 lwz a7,(7+(off))*4(sp); \
206 lfd fa0,(8+(off))*4)(sp); \
207 lfd fa1,(10+(off))*4)(sp); \
208 lfd fa2,(12+(off))*4)(sp); \
209 lfd fa3,(14+(off))*4)(sp); \
210 lfd fa4,(16+(off))*4)(sp); \
211 lfd fa5,(18+(off))*4)(sp); \
212 lfd fa6,(20+(off))*4)(sp); \
213 lfd fa7,(22+(off))*4)(sp); \
214 lfd fa8,(24+(off))*4)(sp); \
215 lfd fa9,(26+(off))*4)(sp); \
216 lfd fa10,(28+(off))*4)(sp); \
217 lfd fa11,(30+(off))*4)(sp); \
218 lfd fa12,(32+(off))*4)(sp);
221 /* Defines for darwin's old gnu assembler *************************************/
223 /* internal defines ***********************************************************/
225 #define asm_calljavafunction _asm_calljavafunction
226 #define asm_calljavafunction_int _asm_calljavafunction_int
228 #define asm_calljavafunction2 _asm_calljavafunction2
229 #define asm_calljavafunction2int _asm_calljavafunction2int
230 #define asm_calljavafunction2long _asm_calljavafunction2long
231 #define asm_calljavafunction2float _asm_calljavafunction2float
232 #define asm_calljavafunction2double _asm_calljavafunction2double
234 #define asm_call_jit_compiler _asm_call_jit_compiler
236 #define asm_handle_nat_exception _asm_handle_nat_exception
237 #define asm_handle_exception _asm_handle_exception
238 #define asm_handle_nullptr_exception _asm_handle_nullptr_exception
240 #define asm_wrapper_patcher _asm_wrapper_patcher
242 #define asm_cacheflush _asm_cacheflush
243 #define asm_initialize_thread_stack _asm_initialize_thread_stack
244 #define asm_perform_threadswitch _asm_perform_threadswitch
245 #define asm_switchstackandcall _asm_switchstackandcall
246 #define asm_criticalsections _asm_criticalsections
247 #define asm_getclassvalues_atomic _asm_getclassvalues_atomic
250 /* external defines ***********************************************************/
252 #define builtin_asm_get_exceptionptrptr _builtin_asm_get_exceptionptrptr
253 #define builtin_canstore _builtin_canstore
254 #define builtin_arraycheckcast _builtin_arraycheckcast
255 #define builtin_ldiv _builtin_ldiv
256 #define builtin_lrem _builtin_lrem
258 #if defined(USE_THREADS)
259 #define builtin_monitorexit _builtin_monitorexit
262 #define builtin_throw_exception _builtin_throw_exception
263 #define builtin_trace_exception _builtin_trace_exception
264 #define initialize_class _initialize_class
265 #define link_class _link_class
266 #define load_class_bootstrap _load_class_bootstrap
267 #define jit_compile _jit_compile
269 #define stacktrace_create_inline_stackframeinfo \
270 _stacktrace_create_inline_stackframeinfo
272 #define stacktrace_remove_stackframeinfo _stacktrace_remove_stackframeinfo
274 #if !defined(USE_THREADS) || !defined(NATIVE_THREADS)
276 #define _exceptionptr __exceptionptr
280 .globl __exceptionptr
284 #endif /* _MD_ASM_H */
288 * These are local overrides for various environment variables in Emacs.
289 * Please do not remove this and leave it at the end of the file, where
290 * Emacs will automagically detect them.
291 * ---------------------------------------------------------------------
294 * indent-tabs-mode: t