some vm to accomodate needing to have a region search spot be
[newos.git] / boot / ppc / stage2_asm.S
blobfddb3599b5143796f28d04d6a8080ef19df0df37
1 /*
2 ** Copyright 2001-2003, Travis Geiselbrecht. All rights reserved.
3 ** Distributed under the terms of the NewOS License.
4 */
5 .text
7 /* void switch_stacks_and_call(unsigned int new_stack, void *func, int arg0, int arg1) */
8 .globl switch_stacks_and_call
9 switch_stacks_and_call:
10         mr                      r1, r3  /* load the stack pointer */
11         mtlr            r4
12         mr                      r3, r5
13         mr                      r4, r6
14         blr
16 /* void getibats(int bats[8]); */
17 .globl getibats
18 getibats:
19         mfibatu         r0,0
20         stw             r0,0(r3)
21         mfibatl         r0,0
22         stwu            r0,4(r3)
23         mfibatu         r0,1
24         stwu            r0,4(r3)
25         mfibatl         r0,1
26         stwu            r0,4(r3)
27         mfibatu         r0,2
28         stwu            r0,4(r3)
29         mfibatl         r0,2
30         stwu            r0,4(r3)
31         mfibatu         r0,3
32         stwu            r0,4(r3)
33         mfibatl         r0,3
34         stwu            r0,4(r3)
35         blr
37 // void setibats(int bats[8]);
38 .globl setibats
39 setibats:
40         mfmsr           r8
41         li                      r0,0
42         mtmsr           r0
44         lwz                     r0,0(r3)
45         mtibatu         0,r0
46         isync
47         lwzu            r0,4(r3)
48         mtibatl         0,r0
49         isync
50         lwzu            r0,4(r3)
51         mtibatu         1,r0
52         isync
53         lwzu            r0,4(r3)
54         mtibatl         1,r0
55         isync
56         lwzu            r0,4(r3)
57         mtibatu         2,r0
58         isync
59         lwzu            r0,4(r3)
60         mtibatl         2,r0
61         isync
62         lwzu            r0,4(r3)
63         mtibatu         3,r0
64         isync
65         lwzu            r0,4(r3)
66         mtibatl         3,r0
68         isync
70         mtmsr           r8
71         isync
72         blr
74 // void getdbats(int bats[8]);
75 .globl getdbats
76 getdbats:
77         mfdbatu         r0,0
78         stw             r0,0(r3)
79         mfdbatl         r0,0
80         stwu            r0,4(r3)
81         mfdbatu         r0,1
82         stwu            r0,4(r3)
83         mfdbatl         r0,1
84         stwu            r0,4(r3)
85         mfdbatu         r0,2
86         stwu            r0,4(r3)
87         mfdbatl         r0,2
88         stwu            r0,4(r3)
89         mfdbatu         r0,3
90         stwu            r0,4(r3)
91         mfdbatl         r0,3
92         stwu            r0,4(r3)
93         blr
95 // void setdbats(int bats[8]);
96 .globl setdbats
97 setdbats:
98         mfmsr           r8
99         li                      r0,0
100         mtmsr           r0
102         lwz                     r0,0(r3)
103         mtdbatu         0,r0
104         lwzu            r0,4(r3)
105         mtdbatl         0,r0
106         lwzu            r0,4(r3)
107         mtdbatu         1,r0
108         lwzu            r0,4(r3)
109         mtdbatl         1,r0
110         lwzu            r0,4(r3)
111         mtdbatu         2,r0
112         lwzu            r0,4(r3)
113         mtdbatl         2,r0
114         lwzu            r0,4(r3)
115         mtdbatu         3,r0
116         lwzu            r0,4(r3)
117         mtdbatl         3,r0
119         mtmsr           r8
120         sync
121         blr
123 // unsigned int getsdr1();
124 .globl getsdr1
125 getsdr1:
126         mfsdr1          r3
127         blr
129 // void setsdr1(unsigned int sdr);
130 .globl setsdr1
131 setsdr1:
132         sync
133         mtsdr1          r3
134         sync
135         blr
137 // unsigned int getsr(unsigned int va);
138 .globl getsr
139 getsr:
140         mfsrin          r3,r3
141         sync
142         blr
144 // void setsr(unsigned int va, unsigned int val);
145 .globl setsr
146 setsr:
147         mtsrin          r4,r3
148         sync
149         blr
151 // unsigned int getmsr();
152 .globl getmsr
153 getmsr:
154         mfmsr           r3
155         blr
157 // void setmsr(unsigned int msr);
158 .globl setmsr
159 setmsr:
160         mtmsr           r3
161         blr