1 |
|
/* |
2 |
|
* macos_util.cpp - MacOS definitions/utility functions |
3 |
|
* |
4 |
< |
* SheepShaver (C) 1997-2002 Christian Bauer and Marc Hellwig |
4 |
> |
* SheepShaver (C) 1997-2004 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 |
169 |
|
M68kRegisters r; |
170 |
|
|
171 |
|
// Find shared library |
172 |
< |
static const uint8 proc1[] = { |
173 |
< |
0x55, 0x8f, // subq.l #2,a7 |
174 |
< |
0x2f, 0x08, // move.l a0,-(a7) |
175 |
< |
0x2f, 0x3c, 0x70, 0x77, 0x70, 0x63, // move.l #'pwpc',-(a7) |
176 |
< |
0x2f, 0x3c, 0x00, 0x00, 0x00, 0x01, // move.l #kReferenceCFrag,-(a7) |
177 |
< |
0x2f, 0x09, // move.l a1,-(a7) |
178 |
< |
0x2f, 0x0a, // move.l a2,-(a7) |
179 |
< |
0x2f, 0x0b, // move.l a3,-(a7) |
180 |
< |
0x3f, 0x3c, 0x00, 0x01, // (GetSharedLibrary) |
181 |
< |
0xaa, 0x5a, // CFMDispatch |
182 |
< |
0x30, 0x1f, // move.w (a7)+,d0 |
183 |
< |
M68K_RTS >> 8, M68K_RTS & 0xff |
172 |
> |
static const uint16 proc1[] = { |
173 |
> |
PW(0x558f), // subq.l #2,a7 |
174 |
> |
PW(0x2f08), // move.l a0,-(a7) |
175 |
> |
PW(0x2f3c), PW(0x7077), PW(0x7063), // move.l #'pwpc',-(a7) |
176 |
> |
PW(0x2f3c), PW(0x0000), PW(0x0001), // move.l #kReferenceCFrag,-(a7) |
177 |
> |
PW(0x2f09), // move.l a1,-(a7) |
178 |
> |
PW(0x2f0a), // move.l a2,-(a7) |
179 |
> |
PW(0x2f0b), // move.l a3,-(a7) |
180 |
> |
PW(0x3f3c), PW(0x0001), // (GetSharedLibrary) |
181 |
> |
PW(0xaa5a), // CFMDispatch |
182 |
> |
PW(0x301f), // move.w (a7)+,d0 |
183 |
> |
PW(M68K_RTS) |
184 |
|
}; |
185 |
|
r.a[0] = lib.addr(); |
186 |
|
r.a[1] = conn_id.addr(); |
192 |
|
return NULL; |
193 |
|
|
194 |
|
// Find symbol |
195 |
< |
static const uint8 proc2[] = { |
196 |
< |
0x55, 0x8f, // subq.l #2,a7 |
197 |
< |
0x2f, 0x00, // move.l d0,-(a7) |
198 |
< |
0x2f, 0x08, // move.l a0,-(a7) |
199 |
< |
0x2f, 0x09, // move.l a1,-(a7) |
200 |
< |
0x2f, 0x0a, // move.l a2,-(a7) |
201 |
< |
0x3f, 0x3c, 0x00, 0x05, // (FindSymbol) |
202 |
< |
0xaa, 0x5a, // CFMDispatch |
203 |
< |
0x30, 0x1f, // move.w (a7)+,d0 |
204 |
< |
M68K_RTS >> 8, M68K_RTS & 0xff |
195 |
> |
static const uint16 proc2[] = { |
196 |
> |
PW(0x558f), // subq.l #2,a7 |
197 |
> |
PW(0x2f00), // move.l d0,-(a7) |
198 |
> |
PW(0x2f08), // move.l a0,-(a7) |
199 |
> |
PW(0x2f09), // move.l a1,-(a7) |
200 |
> |
PW(0x2f0a), // move.l a2,-(a7) |
201 |
> |
PW(0x3f3c), PW(0x0005), // (FindSymbol) |
202 |
> |
PW(0xaa5a), // CFMDispatch |
203 |
> |
PW(0x301f), // move.w (a7)+,d0 |
204 |
> |
PW(M68K_RTS) |
205 |
|
}; |
206 |
|
r.d[0] = conn_id.value(); |
207 |
|
r.a[0] = sym.addr(); |