2005-02-27 21:52:06 +00:00
|
|
|
/* Define usage of "reserved" registers */
|
|
|
|
#if defined(__linux__)
|
|
|
|
#define SYSTEM_CLOBBERS_R2 1 /* Pointer to Thread Local Storage */
|
|
|
|
#define SYSTEM_CLOBBERS_R13 1 /* Pointer to .sdata section */
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __ASSEMBLY__
|
|
|
|
/* Helper macros */
|
|
|
|
#ifdef SYSTEM_CLOBBERS_R2
|
|
|
|
#define RESTORE_SYSTEM_R2 lwz r2,XLM_TOC(0)
|
|
|
|
#define SAVE_SYSTEM_R2 stw r2,XLM_TOC(0)
|
|
|
|
#else
|
|
|
|
#define RESTORE_SYSTEM_R2
|
|
|
|
#define SAVE_SYSTEM_R2
|
|
|
|
#endif
|
|
|
|
#ifdef SYSTEM_CLOBBERS_R13
|
|
|
|
#define RESTORE_SYSTEM_R13 lwz r13,XLM_R13(0)
|
|
|
|
#define SAVE_SYSTEM_R13 stw r13,XLM_R13(0)
|
|
|
|
#else
|
|
|
|
#define RESTORE_SYSTEM_R13
|
|
|
|
#define SAVE_SYSTEM_R13
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Apple assembler perticularities */
|
2004-01-18 22:08:39 +00:00
|
|
|
#if (defined(__APPLE__) && defined(__MACH__))
|
2004-01-18 22:59:06 +00:00
|
|
|
#define C_SYMBOL_NAME(NAME) _ ## NAME
|
|
|
|
#define ASM_MACRO_END .endmacro
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Defaults for GNU assembler */
|
|
|
|
#ifndef ASM_MACRO_START
|
|
|
|
#define ASM_MACRO_START .macro
|
|
|
|
#endif
|
|
|
|
#ifndef ASM_MACRO_END
|
|
|
|
#define ASM_MACRO_END .endm
|
2004-01-18 22:08:39 +00:00
|
|
|
#endif
|
|
|
|
#ifndef C_SYMBOL_NAME
|
2004-01-18 22:59:06 +00:00
|
|
|
#define C_SYMBOL_NAME(NAME) NAME
|
2004-01-18 22:08:39 +00:00
|
|
|
#endif
|
|
|
|
#ifndef ASM_GLOBAL_DIRECTIVE
|
2004-01-18 22:59:06 +00:00
|
|
|
#define ASM_GLOBAL_DIRECTIVE .globl
|
2004-01-18 22:08:39 +00:00
|
|
|
#endif
|
|
|
|
|
2002-02-04 16:58:13 +00:00
|
|
|
/* Register names */
|
2005-02-20 18:08:50 +00:00
|
|
|
#if defined(__linux__) || defined(__NetBSD__)
|
2002-02-04 16:58:13 +00:00
|
|
|
#define r0 0
|
|
|
|
#define r1 1
|
|
|
|
#define r2 2
|
|
|
|
#define r3 3
|
|
|
|
#define r4 4
|
|
|
|
#define r5 5
|
|
|
|
#define r6 6
|
|
|
|
#define r7 7
|
|
|
|
#define r8 8
|
|
|
|
#define r9 9
|
|
|
|
#define r10 10
|
|
|
|
#define r11 11
|
|
|
|
#define r12 12
|
|
|
|
#define r13 13
|
|
|
|
#define r14 14
|
|
|
|
#define r15 15
|
|
|
|
#define r16 16
|
|
|
|
#define r17 17
|
|
|
|
#define r18 18
|
|
|
|
#define r19 19
|
|
|
|
#define r20 20
|
|
|
|
#define r21 21
|
|
|
|
#define r22 22
|
|
|
|
#define r23 23
|
|
|
|
#define r24 24
|
|
|
|
#define r25 25
|
|
|
|
#define r26 26
|
|
|
|
#define r27 27
|
|
|
|
#define r28 28
|
|
|
|
#define r29 29
|
|
|
|
#define r30 30
|
|
|
|
#define r31 31
|
2004-01-18 22:08:39 +00:00
|
|
|
#endif
|
2002-02-04 16:58:13 +00:00
|
|
|
|
2005-02-20 18:08:50 +00:00
|
|
|
#if defined(__linux__) || defined(__NetBSD__)
|
2002-02-04 16:58:13 +00:00
|
|
|
#define f0 0
|
|
|
|
#define f1 1
|
|
|
|
#define f2 2
|
|
|
|
#define f3 3
|
|
|
|
#define f4 4
|
|
|
|
#define f5 5
|
|
|
|
#define f6 6
|
|
|
|
#define f7 7
|
|
|
|
#define f8 8
|
|
|
|
#define f9 9
|
|
|
|
#define f10 10
|
|
|
|
#define f11 11
|
|
|
|
#define f12 12
|
|
|
|
#define f13 13
|
|
|
|
#define f14 14
|
|
|
|
#define f15 15
|
|
|
|
#define f16 16
|
|
|
|
#define f17 17
|
|
|
|
#define f18 18
|
|
|
|
#define f19 19
|
|
|
|
#define f20 20
|
|
|
|
#define f21 21
|
|
|
|
#define f22 22
|
|
|
|
#define f23 23
|
|
|
|
#define f24 24
|
|
|
|
#define f25 25
|
|
|
|
#define f26 26
|
|
|
|
#define f27 27
|
|
|
|
#define f28 28
|
|
|
|
#define f29 29
|
|
|
|
#define f30 30
|
|
|
|
#define f31 31
|
2004-01-18 22:08:39 +00:00
|
|
|
#endif
|
2005-02-27 21:52:06 +00:00
|
|
|
#endif
|