ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/Unix/Linux/asm_linux.S
(Generate patch)

Comparing SheepShaver/src/Unix/Linux/asm_linux.S (file contents):
Revision 1.1.1.1 by cebix, 2002-02-04T16:58:13Z vs.
Revision 1.8 by gbeauche, 2005-02-20T18:25:45Z

# Line 1 | Line 1
1   /*
2   *  asm_linux.S - Assembly routines
3   *
4 < *  SheepShaver (C) 1997-2002 Christian Bauer and Marc Hellwig
4 > *  SheepShaver (C) 1997-2005 Christian Bauer and Marc Hellwig
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 28 | Line 28
28   *  void *get_toc(void) - Get TOC pointer (small data pointer r13 under Linux)
29   */
30  
31 <        .globl  get_toc
32 < get_toc:
31 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(get_toc)
32 > C_SYMBOL_NAME(get_toc):
33          mr      r3,r13
34          blr
35  
# Line 38 | Line 38 | get_toc:
38   *  void *get_sp(void) - Get stack pointer
39   */
40  
41 <        .globl  get_sp
42 < get_sp:
41 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(get_sp)
42 > C_SYMBOL_NAME(get_sp):
43          mr      r3,r1
44          blr
45  
# Line 48 | Line 48 | get_sp:
48   *  void set_r2(uint32 val {r3}) - Set r2
49   */
50  
51 <        .globl  set_r2
52 < set_r2:
51 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(set_r2)
52 > C_SYMBOL_NAME(set_r2):
53          mr      r2,r3
54          blr
55  
# Line 61 | Line 61 | set_r2:
61   CACHE_LINE_SIZE = 32
62   LG_CACHE_LINE_SIZE = 5
63  
64 <        .globl  flush_icache_range
65 < flush_icache_range:
64 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(flush_icache_range)
65 > C_SYMBOL_NAME(flush_icache_range):
66          li      r5,CACHE_LINE_SIZE-1
67          andc    r3,r3,r5
68          subf    r4,r3,r4
# Line 91 | Line 91 | flush_icache_range:
91   *  int test_and_set(int *var{r3}, int val{r4}) - Atomic test-and-set
92   */
93  
94 <        .globl  atomic_add
95 < atomic_add:
96 < 10:     dcbf    r0,r3
94 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(atomic_add)
95 > C_SYMBOL_NAME(atomic_add):
96 > 0:      dcbf    0,r3
97          sync
98          ori     r0,r0,1
99          ori     r0,r0,1
# Line 102 | Line 102 | atomic_add:
102          ori     r0,r0,1
103          ori     r0,r0,1
104          isync
105 <        lwarx   r5,r0,r3
105 >        lwarx   r5,0,r3
106          add     r0,r4,r5
107 <        stwcx.  r0,r0,r3
108 <        bne-    10b
107 >        stwcx.  r0,0,r3
108 >        bne-    0b
109          mr      r3,r5
110          isync
111          blr
112  
113 <        .globl  atomic_and
114 < atomic_and:
115 < 10:     dcbf    r0,r3
113 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(atomic_and)
114 > C_SYMBOL_NAME(atomic_and):
115 > 0:      dcbf    0,r3
116          sync
117          ori     r0,r0,1
118          ori     r0,r0,1
# Line 121 | Line 121 | atomic_and:
121          ori     r0,r0,1
122          ori     r0,r0,1
123          isync
124 <        lwarx   r5,r0,r3
124 >        lwarx   r5,0,r3
125          and     r0,r4,r5
126 <        stwcx.  r0,r0,r3
127 <        bne-    10b
126 >        stwcx.  r0,0,r3
127 >        bne-    0b
128          mr      r3,r5
129          isync
130          blr
131  
132 <        .globl  atomic_or
133 < atomic_or:
134 < 10:     dcbf    r0,r3
132 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(atomic_or)
133 > C_SYMBOL_NAME(atomic_or):
134 > 0:      dcbf    0,r3
135          sync
136          ori     r0,r0,1
137          ori     r0,r0,1
# Line 140 | Line 140 | atomic_or:
140          ori     r0,r0,1
141          ori     r0,r0,1
142          isync
143 <        lwarx   r5,r0,r3
143 >        lwarx   r5,0,r3
144          or      r0,r4,r5
145 <        stwcx.  r0,r0,r3
146 <        bne-    10b
145 >        stwcx.  r0,0,r3
146 >        bne-    0b
147          mr      r3,r5
148          isync
149          blr
150  
151 <        .globl  test_and_set
152 < test_and_set:
153 < 10:     dcbf    r0,r3
151 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(test_and_set)
152 > C_SYMBOL_NAME(test_and_set):
153 > 0:      dcbf    0,r3
154          sync
155          ori     r0,r0,1
156          ori     r0,r0,1
# Line 159 | Line 159 | test_and_set:
159          ori     r0,r0,1
160          ori     r0,r0,1
161          isync
162 <        lwarx   r5,r0,r3
162 >        lwarx   r5,0,r3
163          cmpi    0,r5,0x0000
164          beq     1f
165 <        stwcx.  r4,r0,r3
166 <        bne-    10b
165 >        stwcx.  r4,0,r3
166 >        bne-    0b
167   1:      isync    
168          mr      r3,r5
169          blr
# Line 173 | Line 173 | test_and_set:
173   *  void quit_emulator(void) - Jump to XLM_EMUL_RETURN_PROC
174   */
175  
176 <        .globl  quit_emulator
177 < quit_emulator:
178 <        lwz     r0,XLM_EMUL_RETURN_PROC(r0)
176 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(quit_emulator)
177 > C_SYMBOL_NAME(quit_emulator):
178 >        lwz     r0,XLM_EMUL_RETURN_PROC(0)
179          mtlr    r0
180          blr
181  
# Line 184 | Line 184 | quit_emulator:
184   *  void jump_to_rom(uint32 entry {r3}, uint32 emulator_data {r4}) - Jump to Mac ROM
185   */
186  
187 <        .globl  jump_to_rom
188 < jump_to_rom:
187 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(jump_to_rom)
188 > C_SYMBOL_NAME(jump_to_rom):
189          // Create stack frame
190          mflr    r0
191          stw     r0,4(r1)
# Line 224 | Line 224 | jump_to_rom:
224           */
225  
226          // Restore PowerPC registers
227 <        lwz     r1,XLM_EMUL_RETURN_STACK(r0)
227 >        lwz     r1,XLM_EMUL_RETURN_STACK(0)
228          lmw     r13,20(r1)
229          lfd     f14,20+19*4+0*8(r1)
230          lfd     f15,20+19*4+1*8(r1)
# Line 247 | Line 247 | jump_to_rom:
247  
248          // Exiting from 68k emulator
249          li      r0,1
250 <        stw     r0,XLM_IRQ_NEST(r0)
250 >        stw     r0,XLM_IRQ_NEST(0)
251          li      r0,MODE_NATIVE
252 <        stw     r0,XLM_RUN_MODE(r0)
252 >        stw     r0,XLM_RUN_MODE(0)
253  
254          // Return to caller of jump_to_rom()
255          lwz     r0,20+19*4+18*8+4(r1)
# Line 260 | Line 260 | jump_to_rom:
260  
261          // Save address of EMUL_RETURN routine for 68k emulator patch
262   1:      mflr    r0
263 <        stw     r0,XLM_EMUL_RETURN_PROC(r0)
263 >        stw     r0,XLM_EMUL_RETURN_PROC(0)
264  
265          // Skip over EXEC_RETURN routine and get its address
266          bl      2f
# Line 271 | Line 271 | jump_to_rom:
271           */
272  
273          // Save r25 (contains current 68k interrupt level)
274 <        stw     r25,XLM_68K_R25(r0)
274 >        stw     r25,XLM_68K_R25(0)
275  
276          // Reentering EMUL_OP mode
277          li      r0,MODE_EMUL_OP
278 <        stw     r0,XLM_RUN_MODE(r0)
278 >        stw     r0,XLM_RUN_MODE(0)
279  
280          // Save 68k registers
281          lwz     r4,48(r1)       // Pointer to M68kRegisters
# Line 329 | Line 329 | jump_to_rom:
329  
330          // Save address of EXEC_RETURN routine for 68k emulator patch
331   2:      mflr    r0
332 <        stw     r0,XLM_EXEC_RETURN_PROC(r0)
332 >        stw     r0,XLM_EXEC_RETURN_PROC(0)
333  
334          // Skip over EMUL_BREAK/EMUL_OP routine and get its address
335          bl      3f
# Line 343 | Line 343 | jump_to_rom:
343           */
344  
345          // Save r25 (contains current 68k interrupt level)
346 <        stw     r25,XLM_68K_R25(r0)
346 >        stw     r25,XLM_68K_R25(0)
347  
348          // Entering EMUL_OP mode within 68k emulator
349          li      r0,MODE_EMUL_OP
350 <        stw     r0,XLM_RUN_MODE(r0)
350 >        stw     r0,XLM_RUN_MODE(0)
351  
352          // Create PowerPC stack frame, reserve space for M68kRegisters
353          mr      r3,r1
# Line 360 | Line 360 | jump_to_rom:
360          mfxer   r0
361          stw     r0,16(r1)
362          stw     r2,12(r1)
363 <        stwu    r1,-(8+16*4+15*8)(r1)
363 >        stwu    r1,-(24+16*4+15*8)(r1)
364  
365          // Save 68k registers (M68kRegisters)
366 <        stw     r8,8+0*4(r1)    // d[0]..d[7]
367 <        stw     r9,8+1*4(r1)
368 <        stw     r10,8+2*4(r1)
369 <        stw     r11,8+3*4(r1)
370 <        stw     r12,8+4*4(r1)
371 <        stw     r13,8+5*4(r1)
372 <        stw     r14,8+6*4(r1)
373 <        stw     r15,8+7*4(r1)
374 <        stw     r16,8+8*4(r1)   // a[0]..a[7]
375 <        stw     r17,8+9*4(r1)
376 <        stw     r18,8+10*4(r1)
377 <        stw     r19,8+11*4(r1)
378 <        stw     r20,8+12*4(r1)
379 <        stw     r21,8+13*4(r1)
380 <        stw     r22,8+14*4(r1)
381 <        stw     r3,8+15*4(r1)
382 <        stfd    f0,8+16*4+0*8(r1)
383 <        stfd    f1,8+16*4+1*8(r1)
384 <        stfd    f2,8+16*4+2*8(r1)
385 <        stfd    f3,8+16*4+3*8(r1)
386 <        stfd    f4,8+16*4+4*8(r1)
387 <        stfd    f5,8+16*4+5*8(r1)
388 <        stfd    f6,8+16*4+6*8(r1)
389 <        stfd    f7,8+16*4+7*8(r1)
366 >        stw     r8,24+0*4(r1)   // d[0]..d[7]
367 >        stw     r9,24+1*4(r1)
368 >        stw     r10,24+2*4(r1)
369 >        stw     r11,24+3*4(r1)
370 >        stw     r12,24+4*4(r1)
371 >        stw     r13,24+5*4(r1)
372 >        stw     r14,24+6*4(r1)
373 >        stw     r15,24+7*4(r1)
374 >        stw     r16,24+8*4(r1)  // a[0]..a[7]
375 >        stw     r17,24+9*4(r1)
376 >        stw     r18,24+10*4(r1)
377 >        stw     r19,24+11*4(r1)
378 >        stw     r20,24+12*4(r1)
379 >        stw     r21,24+13*4(r1)
380 >        stw     r22,24+14*4(r1)
381 >        stw     r3,24+15*4(r1)
382 >        stfd    f0,24+16*4+0*8(r1)
383 >        stfd    f1,24+16*4+1*8(r1)
384 >        stfd    f2,24+16*4+2*8(r1)
385 >        stfd    f3,24+16*4+3*8(r1)
386 >        stfd    f4,24+16*4+4*8(r1)
387 >        stfd    f5,24+16*4+5*8(r1)
388 >        stfd    f6,24+16*4+6*8(r1)
389 >        stfd    f7,24+16*4+7*8(r1)
390          mffs    f0
391 <        stfd    f8,8+16*4+8*8(r1)
392 <        stfd    f9,8+16*4+9*8(r1)
393 <        stfd    f10,8+16*4+10*8(r1)
394 <        stfd    f11,8+16*4+11*8(r1)
395 <        stfd    f12,8+16*4+12*8(r1)
396 <        stfd    f13,8+16*4+13*8(r1)
397 <        stfd    f0,8+16*4+14*8(r1)
391 >        stfd    f8,24+16*4+8*8(r1)
392 >        stfd    f9,24+16*4+9*8(r1)
393 >        stfd    f10,24+16*4+10*8(r1)
394 >        stfd    f11,24+16*4+11*8(r1)
395 >        stfd    f12,24+16*4+12*8(r1)
396 >        stfd    f13,24+16*4+13*8(r1)
397 >        stfd    f0,24+16*4+14*8(r1)
398  
399          // Execute native routine
400 <        lwz     r13,XLM_TOC(r0)
401 <        addi    r3,r1,8
400 >        lwz     r13,XLM_TOC(0)
401 >        addi    r3,r1,24
402          mr      r4,r24
403 <        bl      EmulOp__FP13M68kRegistersUii
403 >        bl      C_SYMBOL_NAME(EmulOp)
404  
405          // Restore 68k registers (M68kRegisters)
406 <        lwz     r8,8+0*4(r1)    // d[0]..d[7]
407 <        lwz     r9,8+1*4(r1)
408 <        lwz     r10,8+2*4(r1)
409 <        lwz     r11,8+3*4(r1)
410 <        lwz     r12,8+4*4(r1)
411 <        lwz     r13,8+5*4(r1)
412 <        lwz     r14,8+6*4(r1)
413 <        lwz     r15,8+7*4(r1)
414 <        lwz     r16,8+8*4(r1)   // a[0]..a[7]
415 <        lwz     r17,8+9*4(r1)
416 <        lwz     r18,8+10*4(r1)
417 <        lwz     r19,8+11*4(r1)
418 <        lwz     r20,8+12*4(r1)
419 <        lwz     r21,8+13*4(r1)
420 <        lwz     r22,8+14*4(r1)
421 <        lwz     r3,8+15*4(r1)
422 <        lfd     f13,8+16*4+14*8(r1)
423 <        lfd     f0,8+16*4+0*8(r1)
424 <        lfd     f1,8+16*4+1*8(r1)
425 <        lfd     f2,8+16*4+2*8(r1)
426 <        lfd     f3,8+16*4+3*8(r1)
427 <        lfd     f4,8+16*4+4*8(r1)
428 <        lfd     f5,8+16*4+5*8(r1)
429 <        lfd     f6,8+16*4+6*8(r1)
430 <        lfd     f7,8+16*4+7*8(r1)
406 >        lwz     r8,24+0*4(r1)   // d[0]..d[7]
407 >        lwz     r9,24+1*4(r1)
408 >        lwz     r10,24+2*4(r1)
409 >        lwz     r11,24+3*4(r1)
410 >        lwz     r12,24+4*4(r1)
411 >        lwz     r13,24+5*4(r1)
412 >        lwz     r14,24+6*4(r1)
413 >        lwz     r15,24+7*4(r1)
414 >        lwz     r16,24+8*4(r1)  // a[0]..a[7]
415 >        lwz     r17,24+9*4(r1)
416 >        lwz     r18,24+10*4(r1)
417 >        lwz     r19,24+11*4(r1)
418 >        lwz     r20,24+12*4(r1)
419 >        lwz     r21,24+13*4(r1)
420 >        lwz     r22,24+14*4(r1)
421 >        lwz     r3,24+15*4(r1)
422 >        lfd     f13,24+16*4+14*8(r1)
423 >        lfd     f0,24+16*4+0*8(r1)
424 >        lfd     f1,24+16*4+1*8(r1)
425 >        lfd     f2,24+16*4+2*8(r1)
426 >        lfd     f3,24+16*4+3*8(r1)
427 >        lfd     f4,24+16*4+4*8(r1)
428 >        lfd     f5,24+16*4+5*8(r1)
429 >        lfd     f6,24+16*4+6*8(r1)
430 >        lfd     f7,24+16*4+7*8(r1)
431          mtfsf   0xff,f13
432 <        lfd     f8,8+16*4+8*8(r1)
433 <        lfd     f9,8+16*4+9*8(r1)
434 <        lfd     f10,8+16*4+10*8(r1)
435 <        lfd     f11,8+16*4+11*8(r1)
436 <        lfd     f12,8+16*4+12*8(r1)
437 <        lfd     f13,8+16*4+13*8(r1)
432 >        lfd     f8,24+16*4+8*8(r1)
433 >        lfd     f9,24+16*4+9*8(r1)
434 >        lfd     f10,24+16*4+10*8(r1)
435 >        lfd     f11,24+16*4+11*8(r1)
436 >        lfd     f12,24+16*4+12*8(r1)
437 >        lfd     f13,24+16*4+13*8(r1)
438  
439          // Delete PowerPC stack frame
440 <        lwz     r2,8+16*4+15*8+12(r1)
441 <        lwz     r0,8+16*4+15*8+16(r1)
440 >        lwz     r2,24+16*4+15*8+12(r1)
441 >        lwz     r0,24+16*4+15*8+16(r1)
442          mtxer   r0
443 <        lwz     r0,8+16*4+15*8+4(r1)
443 >        lwz     r0,24+16*4+15*8+4(r1)
444          mtcrf   0xff,r0
445          mr      r1,r3
446  
447          // Reentering 68k emulator
448          li      r0,MODE_68K
449 <        stw     r0,XLM_RUN_MODE(r0)
449 >        stw     r0,XLM_RUN_MODE(0)
450  
451          // Set r0 to 0 for 68k emulator
452          li      r0,0
# Line 460 | Line 460 | jump_to_rom:
460  
461          // Save address of EMUL_BREAK/EMUL_OP routine for 68k emulator patch
462   3:      mflr    r0
463 <        stw     r0,XLM_EMUL_OP_PROC(r0)
463 >        stw     r0,XLM_EMUL_OP_PROC(0)
464  
465          // Save stack pointer for EMUL_RETURN
466 <        stw     r1,XLM_EMUL_RETURN_STACK(r0)
466 >        stw     r1,XLM_EMUL_RETURN_STACK(0)
467  
468          // Preset registers for ROM boot routine
469          lis     r3,0x40b0               // Pointer to ROM boot structure
# Line 471 | Line 471 | jump_to_rom:
471  
472          // 68k emulator is now active
473          li      r0,MODE_68K
474 <        stw     r0,XLM_RUN_MODE(r0)
474 >        stw     r0,XLM_RUN_MODE(0)
475  
476          // Jump to ROM
477          bctr
# Line 481 | Line 481 | jump_to_rom:
481   *  void execute_68k(uint32 pc {r3}, M68kRegisters *r {r4}) - Execute 68k routine
482   */
483  
484 <        .globl  execute_68k
485 < execute_68k:
484 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(execute_68k)
485 > C_SYMBOL_NAME(execute_68k):
486          // Create MacOS stack frame
487          mflr    r0
488          stw     r0,4(r1)
# Line 515 | Line 515 | execute_68k:
515   #endif
516  
517          // Set up registers for 68k emulator
518 <        lwz     r31,XLM_KERNEL_DATA(r0) // Pointer to Kernel Data
518 >        lwz     r31,XLM_KERNEL_DATA(0)  // Pointer to Kernel Data
519          addi    r31,r31,0x1000
520          li      r0,0
521          mtcrf   0xff,r0
# Line 537 | Line 537 | execute_68k:
537          lwz     r22,14*4(r4)
538          li      r23,0
539          mr      r24,r3
540 <        lwz     r25,XLM_68K_R25(r0)             // MSB of SR
540 >        lwz     r25,XLM_68K_R25(0)              // MSB of SR
541          li      r26,0
542          li      r28,0                           // VBR
543          lwz     r29,0x74(r31)           // Pointer to opcode table
# Line 549 | Line 549 | execute_68k:
549  
550          // Reentering 68k emulator
551          li      r0,MODE_68K
552 <        stw     r0,XLM_RUN_MODE(r0)
552 >        stw     r0,XLM_RUN_MODE(0)
553  
554          // Set r0 to 0 for 68k emulator
555          li      r0,0
# Line 566 | Line 566 | execute_68k:
566   *  uint32 call_macos1(uint32 tvect{r3}, uint32 arg1{r4}) ... - Call MacOS routines
567   */
568  
569 < #define prolog \
570 <        mflr    r0;             \
571 <        stw     r0,4(r1);       \
569 > ASM_MACRO_START prolog
570 >        mflr    r0
571 >        stw     r0,4(r1)
572          stwu    r1,-64(r1)
573 + ASM_MACRO_END
574  
575 < #define epilog \
576 <        lwz     r13,XLM_TOC(r0);\
577 <        lwz     r0,64+4(r1);    \
578 <        mtlr    r0;             \
579 <        addi    r1,r1,64;       \
575 > ASM_MACRO_START epilog
576 >        lwz     r13,XLM_TOC(0)
577 >        lwz     r0,64+4(r1)
578 >        mtlr    r0
579 >        addi    r1,r1,64
580          blr
581 + ASM_MACRO_END
582  
583 <        .globl  call_macos
584 < call_macos:
583 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos)
584 > C_SYMBOL_NAME(call_macos):
585          prolog
586          lwz     r0,0(r3)        // Get routine address
587          lwz     r2,4(r3)        // Load TOC pointer
# Line 587 | Line 589 | call_macos:
589          bctrl
590          epilog
591  
592 <        .globl  call_macos1
593 < call_macos1:
592 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos1)
593 > C_SYMBOL_NAME(call_macos1):
594          prolog
595          lwz     r0,0(r3)        // Get routine address
596          lwz     r2,4(r3)        // Load TOC pointer
# Line 597 | Line 599 | call_macos1:
599          bctrl
600          epilog
601  
602 <        .globl  call_macos2
603 < call_macos2:
602 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos2)
603 > C_SYMBOL_NAME(call_macos2):
604          prolog
605          lwz     r0,0(r3)        // Get routine address
606          lwz     r2,4(r3)        // Load TOC pointer
# Line 608 | Line 610 | call_macos2:
610          bctrl
611          epilog
612  
613 <        .globl  call_macos3
614 < call_macos3:
613 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos3)
614 > C_SYMBOL_NAME(call_macos3):
615          prolog
616          lwz     r0,0(r3)        // Get routine address
617          lwz     r2,4(r3)        // Load TOC pointer
# Line 620 | Line 622 | call_macos3:
622          bctrl
623          epilog
624  
625 <        .globl  call_macos4
626 < call_macos4:
625 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos4)
626 > C_SYMBOL_NAME(call_macos4):
627          prolog
628          lwz     r0,0(r3)        // Get routine address
629          lwz     r2,4(r3)        // Load TOC pointer
# Line 633 | Line 635 | call_macos4:
635          bctrl
636          epilog
637  
638 <        .globl  call_macos5
639 < call_macos5:
638 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos5)
639 > C_SYMBOL_NAME(call_macos5):
640          prolog
641          lwz     r0,0(r3)        // Get routine address
642          lwz     r2,4(r3)        // Load TOC pointer
# Line 647 | Line 649 | call_macos5:
649          bctrl
650          epilog
651  
652 <        .globl  call_macos6
653 < call_macos6:
652 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos6)
653 > C_SYMBOL_NAME(call_macos6):
654          prolog
655          lwz     r0,0(r3)        // Get routine address
656          lwz     r2,4(r3)        // Load TOC pointer
# Line 662 | Line 664 | call_macos6:
664          bctrl
665          epilog
666  
667 <        .globl  call_macos7
668 < call_macos7:
667 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(call_macos7)
668 > C_SYMBOL_NAME(call_macos7):
669          prolog
670          lwz     r0,0(r3)        // Get routine address
671          lwz     r2,4(r3)        // Load TOC pointer
# Line 683 | Line 685 | call_macos7:
685   *  Native resource manager patches
686   */
687  
688 <        .globl  get_resource
689 < get_resource:
688 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(get_resource)
689 > C_SYMBOL_NAME(get_resource):
690          // Create stack frame
691          mflr    r0
692          stw     r0,8(r1)
# Line 695 | Line 697 | get_resource:
697          stw     r4,56+4(r1)
698  
699          // Call old routine
700 <        lwz     r0,XLM_GET_RESOURCE(r0)
701 <        lwz     r2,XLM_RES_LIB_TOC(r0)
700 >        lwz     r0,XLM_GET_RESOURCE(0)
701 >        lwz     r2,XLM_RES_LIB_TOC(0)
702          mtctr   r0
703          bctrl
704          stw     r3,56+8(r1)             // Save handle
705  
706          // Call CheckLoad
707          lwz     r3,56(r1)
708 <        lwz     r4,56+4(r1)
708 >        lha     r4,56+6(r1)
709          lwz     r5,56+8(r1)
710 <        bl      check_load_invoc__FUisPPUs
710 >        bl      C_SYMBOL_NAME(check_load_invoc)
711          lwz     r3,56+8(r1)             // Restore handle
712  
713          // Return to caller
# Line 714 | Line 716 | get_resource:
716          addi    r1,r1,56+12
717          blr
718  
719 <        .globl  get_1_resource
720 < get_1_resource:
719 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(get_1_resource)
720 > C_SYMBOL_NAME(get_1_resource):
721          // Create stack frame
722          mflr    r0
723          stw     r0,8(r1)
# Line 726 | Line 728 | get_1_resource:
728          stw     r4,56+4(r1)
729  
730          // Call old routine
731 <        lwz     r0,XLM_GET_1_RESOURCE(r0)
732 <        lwz     r2,XLM_RES_LIB_TOC(r0)
731 >        lwz     r0,XLM_GET_1_RESOURCE(0)
732 >        lwz     r2,XLM_RES_LIB_TOC(0)
733          mtctr   r0
734          bctrl
735          stw     r3,56+8(r1)             // Save handle
736  
737          // Call CheckLoad
738          lwz     r3,56(r1)
739 <        lwz     r4,56+4(r1)
739 >        lha     r4,56+6(r1)
740          lwz     r5,56+8(r1)
741 <        bl      check_load_invoc__FUisPPUs
741 >        bl      C_SYMBOL_NAME(check_load_invoc)
742          lwz     r3,56+8(r1)             // Restore handle
743  
744          // Return to caller
# Line 745 | Line 747 | get_1_resource:
747          addi    r1,r1,56+12
748          blr
749  
750 <        .globl  get_ind_resource
751 < get_ind_resource:
750 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(get_ind_resource)
751 > C_SYMBOL_NAME(get_ind_resource):
752          // Create stack frame
753          mflr    r0
754          stw     r0,8(r1)
# Line 757 | Line 759 | get_ind_resource:
759          stw     r4,56+4(r1)
760  
761          // Call old routine
762 <        lwz     r0,XLM_GET_IND_RESOURCE(r0)
763 <        lwz     r2,XLM_RES_LIB_TOC(r0)
762 >        lwz     r0,XLM_GET_IND_RESOURCE(0)
763 >        lwz     r2,XLM_RES_LIB_TOC(0)
764          mtctr   r0
765          bctrl
766          stw     r3,56+8(r1)             // Save handle
767  
768          // Call CheckLoad
769          lwz     r3,56(r1)
770 <        lwz     r4,56+4(r1)
770 >        lha     r4,56+6(r1)
771          lwz     r5,56+8(r1)
772 <        bl      check_load_invoc__FUisPPUs
772 >        bl      C_SYMBOL_NAME(check_load_invoc)
773          lwz     r3,56+8(r1)             // Restore handle
774  
775          // Return to caller
# Line 776 | Line 778 | get_ind_resource:
778          addi    r1,r1,56+12
779          blr
780  
781 <        .globl  get_1_ind_resource
782 < get_1_ind_resource:
781 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(get_1_ind_resource)
782 > C_SYMBOL_NAME(get_1_ind_resource):
783          // Create stack frame
784          mflr    r0
785          stw     r0,8(r1)
# Line 788 | Line 790 | get_1_ind_resource:
790          stw     r4,56+4(r1)
791  
792          // Call old routine
793 <        lwz     r0,XLM_GET_1_IND_RESOURCE(r0)
794 <        lwz     r2,XLM_RES_LIB_TOC(r0)
793 >        lwz     r0,XLM_GET_1_IND_RESOURCE(0)
794 >        lwz     r2,XLM_RES_LIB_TOC(0)
795          mtctr   r0
796          bctrl
797          stw     r3,56+8(r1)             // Save handle
798  
799          // Call CheckLoad
800          lwz     r3,56(r1)
801 <        lwz     r4,56+4(r1)
801 >        lha     r4,56+6(r1)
802          lwz     r5,56+8(r1)
803 <        bl      check_load_invoc__FUisPPUs
803 >        bl      C_SYMBOL_NAME(check_load_invoc)
804          lwz     r3,56+8(r1)             // Restore handle
805  
806          // Return to caller
# Line 807 | Line 809 | get_1_ind_resource:
809          addi    r1,r1,56+12
810          blr
811  
812 <        .globl  r_get_resource
813 < r_get_resource:
812 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(r_get_resource)
813 > C_SYMBOL_NAME(r_get_resource):
814          // Create stack frame
815          mflr    r0
816          stw     r0,8(r1)
# Line 819 | Line 821 | r_get_resource:
821          stw     r4,56+4(r1)
822  
823          // Call old routine
824 <        lwz     r0,XLM_R_GET_RESOURCE(r0)
825 <        lwz     r2,XLM_RES_LIB_TOC(r0)
824 >        lwz     r0,XLM_R_GET_RESOURCE(0)
825 >        lwz     r2,XLM_RES_LIB_TOC(0)
826          mtctr   r0
827          bctrl
828          stw     r3,56+8(r1)             // Save handle
829  
830          // Call CheckLoad
831          lwz     r3,56(r1)
832 <        lwz     r4,56+4(r1)
832 >        lha     r4,56+6(r1)
833          lwz     r5,56+8(r1)
834 <        bl      check_load_invoc__FUisPPUs
834 >        bl      C_SYMBOL_NAME(check_load_invoc)
835          lwz     r3,56+8(r1)             // Restore handle
836  
837          // Return to caller
# Line 843 | Line 845 | r_get_resource:
845   *  void ppc_interrupt(uint32 entry{r3}, uint32 kernel_data{r4}) - Execute PPC interrupt
846   */
847  
848 <        .globl  ppc_interrupt
849 < ppc_interrupt:
848 >        ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(ppc_interrupt)
849 > C_SYMBOL_NAME(ppc_interrupt):
850          mflr    r0
851          stw     r0,4(r1)
852          stwu    r1,-64(r1)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines