/* * \brief Dummy implementations of symbols needed by VirtualBox * \author Norman Feske * \date 2013-08-22 */ /* * Copyright (C) 2013-2014 Genode Labs GmbH * * This file is distributed under the terms of the GNU General Public License * version 2. */ #include #include /* libc memcpy */ #include "VMMInternal.h" #include "EMInternal.h" #include "PDMInternal.h" #include #include #include #include #include #include #include #include #include #include #include "util.h" static const bool trace = false; #define TRACE(retval) \ { \ if (trace) \ PDBG("called, return dummy, eip=%p", \ __builtin_return_address(0)); \ return retval; \ } RT_C_DECLS_BEGIN RTDECL(int) RTMemProtect(void *pv, size_t cb, unsigned fProtect) RT_NO_THROW { if (!trace) return VINF_SUCCESS; char type[4]; if (fProtect & RTMEM_PROT_READ) type[0] = 'r'; else type[0] = '-'; if (fProtect & RTMEM_PROT_WRITE) type[1] = 'w'; else type[1] = '-'; if (fProtect & RTMEM_PROT_EXEC) type[2] = 'x'; else type[2] = '-'; type[3] = 0; PDBG("called - not implemented - 0x%p+%0zx protect %x - '%s'", pv, cb, fProtect, type); return VINF_SUCCESS; } static_assert(sizeof(RTR0PTR) == sizeof(RTR3PTR), "pointer transformation bug"); static_assert(sizeof(RTR0PTR) == sizeof(void *) , "pointer transformation bug"); static_assert(sizeof(RTR3PTR) == sizeof(RTR0PTR), "pointer transformation bug"); RTR0PTR MMHyperR3ToR0(PVM pVM, RTR3PTR R3Ptr) { return (RTR0PTR)R3Ptr; } RTRCPTR MMHyperR3ToRC(PVM pVM, RTR3PTR R3Ptr) { return to_rtrcptr(R3Ptr); } RTR0PTR MMHyperCCToR0(PVM pVM, void *pv) { return (RTR0PTR)pv; } RTRCPTR MMHyperCCToRC(PVM pVM, void *pv) { return to_rtrcptr(pv); } RTR3PTR MMHyperR0ToR3(PVM pVM, RTR0PTR R0Ptr) { return (RTR3PTR*)(R0Ptr | 0UL); } RTR3PTR MMHyperRCToR3(PVM pVM, RTRCPTR RCPtr) { static_assert(sizeof(RCPtr) <= sizeof(RTR3PTR), "ptr transformation bug"); return reinterpret_cast(0UL | RCPtr); } /* debugger */ int DBGFR3Init(PVM) TRACE(VINF_SUCCESS) int DBGFR3EventSrcV(PVM, DBGFEVENTTYPE, const char *, unsigned, const char *, const char *, va_list) TRACE(VINF_SUCCESS) void DBGFR3Relocate(PVM, RTGCINTPTR) TRACE() int DBGFR3RegRegisterDevice(PVM, PCDBGFREGDESC, PPDMDEVINS, const char*, uint32_t) TRACE(VINF_SUCCESS) int DBGFR3AsSymbolByAddr(PUVM, RTDBGAS, PCDBGFADDRESS, uint32_t, PRTGCINTPTR, PRTDBGSYMBOL, PRTDBGMOD) TRACE(VERR_INVALID_HANDLE) int DBGFR3Term(PVM) TRACE(VINF_SUCCESS) int DBGFR3Event(PVM pVM, DBGFEVENTTYPE enmEvent) { PDBG("%u", enmEvent); TRACE(VERR_NOT_SUPPORTED) } /* called by 'VMMR3InitRC', but we don't use GC */ int cpumR3DbgInit(PVM) TRACE(VINF_SUCCESS) void CPUMPushHyper(PVMCPU, uint32_t) TRACE() int PGMFlushTLB(PVMCPU, uint64_t, bool) TRACE(VINF_SUCCESS) int PGMInvalidatePage(PVMCPU, RTGCPTR) TRACE(VINF_SUCCESS) int PGMHandlerPhysicalPageTempOff(PVM, RTGCPHYS, RTGCPHYS) TRACE(VINF_SUCCESS) void PGMPhysReleasePageMappingLock(PVM, PPGMPAGEMAPLOCK) TRACE() int PGMR3CheckIntegrity(PVM) TRACE(VINF_SUCCESS) int PGMR3FinalizeMappings(PVM) TRACE(VINF_SUCCESS) int PGMR3InitCompleted(PVM, VMINITCOMPLETED) TRACE(VINF_SUCCESS) int PGMR3InitDynMap(PVM) TRACE(VINF_SUCCESS) int PGMR3InitFinalize(PVM) TRACE(VINF_SUCCESS) int PGMR3HandlerVirtualRegister(PVM, PGMVIRTHANDLERTYPE, RTGCPTR, RTGCPTR, PFNPGMR3VIRTINVALIDATE, PFNPGMR3VIRTHANDLER, const char*, const char*, const char*) TRACE(VINF_SUCCESS) int PGMHandlerVirtualDeregister(PVM, RTGCPTR) TRACE(VINF_SUCCESS) void PGMR3Relocate(PVM, RTGCINTPTR) TRACE() int PGMChangeMode(PVMCPU, uint64_t, uint64_t, uint64_t) TRACE(VINF_SUCCESS) int PGMR3ChangeMode(PVM, PVMCPU, PGMMODE) TRACE(VINF_SUCCESS) /* required for Netware */ void PGMCr0WpEnabled(PVMCPU pVCpu) TRACE() /* debugger */ void DBGFR3PowerOff(PVM pVM) TRACE() int DBGFR3DisasInstrCurrent(PVMCPU, char *, uint32_t) TRACE(VINF_SUCCESS) int vmmR3SwitcherInit(PVM pVM) TRACE(VINF_SUCCESS) void vmmR3SwitcherRelocate(PVM, RTGCINTPTR) TRACE() int VMMR3DisableSwitcher(PVM) TRACE(VINF_SUCCESS) int emR3InitDbg(PVM pVM) TRACE(VINF_SUCCESS) int FTMR3Init(PVM) TRACE(VINF_SUCCESS) int FTMR3SetCheckpoint(PVM, FTMCHECKPOINTTYPE) TRACE(-1) int FTMSetCheckpoint(PVM, FTMCHECKPOINTTYPE) TRACE(VINF_SUCCESS) int FTMR3Term(PVM) TRACE(VINF_SUCCESS) int IEMR3Init(PVM) TRACE(VINF_SUCCESS) int IEMR3Term(PVM) TRACE(VINF_SUCCESS) void IEMR3Relocate(PVM) TRACE() void HMR3Relocate(PVM) TRACE() void HMR3Reset(PVM pVM) TRACE() int SELMR3Init(PVM) TRACE(VINF_SUCCESS) int SELMR3Term(PVM) TRACE(VINF_SUCCESS) int SELMR3InitFinalize(PVM) TRACE(VINF_SUCCESS) void SELMR3Relocate(PVM) TRACE() void SELMR3Reset(PVM) TRACE() void SELMR3DisableMonitoring(PVM) TRACE() int IOMR3IOPortRegisterRC(PVM, PPDMDEVINS, RTIOPORT, RTUINT, RTRCPTR, RTRCPTR, RTRCPTR, RTRCPTR, RTRCPTR, const char*) TRACE(VINF_SUCCESS) int IOMR3IOPortRegisterR0(PVM, PPDMDEVINS, RTIOPORT, RTUINT, RTR0PTR, RTHCUINTPTR, RTHCUINTPTR, RTHCUINTPTR, RTHCUINTPTR, const char*) TRACE(VINF_SUCCESS) int IOMR3MmioRegisterR0(PVM, PPDMDEVINS, RTGCPHYS, uint32_t, RTR0PTR, RTHCUINTPTR, RTHCUINTPTR, RTHCUINTPTR) TRACE(VINF_SUCCESS) int IOMR3MmioRegisterRC(PVM, PPDMDEVINS, RTGCPHYS, uint32_t, RTGCPTR, RTRCPTR, RTRCPTR, RTRCPTR) TRACE(VINF_SUCCESS) void IOMR3Relocate(PVM, RTGCINTPTR) TRACE() void IOMR3Reset(PVM) TRACE() int SUPR3SetVMForFastIOCtl(PVMR0) TRACE(VINF_SUCCESS) _AVLOU32NodeCore* RTAvloU32RemoveBestFit(PAVLOU32TREE, AVLOU32KEY, bool) TRACE(VINF_SUCCESS) int RTAvlrFileOffsetDestroy(PAVLRFOFFTREE, PAVLRFOFFCALLBACK, void*) TRACE(VINF_SUCCESS) /* module loader of pluggable device manager */ int pdmR3LdrInitU(PUVM) TRACE(VINF_SUCCESS) int PDMR3LdrLoadVMMR0U(PUVM) TRACE(VINF_SUCCESS) void PDMR3LdrRelocateU(PUVM, RTGCINTPTR) TRACE() int pdmR3LoadR3U(PUVM, const char *, const char *) TRACE(VINF_SUCCESS) void pdmR3LdrTermU(PUVM) TRACE() char *pdmR3FileR3(const char * file, bool) { char * pv = reinterpret_cast(RTMemTmpAllocZ(1)); if (trace) PDBG("file %s %s %p", file, pv, __builtin_return_address(0)); TRACE(pv) } RT_C_DECLS_END