gte_neon: hook into recompiler
[pcsx_rearmed.git] / libpcsxcore / ppc / pasm.s
CommitLineData
ef79bbde
P
1
2
3#define OLD_REGISTER_OFFSET (19*4)
4#define SP_SIZE (OLD_REGISTER_OFFSET+4+8)
5
6/*asm void recRun(register void (*func)(), register u32 hw1, register u32 hw2)*/
7 .text
8 .align 4
9 .globl recRun
10recRun:
11 /* prologue code */
12 mflr r0
13 stmw r13, -(32-13)*4(r1)
14 stw r0, 4(r1)
15 stwu r1, -((32-13)*4+8)(r1)
16
17 /* execute code */
18 mtctr r3
19 mr r31, r4
20 mr r30, r5
21 bctrl
22/*
23}
24asm void returnPC()
25{*/
26 .text
27 .align 4
28 .globl returnPC
29returnPC:
30 // end code
31 lwz r0, (32-13)*4+8+4(r1)
32 addi r1, r1, (32-13)*4+8
33 mtlr r0
34 lmw r13, -(32-13)*4(r1)
35 blr
36//}*/
37
38// Memory functions that only works with a linear memory
39
40 .text
41 .align 4
42 .globl dynMemRead8
43dynMemRead8:
44// assumes that memory pointer is in r30
45 addis r2,r3,-0x1f80
46 srwi. r4,r2,16
47 bne+ .norm8
48 cmplwi r2,0x1000
49 blt- .norm8
50 b psxHwRead8
51.norm8:
52 clrlwi r5,r3,3
53 lbzx r3,r5,r30
54 blr
55
56 .text
57 .align 4
58 .globl dynMemRead16
59dynMemRead16:
60// assumes that memory pointer is in r30
61 addis r2,r3,-0x1f80
62 srwi. r4,r2,16
63 bne+ .norm16
64 cmplwi r2,0x1000
65 blt- .norm16
66 b psxHwRead16
67.norm16:
68 clrlwi r5,r3,3
69 lhbrx r3,r5,r30
70 blr
71
72 .text
73 .align 4
74 .globl dynMemRead32
75dynMemRead32:
76// assumes that memory pointer is in r30
77 addis r2,r3,-0x1f80
78 srwi. r4,r2,16
79 bne+ .norm32
80 cmplwi r2,0x1000
81 blt- .norm32
82 b psxHwRead32
83.norm32:
84 clrlwi r5,r3,3
85 lwbrx r3,r5,r30
86 blr
87
88/*
89 N P Z
90 0 0 0 X
91- 0 0 1 X
92 1 0 0 X
93 1 0 1 X
94
95P | (!N & Z)
96P | !(N | !Z)
97*/
98
99 .text
100 .align 4
101 .globl dynMemWrite32
102dynMemWrite32:
103// assumes that memory pointer is in r30
104 addis r2,r3,-0x1f80
105 srwi. r5,r2,16
106 bne+ .normw32
107 cmplwi r2,0x1000
108 blt .normw32
109 b psxHwWrite32
110.normw32:
111 mtcrf 0xFF, r3
112 clrlwi r5,r3,3
113 crandc 0, 2, 0
114 cror 2, 1, 0
115 bne+ .okw32
116 // write test
117 li r2,0x0130
118 addis r2,r2,0xfffe
119 cmplw r3,r2
120 bnelr
121.okw32:
122 stwbrx r4,r5,r30
123 blr
124