Previous 15994 Revisions Next

r786 Friday 3rd August, 2007 at 01:13:06 UTC by R. Belmont
[SDLMESS] Fixes for PS3 compilation.
[src/osd/sdl]osd_cpu.h sdlwork.c

src/osd/sdl/osd_cpu.h
r785r786
118118}
119119#define fixed_mul_shift _fixed_mul_shift
120120
121#elif defined(__ppc__) || defined(__ppc64__)
121#elif defined(__ppc__) || defined(__ppc64__) || defined(__PPC__) || defined(__PPC64__)
122122
123123INLINE UINT32 _count_leading_zeros(UINT32 value)
124124{
125125   UINT32 result;
126126
127127   __asm__ (
128      "cntlzw %0,%1 @"
128      " cntlzw %0,%1 \n"
129129      : "=r" (result)      /* result can be in any register */
130130      : "r" (value)      /* 'value' can be in any register */
131131   );
r785r786
139139   UINT32 result;
140140
141141   __asm__ (
142      "not %0,%1 @"
143      "cntlzw %0,%0 @"
142      " not %0,%1 \n"
143      " cntlzw %0,%0 \n"
144144      : "=r" (result)      /* result can be in any register */
145145      : "r" (value)      /* 'value' can be in any register */
146146   );
r785r786
149149}
150150#define count_leading_ones _count_leading_ones
151151
152#ifdef __ppc64__
152#if defined(__ppc64__) || defined(__PPC64__)
153153
154154INLINE INT32 _fixed_mul_shift(INT32 val1, INT32 val2, UINT8 shift)
155155{
156156   INT32 result;
157157
158158   __asm__ (
159      "mulld %0,%1,%2 @"
160      "srd %0,%0,%3 @"
159      " mulld %0,%1,%2 \n"
160      " srd %0,%0,%3 \n"
161161     : "=&r" (result)         /* result can go in any register */
162162     : "%r" (val1)            /* any register, can swap with val2 */
163163      "r" (val2)            /* any register */
r785r786
175175   INT32 result;
176176
177177   __asm__ (
178      "mullw  %0,%2,%3   @"
179      "mulhw  %2,%2,%3   @"
180      "srw    %0,%0,%1   @"
181      "subfic %1,%1,0x20 @"
182      "slw    %2,%2,%1   @"
183      "or     %0,%0,%2   @"
178      " mullw  %0,%2,%3   \n"
179      " mulhw  %2,%2,%3   \n"
180      " srw    %0,%0,%1   \n"
181      " subfic %1,%1,0x20 \n"
182      " slw    %2,%2,%1   \n"
183      " or     %0,%0,%2   \n"
184184     : "=&r" (result),
185185      "+r" (shift),
186186      "+r" (val1)
src/osd/sdl/sdlwork.c
r785r786
133133   return ret;
134134}
135135
136#elif defined(__ppc64__)
136#elif defined(__ppc64__) || defined(__PPC64__)
137137
138138INLINE void * compare_exchange_pointer(void * volatile *ptr, void *exchange, void *compare)
139139{
140140   register void *ret;
141141   __asm__ __volatile__ (
142      "1: sync @"
143      " ldarx %[ret], 0, %[ptr] @"
144      " cmpd %[compare], %[ret] @"
145      " bne 2f @"
146      " stdcx. %[exchange], 0, %[ptr] @"
147      " bne-- 1b @"
148      " sync @"
142      "1: sync \n"
143      " ldarx %[ret], 0, %[ptr] \n"
144      " cmpd %[compare], %[ret] \n"
145      " bne 2f \n"
146      " stdcx. %[exchange], 0, %[ptr] \n"
147      " bne-- 1b \n"
148      " sync \n"
149149      "2: "
150150      : [ret] "=&r" (ret)
151151      : [ptr] "r" (ptr)
r785r786
160160{
161161   register long ret;
162162   __asm__ __volatile__ (
163      "1: sync @"
164      " ldarx %[ret], 0, %[addend] @"
165      " addi %[ret], %[ret], 1 @"
166      " stdcx. %[ret], 0, %[addend] @"
167      " bne-- 1b @"
168      " sync @"
163      "1: sync \n"
164      " ldarx %[ret], 0, %[addend] \n"
165      " addi %[ret], %[ret], 1 \n"
166      " stdcx. %[ret], 0, %[addend] \n"
167      " bne-- 1b \n"
168      " sync \n"
169169      : [ret] "=&b" (ret)
170170      : [addend] "r" (addend)
171171      : "%cc"
r785r786
177177{
178178   register long ret;
179179   __asm__ __volatile__ (
180      "1: sync @"
181      " ldarx %[ret], 0, %[addend] @"
182      " addi %[ret], %[ret], -1 @"
183      " stdcx. %[ret], 0, %[addend] @"
184      " bne-- 1b @"
185      " sync @"
180      "1: sync \n"
181      " ldarx %[ret], 0, %[addend] \n"
182      " addi %[ret], %[ret], -1 \n"
183      " stdcx. %[ret], 0, %[addend] \n"
184      " bne-- 1b \n"
185      " sync \n"
186186      : [ret] "=&b" (ret)
187187      : [addend] "r" (addend)
188188      : "%cc"
r785r786
190190   return ret;
191191}
192192
193#elif defined(__ppc__)
193#elif defined(__ppc__) || defined(__PPC__)
194194
195195INLINE void * compare_exchange_pointer(void * volatile *ptr, void *exchange, void *compare)
196196{
197197   register void *ret;
198198   __asm__ __volatile__ (
199      "1: sync @"
200      " lwarx %[ret], 0, %[ptr] @"
201      " cmpw %[compare], %[ret] @"
202      " bne 2f @"
203      " stwcx. %[exchange], 0, %[ptr] @"
204      " bne- 1b @"
205      " sync @"
199      "1: sync \n"
200      " lwarx %[ret], 0, %[ptr] \n"
201      " cmpw %[compare], %[ret] \n"
202      " bne 2f \n"
203      " stwcx. %[exchange], 0, %[ptr] \n"
204      " bne- 1b \n"
205      " sync \n"
206206      "2: "
207207      : [ret] "=&r" (ret)
208208      : [ptr] "r" (ptr)
r785r786
217217{
218218   register long ret;
219219   __asm__ __volatile__ (
220      "1: sync @"
221      " lwarx %[ret], 0, %[addend] @"
222      " addi %[ret], %[ret], 1 @"
223      " stwcx. %[ret], 0, %[addend] @"
224      " bne- 1b @"
225      " sync @"
220      "1: sync \n"
221      " lwarx %[ret], 0, %[addend] \n"
222      " addi %[ret], %[ret], 1 \n"
223      " stwcx. %[ret], 0, %[addend] \n"
224      " bne- 1b \n"
225      " sync \n"
226226      : [ret] "=&b" (ret)
227227      : [addend] "r" (addend)
228228      : "%cc"
r785r786
234234{
235235   register long ret;
236236   __asm__ __volatile__ (
237      "1: sync @"
238      " lwarx %[ret], 0, %[addend] @"
239      " addi %[ret], %[ret], -1 @"
240      " stwcx. %[ret], 0, %[addend] @"
241      " bne- 1b @"
242      " sync @"
237      "1: sync \n"
238      " lwarx %[ret], 0, %[addend] \n"
239      " addi %[ret], %[ret], -1 \n"
240      " stwcx. %[ret], 0, %[addend] \n"
241      " bne- 1b \n"
242      " sync \n"
243243      : [ret] "=&b" (ret)
244244      : [addend] "r" (addend)
245245      : "%cc"

Previous 15994 Revisions Next


© 1998-2018 The MESS Team