mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-12-25 17:29:19 +00:00
FindLibSymbol() returns an address in MacOS address space. Likewise for
Mac_sysalloc(). i.e. make it return an uint32.
This commit is contained in:
parent
ec8304c597
commit
7944aaf2de
@ -259,7 +259,7 @@ void EmulOp(M68kRegisters *r, uint32 pc, int selector)
|
||||
InstallDrivers();
|
||||
|
||||
// Patch MakeExecutable()
|
||||
MakeExecutableTvec = (uint32)FindLibSymbol("\023PrivateInterfaceLib", "\016MakeExecutable");
|
||||
MakeExecutableTvec = FindLibSymbol("\023PrivateInterfaceLib", "\016MakeExecutable");
|
||||
D(bug("MakeExecutable TVECT at %08x\n", MakeExecutableTvec));
|
||||
WriteMacInt32(MakeExecutableTvec, NativeFunction(NATIVE_MAKE_EXECUTABLE));
|
||||
#if !EMULATED_PPC
|
||||
|
@ -37,6 +37,9 @@
|
||||
#define DEBUG 0
|
||||
#include "debug.h"
|
||||
|
||||
#if DIRECT_ADDRESSING
|
||||
#warning "This code is not direct addressing clean"
|
||||
#endif
|
||||
|
||||
// Packet types
|
||||
enum {
|
||||
@ -86,7 +89,7 @@ struct DLPIStream {
|
||||
|
||||
void AddMulticast(uint8 *addr)
|
||||
{
|
||||
multicast_node *n = (multicast_node *)Mac_sysalloc(sizeof(multicast_node));
|
||||
multicast_node *n = (multicast_node *)Mac2HostAddr(Mac_sysalloc(sizeof(multicast_node)));
|
||||
memcpy(n->addr, addr, kEnetPhysicalAddressLength);
|
||||
n->next = multicast_list;
|
||||
multicast_list = n;
|
||||
@ -106,7 +109,7 @@ struct DLPIStream {
|
||||
while (q) {
|
||||
if (q->next == p) {
|
||||
q->next = p->next;
|
||||
Mac_sysfree(p);
|
||||
Mac_sysfree(Host2MacAddr((uint8 *)p));
|
||||
return;
|
||||
}
|
||||
q = q->next;
|
||||
@ -318,75 +321,75 @@ uint8 InitStreamModule(void *theID)
|
||||
ether_driver_opened = false;
|
||||
|
||||
// Import functions from OTKernelLib
|
||||
allocb_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\006allocb");
|
||||
allocb_tvect = FindLibSymbol("\013OTKernelLib", "\006allocb");
|
||||
D(bug("allocb TVECT at %08lx\n", allocb_tvect));
|
||||
if (allocb_tvect == 0)
|
||||
return false;
|
||||
freeb_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\005freeb");
|
||||
freeb_tvect = FindLibSymbol("\013OTKernelLib", "\005freeb");
|
||||
D(bug("freeb TVECT at %08lx\n", freeb_tvect));
|
||||
if (freeb_tvect == 0)
|
||||
return false;
|
||||
freemsg_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\007freemsg");
|
||||
freemsg_tvect = FindLibSymbol("\013OTKernelLib", "\007freemsg");
|
||||
D(bug("freemsg TVECT at %08lx\n", freemsg_tvect));
|
||||
if (freemsg_tvect == 0)
|
||||
return false;
|
||||
copyb_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\005copyb");
|
||||
copyb_tvect = FindLibSymbol("\013OTKernelLib", "\005copyb");
|
||||
D(bug("copyb TVECT at %08lx\n", copyb_tvect));
|
||||
if (copyb_tvect == 0)
|
||||
return false;
|
||||
dupmsg_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\006dupmsg");
|
||||
dupmsg_tvect = FindLibSymbol("\013OTKernelLib", "\006dupmsg");
|
||||
D(bug("dupmsg TVECT at %08lx\n", dupmsg_tvect));
|
||||
if (dupmsg_tvect == 0)
|
||||
return false;
|
||||
getq_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\004getq");
|
||||
getq_tvect = FindLibSymbol("\013OTKernelLib", "\004getq");
|
||||
D(bug("getq TVECT at %08lx\n", getq_tvect));
|
||||
if (getq_tvect == 0)
|
||||
return false;
|
||||
putq_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\004putq");
|
||||
putq_tvect = FindLibSymbol("\013OTKernelLib", "\004putq");
|
||||
D(bug("putq TVECT at %08lx\n", putq_tvect));
|
||||
if (putq_tvect == 0)
|
||||
return false;
|
||||
putnext_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\007putnext");
|
||||
putnext_tvect = FindLibSymbol("\013OTKernelLib", "\007putnext");
|
||||
D(bug("putnext TVECT at %08lx\n", putnext_tvect));
|
||||
if (putnext_tvect == 0)
|
||||
return false;
|
||||
putnextctl1_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\013putnextctl1");
|
||||
putnextctl1_tvect = FindLibSymbol("\013OTKernelLib", "\013putnextctl1");
|
||||
D(bug("putnextctl1 TVECT at %08lx\n", putnextctl1_tvect));
|
||||
if (putnextctl1_tvect == 0)
|
||||
return false;
|
||||
canputnext_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\012canputnext");
|
||||
canputnext_tvect = FindLibSymbol("\013OTKernelLib", "\012canputnext");
|
||||
D(bug("canputnext TVECT at %08lx\n", canputnext_tvect));
|
||||
if (canputnext_tvect == 0)
|
||||
return false;
|
||||
qreply_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\006qreply");
|
||||
qreply_tvect = FindLibSymbol("\013OTKernelLib", "\006qreply");
|
||||
D(bug("qreply TVECT at %08lx\n", qreply_tvect));
|
||||
if (qreply_tvect == 0)
|
||||
return false;
|
||||
flushq_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\006flushq");
|
||||
flushq_tvect = FindLibSymbol("\013OTKernelLib", "\006flushq");
|
||||
D(bug("flushq TVECT at %08lx\n", flushq_tvect));
|
||||
if (flushq_tvect == 0)
|
||||
return false;
|
||||
msgdsize_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\010msgdsize");
|
||||
msgdsize_tvect = FindLibSymbol("\013OTKernelLib", "\010msgdsize");
|
||||
D(bug("msgdsize TVECT at %08lx\n", msgdsize_tvect));
|
||||
if (msgdsize_tvect == 0)
|
||||
return false;
|
||||
otenterint_tvect = (uint32)FindLibSymbol("\017OTKernelUtilLib", "\020OTEnterInterrupt");
|
||||
otenterint_tvect = FindLibSymbol("\017OTKernelUtilLib", "\020OTEnterInterrupt");
|
||||
D(bug("OTEnterInterrupt TVECT at %08lx\n", otenterint_tvect));
|
||||
if (otenterint_tvect == 0)
|
||||
return false;
|
||||
otleaveint_tvect = (uint32)FindLibSymbol("\017OTKernelUtilLib", "\020OTLeaveInterrupt");
|
||||
otleaveint_tvect = FindLibSymbol("\017OTKernelUtilLib", "\020OTLeaveInterrupt");
|
||||
D(bug("OTLeaveInterrupt TVECT at %08lx\n", otleaveint_tvect));
|
||||
if (otleaveint_tvect == 0)
|
||||
return false;
|
||||
mi_open_comm_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\014mi_open_comm");
|
||||
mi_open_comm_tvect = FindLibSymbol("\013OTKernelLib", "\014mi_open_comm");
|
||||
D(bug("mi_open_comm TVECT at %08lx\n", mi_open_comm_tvect));
|
||||
if (mi_open_comm_tvect == 0)
|
||||
return false;
|
||||
mi_close_comm_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\015mi_close_comm");
|
||||
mi_close_comm_tvect = FindLibSymbol("\013OTKernelLib", "\015mi_close_comm");
|
||||
D(bug("mi_close_comm TVECT at %08lx\n", mi_close_comm_tvect));
|
||||
if (mi_close_comm_tvect == 0)
|
||||
return false;
|
||||
mi_next_ptr_tvect = (uint32)FindLibSymbol("\013OTKernelLib", "\013mi_next_ptr");
|
||||
mi_next_ptr_tvect = FindLibSymbol("\013OTKernelLib", "\013mi_next_ptr");
|
||||
D(bug("mi_next_ptr TVECT at %08lx\n", mi_next_ptr_tvect));
|
||||
if (mi_next_ptr_tvect == 0)
|
||||
return false;
|
||||
@ -1542,7 +1545,7 @@ static void DLPI_enable_multi(DLPIStream *the_stream, queue_t *q, mblk_t *mp)
|
||||
AO_enable_multicast(reqaddr);
|
||||
|
||||
// Add new address to multicast list
|
||||
uint8 *addr = (uint8 *)Mac_sysalloc(kEnetPhysicalAddressLength);
|
||||
uint8 *addr = Mac2HostAddr(Mac_sysalloc(kEnetPhysicalAddressLength));
|
||||
OTCopy48BitAddress(reqaddr, addr);
|
||||
the_stream->AddMulticast(addr);
|
||||
|
||||
@ -1580,7 +1583,7 @@ static void DLPI_disable_multi(DLPIStream *the_stream, queue_t *q, mblk_t *mp)
|
||||
|
||||
// Found, then remove
|
||||
the_stream->RemoveMulticast(addr);
|
||||
Mac_sysfree(addr);
|
||||
Mac_sysfree(Host2MacAddr(addr));
|
||||
|
||||
// Tell add-on to disable multicast address
|
||||
AO_disable_multicast(reqaddr);
|
||||
|
@ -353,12 +353,12 @@ extern void Enqueue(uint32 elem, uint32 list); // Enqueue QElem to list
|
||||
extern int FindFreeDriveNumber(int num); // Find first free drive number, starting at "num"
|
||||
extern void MountVolume(void *fh); // Mount volume with given file handle (see sys.h)
|
||||
extern void FileDiskLayout(loff_t size, uint8 *data, loff_t &start_byte, loff_t &real_size); // Calculate disk image file layout given file size and first 256 data bytes
|
||||
extern void *FindLibSymbol(char *lib, char *sym); // Find symbol in shared library
|
||||
extern uint32 FindLibSymbol(char *lib, char *sym); // Find symbol in shared library
|
||||
extern void InitCallUniversalProc(void); // Init CallUniversalProc()
|
||||
extern long CallUniversalProc(void *upp, uint32 info); // CallUniversalProc()
|
||||
extern uint32 TimeToMacTime(time_t t); // Convert time_t value to MacOS time
|
||||
extern void *Mac_sysalloc(uint32 size); // Allocate block in MacOS system heap zone
|
||||
extern void Mac_sysfree(void * p); // Release block occupied by the nonrelocatable block p
|
||||
extern uint32 Mac_sysalloc(uint32 size); // Allocate block in MacOS system heap zone
|
||||
extern void Mac_sysfree(uint32 addr); // Release block occupied by the nonrelocatable block p
|
||||
|
||||
// Construct four-character-code from string
|
||||
#define FOURCC(a,b,c,d) (((uint32)(a) << 24) | ((uint32)(b) << 16) | ((uint32)(c) << 8) | (uint32)(d))
|
||||
|
@ -58,15 +58,15 @@ static inline int16 CloseConnection(uint32 *arg1)
|
||||
{
|
||||
return (int16)CallMacOS1(cc_ptr, cc_tvect, arg1);
|
||||
}
|
||||
typedef void *(*nps_ptr)(uint32);
|
||||
typedef uint32 (*nps_ptr)(uint32);
|
||||
static uint32 nps_tvect = 0;
|
||||
static inline void *NewPtrSys(uint32 arg1)
|
||||
static inline uint32 NewPtrSys(uint32 arg1)
|
||||
{
|
||||
return (void *)CallMacOS1(nps_ptr, nps_tvect, arg1);
|
||||
return CallMacOS1(nps_ptr, nps_tvect, arg1);
|
||||
}
|
||||
typedef void (*d_ptr)(void *);
|
||||
typedef void (*d_ptr)(uint32);
|
||||
static uint32 d_tvect = 0;
|
||||
static inline void DisposePtr(void *arg1)
|
||||
static inline void DisposePtr(uint32 arg1)
|
||||
{
|
||||
CallMacOS1(d_ptr, d_tvect, arg1);
|
||||
}
|
||||
@ -163,7 +163,7 @@ void FileDiskLayout(loff_t size, uint8 *data, loff_t &start_byte, loff_t &real_s
|
||||
* lib and sym must be Pascal strings!
|
||||
*/
|
||||
|
||||
void *FindLibSymbol(char *lib_str, char *sym_str)
|
||||
uint32 FindLibSymbol(char *lib_str, char *sym_str)
|
||||
{
|
||||
SheepVar32 conn_id = 0;
|
||||
SheepVar32 main_addr = 0;
|
||||
@ -202,7 +202,7 @@ void *FindLibSymbol(char *lib_str, char *sym_str)
|
||||
Execute68k(proc1, &r);
|
||||
D(bug(" GetSharedLibrary: ret %d, connection ID %ld, main %p\n", (int16)r.d[0], conn_id.value(), main_addr.value()));
|
||||
if (r.d[0])
|
||||
return NULL;
|
||||
return 0;
|
||||
|
||||
// Find symbol
|
||||
static const uint8 proc2_template[] = {
|
||||
@ -225,9 +225,9 @@ void *FindLibSymbol(char *lib_str, char *sym_str)
|
||||
D(bug(" FindSymbol1: ret %d, sym_addr %p, sym_class %ld\n", (int16)r.d[0], sym_addr.value(), sym_class.value()));
|
||||
//!! CloseConnection()?
|
||||
if (r.d[0])
|
||||
return NULL;
|
||||
return 0;
|
||||
else
|
||||
return (void *)sym_addr.value();
|
||||
return sym_addr.value();
|
||||
|
||||
} else {
|
||||
|
||||
@ -239,14 +239,14 @@ void *FindLibSymbol(char *lib_str, char *sym_str)
|
||||
res = GetSharedLibrary(lib.addr(), FOURCC('p','w','p','c'), 1, conn_id.addr(), main_addr.addr(), err.addr());
|
||||
D(bug(" GetSharedLibrary: ret %d, connection ID %ld, main %p\n", res, conn_id.value(), main_addr.value()));
|
||||
if (res)
|
||||
return NULL;
|
||||
return 0;
|
||||
res = FindSymbol(conn_id.value(), sym.addr(), sym_addr.addr(), sym_class.addr());
|
||||
D(bug(" FindSymbol: ret %d, sym_addr %p, sym_class %ld\n", res, sym_addr.value(), sym_class.value()));
|
||||
//!!?? CloseConnection(&conn_id);
|
||||
if (res)
|
||||
return NULL;
|
||||
return 0;
|
||||
else
|
||||
return (void *)sym_addr.value();
|
||||
return sym_addr.value();
|
||||
}
|
||||
}
|
||||
|
||||
@ -257,42 +257,42 @@ void *FindLibSymbol(char *lib_str, char *sym_str)
|
||||
|
||||
void InitCallUniversalProc()
|
||||
{
|
||||
cu_tvect = (uint32)FindLibSymbol("\014InterfaceLib", "\021CallUniversalProc");
|
||||
cu_tvect = FindLibSymbol("\014InterfaceLib", "\021CallUniversalProc");
|
||||
D(bug("CallUniversalProc TVECT at %08lx\n", cu_tvect));
|
||||
if (cu_tvect == 0) {
|
||||
printf("FATAL: Can't find CallUniversalProc()\n");
|
||||
QuitEmulator();
|
||||
}
|
||||
|
||||
gsl_tvect = (uint32)FindLibSymbol("\014InterfaceLib", "\020GetSharedLibrary");
|
||||
gsl_tvect = FindLibSymbol("\014InterfaceLib", "\020GetSharedLibrary");
|
||||
D(bug("GetSharedLibrary TVECT at %08lx\n", gsl_tvect));
|
||||
if (gsl_tvect == 0) {
|
||||
printf("FATAL: Can't find GetSharedLibrary()\n");
|
||||
QuitEmulator();
|
||||
}
|
||||
|
||||
fs_tvect = (uint32)FindLibSymbol("\014InterfaceLib", "\012FindSymbol");
|
||||
fs_tvect = FindLibSymbol("\014InterfaceLib", "\012FindSymbol");
|
||||
D(bug("FindSymbol TVECT at %08lx\n", fs_tvect));
|
||||
if (fs_tvect == 0) {
|
||||
printf("FATAL: Can't find FindSymbol()\n");
|
||||
QuitEmulator();
|
||||
}
|
||||
|
||||
cc_tvect = (uint32)FindLibSymbol("\014InterfaceLib", "\017CloseConnection");
|
||||
cc_tvect = FindLibSymbol("\014InterfaceLib", "\017CloseConnection");
|
||||
D(bug("CloseConnection TVECT at %08lx\n", cc_tvect));
|
||||
if (cc_tvect == 0) {
|
||||
printf("FATAL: Can't find CloseConnection()\n");
|
||||
QuitEmulator();
|
||||
}
|
||||
|
||||
nps_tvect = (uint32)FindLibSymbol("\014InterfaceLib", "\011NewPtrSys");
|
||||
nps_tvect = FindLibSymbol("\014InterfaceLib", "\011NewPtrSys");
|
||||
D(bug("NewPtrSys TVECT at %08lx\n", nps_tvect));
|
||||
if (nps_tvect == 0) {
|
||||
printf("FATAL: Can't find NewPtrSys()\n");
|
||||
QuitEmulator();
|
||||
}
|
||||
|
||||
d_tvect = (uint32)FindLibSymbol("\014InterfaceLib", "\012DisposePtr");
|
||||
d_tvect = FindLibSymbol("\014InterfaceLib", "\012DisposePtr");
|
||||
D(bug("DisposePtr TVECT at %08lx\n", d_tvect));
|
||||
if (d_tvect == 0) {
|
||||
printf("FATAL: Can't find DisposePtr()\n");
|
||||
@ -343,12 +343,12 @@ uint32 TimeToMacTime(time_t t)
|
||||
* Memory allocators in MacOS system heap zone
|
||||
*/
|
||||
|
||||
void *Mac_sysalloc(uint32 size)
|
||||
uint32 Mac_sysalloc(uint32 size)
|
||||
{
|
||||
return NewPtrSys(size);
|
||||
}
|
||||
|
||||
void Mac_sysfree(void *p)
|
||||
void Mac_sysfree(uint32 addr)
|
||||
{
|
||||
DisposePtr(p);
|
||||
DisposePtr(addr);
|
||||
}
|
||||
|
@ -343,9 +343,9 @@ void DoPatchNameRegistry(void)
|
||||
void PatchNameRegistry(void)
|
||||
{
|
||||
// Find RegistryCStrEntryCreate() and RegistryPropertyCreate() TVECTs
|
||||
rcec_tvect = (uint32)FindLibSymbol("\017NameRegistryLib", "\027RegistryCStrEntryCreate");
|
||||
rcec_tvect = FindLibSymbol("\017NameRegistryLib", "\027RegistryCStrEntryCreate");
|
||||
D(bug("RegistryCStrEntryCreate TVECT at %08x\n", rcec_tvect));
|
||||
rpc_tvect = (uint32)FindLibSymbol("\017NameRegistryLib", "\026RegistryPropertyCreate");
|
||||
rpc_tvect = FindLibSymbol("\017NameRegistryLib", "\026RegistryPropertyCreate");
|
||||
D(bug("RegistryPropertyCreate TVECT at %08x\n", rpc_tvect));
|
||||
if (rcec_tvect == 0 || rpc_tvect == 0) {
|
||||
ErrorAlert(GetString(STR_NO_NAME_REGISTRY_ERR));
|
||||
|
@ -59,7 +59,7 @@ int16 SerialOpen(uint32 pb, uint32 dce)
|
||||
D(bug("SerialOpen pb %08lx, dce %08lx\n", pb, dce));
|
||||
|
||||
// Get IOCommandIsComplete function
|
||||
iocic_tvect = (uint32)FindLibSymbol("\021DriverServicesLib", "\023IOCommandIsComplete");
|
||||
iocic_tvect = FindLibSymbol("\021DriverServicesLib", "\023IOCommandIsComplete");
|
||||
D(bug("IOCommandIsComplete TVECT at %08lx\n", iocic_tvect));
|
||||
if (iocic_tvect == 0) {
|
||||
printf("FATAL: SerialOpen(): Can't find IOCommandIsComplete()\n");
|
||||
@ -82,8 +82,10 @@ int16 SerialOpen(uint32 pb, uint32 dce)
|
||||
return res;
|
||||
|
||||
// Allocate Deferred Task structures
|
||||
uint32 input_dt = the_port->input_dt = (uint32)the_port->dt_store;
|
||||
uint32 output_dt = the_port->output_dt = (uint32)the_port->dt_store + SIZEOF_serdt;
|
||||
if ((the_port->dt_store = Mac_sysalloc(SIZEOF_serdt * 2)) == 0)
|
||||
return openErr;
|
||||
uint32 input_dt = the_port->input_dt = the_port->dt_store;
|
||||
uint32 output_dt = the_port->output_dt = the_port->dt_store + SIZEOF_serdt;
|
||||
D(bug(" input_dt %08lx, output_dt %08lx\n", input_dt, output_dt));
|
||||
|
||||
WriteMacInt16(input_dt + qType, dtQType);
|
||||
@ -270,6 +272,7 @@ int16 SerialClose(uint32 pb, uint32 dce)
|
||||
// Close port if open
|
||||
SERDPort *the_port = the_serd_port[(-(int16)ReadMacInt16(dce + dCtlRefNum)-6) >> 1];
|
||||
if (the_port->is_open) {
|
||||
Mac_sysfree(the_port->dt_store);
|
||||
int16 res = the_port->close();
|
||||
the_port->is_open = false;
|
||||
return res;
|
||||
|
@ -889,35 +889,35 @@ int16 VideoDoDriverIO(uint32 spaceID, uint32 commandID, uint32 commandContents,
|
||||
delete private_data->gammaTable;
|
||||
delete private_data;
|
||||
|
||||
iocic_tvect = (uint32)FindLibSymbol("\021DriverServicesLib", "\023IOCommandIsComplete");
|
||||
iocic_tvect = FindLibSymbol("\021DriverServicesLib", "\023IOCommandIsComplete");
|
||||
D(bug("IOCommandIsComplete TVECT at %08lx\n", iocic_tvect));
|
||||
if (iocic_tvect == 0) {
|
||||
printf("FATAL: VideoDoDriverIO(): Can't find IOCommandIsComplete()\n");
|
||||
err = -1;
|
||||
break;
|
||||
}
|
||||
vslnewis_tvect = (uint32)FindLibSymbol("\020VideoServicesLib", "\026VSLNewInterruptService");
|
||||
vslnewis_tvect = FindLibSymbol("\020VideoServicesLib", "\026VSLNewInterruptService");
|
||||
D(bug("VSLNewInterruptService TVECT at %08lx\n", vslnewis_tvect));
|
||||
if (vslnewis_tvect == 0) {
|
||||
printf("FATAL: VideoDoDriverIO(): Can't find VSLNewInterruptService()\n");
|
||||
err = -1;
|
||||
break;
|
||||
}
|
||||
vsldisposeis_tvect = (uint32)FindLibSymbol("\020VideoServicesLib", "\032VSLDisposeInterruptService");
|
||||
vsldisposeis_tvect = FindLibSymbol("\020VideoServicesLib", "\032VSLDisposeInterruptService");
|
||||
D(bug("VSLDisposeInterruptService TVECT at %08lx\n", vsldisposeis_tvect));
|
||||
if (vsldisposeis_tvect == 0) {
|
||||
printf("FATAL: VideoDoDriverIO(): Can't find VSLDisposeInterruptService()\n");
|
||||
err = -1;
|
||||
break;
|
||||
}
|
||||
vsldois_tvect = (uint32)FindLibSymbol("\020VideoServicesLib", "\025VSLDoInterruptService");
|
||||
vsldois_tvect = FindLibSymbol("\020VideoServicesLib", "\025VSLDoInterruptService");
|
||||
D(bug("VSLDoInterruptService TVECT at %08lx\n", vsldois_tvect));
|
||||
if (vsldois_tvect == 0) {
|
||||
printf("FATAL: VideoDoDriverIO(): Can't find VSLDoInterruptService()\n");
|
||||
err = -1;
|
||||
break;
|
||||
}
|
||||
nqdmisc_tvect = (uint32)FindLibSymbol("\014InterfaceLib", "\007NQDMisc");
|
||||
nqdmisc_tvect = FindLibSymbol("\014InterfaceLib", "\007NQDMisc");
|
||||
D(bug("NQDMisc TVECT at %08lx\n", nqdmisc_tvect));
|
||||
if (nqdmisc_tvect == 0) {
|
||||
printf("FATAL: VideoDoDriverIO(): Can't find NQDMisc()\n");
|
||||
|
Loading…
Reference in New Issue
Block a user