ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/Unix/ppc_asm.tmpl
Revision: 1.5
Committed: 2005-02-27T21:52:06Z (19 years, 8 months ago) by gbeauche
Branch: MAIN
Changes since 1.4: +25 -0 lines
Log Message:
Fix native Linux/ppc with recent enough glibc that supports TLS; r2 is used
in that case. Tell me if I broke other arches, e.g. r13 is no longer saved
in Video and Ethernet stubs, though it seems to be OK.

Colateral feature: SheepShaver should now run on Linux/ppc64 with relevant
32-bit runtime. Native Linux/ppc64 support is harder as low mem globals are
32-bit in mind and e.g. the TLS register there is %r13, %r2 is the TOC
(PowerOpen/AIX ABI)

File Contents

# User Rev Content
1 gbeauche 1.5 /* Define usage of "reserved" registers */
2     #if defined(__linux__)
3     #define SYSTEM_CLOBBERS_R2 1 /* Pointer to Thread Local Storage */
4     #define SYSTEM_CLOBBERS_R13 1 /* Pointer to .sdata section */
5     #endif
6    
7     #ifdef __ASSEMBLY__
8     /* Helper macros */
9     #ifdef SYSTEM_CLOBBERS_R2
10     #define RESTORE_SYSTEM_R2 lwz r2,XLM_TOC(0)
11     #define SAVE_SYSTEM_R2 stw r2,XLM_TOC(0)
12     #else
13     #define RESTORE_SYSTEM_R2
14     #define SAVE_SYSTEM_R2
15     #endif
16     #ifdef SYSTEM_CLOBBERS_R13
17     #define RESTORE_SYSTEM_R13 lwz r13,XLM_R13(0)
18     #define SAVE_SYSTEM_R13 stw r13,XLM_R13(0)
19     #else
20     #define RESTORE_SYSTEM_R13
21     #define SAVE_SYSTEM_R13
22     #endif
23    
24     /* Apple assembler perticularities */
25 gbeauche 1.2 #if (defined(__APPLE__) && defined(__MACH__))
26 gbeauche 1.3 #define C_SYMBOL_NAME(NAME) _ ## NAME
27     #define ASM_MACRO_END .endmacro
28     #endif
29    
30     /* Defaults for GNU assembler */
31     #ifndef ASM_MACRO_START
32     #define ASM_MACRO_START .macro
33     #endif
34     #ifndef ASM_MACRO_END
35     #define ASM_MACRO_END .endm
36 gbeauche 1.2 #endif
37     #ifndef C_SYMBOL_NAME
38 gbeauche 1.3 #define C_SYMBOL_NAME(NAME) NAME
39 gbeauche 1.2 #endif
40     #ifndef ASM_GLOBAL_DIRECTIVE
41 gbeauche 1.3 #define ASM_GLOBAL_DIRECTIVE .globl
42 gbeauche 1.2 #endif
43    
44 cebix 1.1 /* Register names */
45 gbeauche 1.4 #if defined(__linux__) || defined(__NetBSD__)
46 cebix 1.1 #define r0 0
47     #define r1 1
48     #define r2 2
49     #define r3 3
50     #define r4 4
51     #define r5 5
52     #define r6 6
53     #define r7 7
54     #define r8 8
55     #define r9 9
56     #define r10 10
57     #define r11 11
58     #define r12 12
59     #define r13 13
60     #define r14 14
61     #define r15 15
62     #define r16 16
63     #define r17 17
64     #define r18 18
65     #define r19 19
66     #define r20 20
67     #define r21 21
68     #define r22 22
69     #define r23 23
70     #define r24 24
71     #define r25 25
72     #define r26 26
73     #define r27 27
74     #define r28 28
75     #define r29 29
76     #define r30 30
77     #define r31 31
78 gbeauche 1.2 #endif
79 cebix 1.1
80 gbeauche 1.4 #if defined(__linux__) || defined(__NetBSD__)
81 cebix 1.1 #define f0 0
82     #define f1 1
83     #define f2 2
84     #define f3 3
85     #define f4 4
86     #define f5 5
87     #define f6 6
88     #define f7 7
89     #define f8 8
90     #define f9 9
91     #define f10 10
92     #define f11 11
93     #define f12 12
94     #define f13 13
95     #define f14 14
96     #define f15 15
97     #define f16 16
98     #define f17 17
99     #define f18 18
100     #define f19 19
101     #define f20 20
102     #define f21 21
103     #define f22 22
104     #define f23 23
105     #define f24 24
106     #define f25 25
107     #define f26 26
108     #define f27 27
109     #define f28 28
110     #define f29 29
111     #define f30 30
112     #define f31 31
113 gbeauche 1.2 #endif
114 gbeauche 1.5 #endif