diff --git a/import/OpenXDK/include/xboxkrnl/ex.h b/import/OpenXDK/include/xboxkrnl/ex.h index 8e8b84b08..985884744 100644 --- a/import/OpenXDK/include/xboxkrnl/ex.h +++ b/import/OpenXDK/include/xboxkrnl/ex.h @@ -172,47 +172,47 @@ XBSYSAPI EXPORTNUM(34) PLIST_ENTRY FASTCALL ExfInterlockedRemoveHeadList IN PKSPIN_LOCK Lock ); -XBSYSAPI EXPORTNUM(51) LONG FASTCALL InterlockedCompareExchange +XBSYSAPI EXPORTNUM(51) LONG FASTCALL XbInterlockedCompareExchange ( IN OUT volatile PLONG Destination, IN LONG Exchange, IN LONG Comparand ); -XBSYSAPI EXPORTNUM(52) LONG FASTCALL InterlockedDecrement +XBSYSAPI EXPORTNUM(52) LONG FASTCALL XbInterlockedDecrement ( IN OUT PLONG Addend ); -XBSYSAPI EXPORTNUM(53) LONG FASTCALL InterlockedIncrement +XBSYSAPI EXPORTNUM(53) LONG FASTCALL XbInterlockedIncrement ( IN OUT PLONG Addend ); -XBSYSAPI EXPORTNUM(54) LONG FASTCALL InterlockedExchange +XBSYSAPI EXPORTNUM(54) LONG FASTCALL XbInterlockedExchange ( IN volatile PLONG Destination, IN LONG Value ); -XBSYSAPI EXPORTNUM(55) LONG FASTCALL InterlockedExchangeAdd +XBSYSAPI EXPORTNUM(55) LONG FASTCALL XbInterlockedExchangeAdd ( IN volatile PLONG Addend, IN LONG Value ); // Dxbx Note : The Xbox1 SINGLE_LIST strucures are the same as in WinNT -XBSYSAPI EXPORTNUM(56) SINGLE_LIST_ENTRY * FASTCALL InterlockedFlushSList +XBSYSAPI EXPORTNUM(56) SINGLE_LIST_ENTRY * FASTCALL XbInterlockedFlushSList ( IN PSLIST_HEADER ListHead ); -XBSYSAPI EXPORTNUM(57) SLIST_ENTRY * FASTCALL InterlockedPopEntrySList +XBSYSAPI EXPORTNUM(57) SLIST_ENTRY * FASTCALL XbInterlockedPopEntrySList ( IN PSLIST_HEADER ListHead ); -XBSYSAPI EXPORTNUM(58) SLIST_ENTRY * FASTCALL InterlockedPushEntrySList +XBSYSAPI EXPORTNUM(58) SLIST_ENTRY * FASTCALL XbInterlockedPushEntrySList ( IN PSLIST_HEADER ListHead, IN PSLIST_ENTRY ListEntry diff --git a/import/OpenXDK/include/xboxkrnl/xboxkrnl.h b/import/OpenXDK/include/xboxkrnl/xboxkrnl.h index 11209e0ce..7fe50acf1 100644 --- a/import/OpenXDK/include/xboxkrnl/xboxkrnl.h +++ b/import/OpenXDK/include/xboxkrnl/xboxkrnl.h @@ -287,8 +287,12 @@ LIST_ENTRY, *PLIST_ENTRY; typedef struct _SINGLE_LIST_ENTRY { struct _SINGLE_LIST_ENTRY *Next; -} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; +} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY, SLIST_ENTRY, *PSLIST_ENTRY; +/* + * Disabled as Cxbx-Reloaded does not support Win64 compilation + * Win64 is not possible while using direct code execution, unless we add + * X86-X64 translation #if defined(_WIN64) // @@ -311,10 +315,13 @@ typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY { #else -typedef struct _SINGLE_LIST_ENTRY SLIST_ENTRY, *PSLIST_ENTRY; +typedef _SLIST_ENTRY { + struct _SLIST_ENTRY *Next; +} SLIST_ENTRY, *PSLIST_ENTRY; #endif // _WIN64 +*/ typedef union _SLIST_HEADER { ULONGLONG Alignment; struct { diff --git a/src/CxbxKrnl/EmuKrnl.cpp b/src/CxbxKrnl/EmuKrnl.cpp index 27816e09b..88e212f03 100644 --- a/src/CxbxKrnl/EmuKrnl.cpp +++ b/src/CxbxKrnl/EmuKrnl.cpp @@ -123,9 +123,9 @@ std::ostream& operator<<(std::ostream& os, const xboxkrnl::PLARGE_INTEGER& value using namespace xboxkrnl; -/* + // Source:ReactOS -XBSYSAPI EXPORTNUM(51) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedCompareExchange +XBSYSAPI EXPORTNUM(51) xboxkrnl::LONG FASTCALL xboxkrnl::XbInterlockedCompareExchange ( IN OUT volatile PLONG Destination, IN LONG Exchange, @@ -138,33 +138,33 @@ XBSYSAPI EXPORTNUM(51) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedCompareExcha LOG_FUNC_ARG(Comparand) LOG_FUNC_END; - RETURN(NtDll::InterlockedCompareExchange((NtDll::PLONG)Destination, (NtDll::LONG)Exchange, (NtDll::LONG)Comparand)); + RETURN(InterlockedCompareExchange((NtDll::PLONG)Destination, (NtDll::LONG)Exchange, (NtDll::LONG)Comparand)); } // Source:ReactOS -XBSYSAPI EXPORTNUM(52) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedDecrement +XBSYSAPI EXPORTNUM(52) xboxkrnl::LONG FASTCALL xboxkrnl::XbInterlockedDecrement ( IN OUT PLONG Addend ) { LOG_FUNC_ONE_ARG(Addend); - RETURN(NtDll::InterlockedDecrement((NtDll::PLONG)Addend)); + RETURN(InterlockedDecrement((NtDll::PLONG)Addend)); } // Source:ReactOS -XBSYSAPI EXPORTNUM(53) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedIncrement +XBSYSAPI EXPORTNUM(53) xboxkrnl::LONG FASTCALL xboxkrnl::XbInterlockedIncrement ( IN OUT PLONG Addend ) { LOG_FUNC_ONE_ARG(Addend); - RETURN(NtDll::InterlockedIncrement((NtDll::PLONG)Addend)); + RETURN(InterlockedIncrement((NtDll::PLONG)Addend)); } // Source:ReactOS -XBSYSAPI EXPORTNUM(54) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedExchange +XBSYSAPI EXPORTNUM(54) xboxkrnl::LONG FASTCALL xboxkrnl::XbInterlockedExchange ( IN volatile PLONG Destination, IN LONG Value @@ -175,11 +175,11 @@ XBSYSAPI EXPORTNUM(54) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedExchange LOG_FUNC_ARG(Value) LOG_FUNC_END; - RETURN(NtDll::InterlockedExchange((NtDll::PLONG)Destination, (NtDll::LONG)Value)); + RETURN(InterlockedExchange((NtDll::PLONG)Destination, (NtDll::LONG)Value)); } // Source:ReactOS -XBSYSAPI EXPORTNUM(55) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedExchangeAdd +XBSYSAPI EXPORTNUM(55) xboxkrnl::LONG FASTCALL xboxkrnl::XbInterlockedExchangeAdd ( IN volatile PLONG Addend, IN LONG Value @@ -190,34 +190,34 @@ XBSYSAPI EXPORTNUM(55) xboxkrnl::LONG FASTCALL xboxkrnl::InterlockedExchangeAdd LOG_FUNC_ARG(Value) LOG_FUNC_END; - RETURN(NtDll::InterlockedExchangeAdd((NtDll::PLONG)Addend, (NtDll::LONG)Value)); + RETURN(InterlockedExchangeAdd((NtDll::PLONG)Addend, (NtDll::LONG)Value)); } // Source:ReactOS // Dxbx Note : The Xbox1 SINGLE_LIST strucures are the same as in WinNT -XBSYSAPI EXPORTNUM(56) xboxkrnl::PSINGLE_LIST_ENTRY FASTCALL xboxkrnl::InterlockedFlushSList +XBSYSAPI EXPORTNUM(56) xboxkrnl::PSINGLE_LIST_ENTRY FASTCALL xboxkrnl::XbInterlockedFlushSList ( IN xboxkrnl::PSLIST_HEADER ListHead ) { LOG_FUNC_ONE_ARG(ListHead); - RETURN(NtDll::InterlockedFlushSList((NtDll::PSLIST_HEADER)ListHead)); + RETURN((xboxkrnl::PSINGLE_LIST_ENTRY)InterlockedFlushSList((::PSLIST_HEADER)ListHead)); } // Source:ReactOS -XBSYSAPI EXPORTNUM(57) xboxkrnl::PSLIST_ENTRY FASTCALL xboxkrnl::InterlockedPopEntrySList +XBSYSAPI EXPORTNUM(57) xboxkrnl::PSLIST_ENTRY FASTCALL xboxkrnl::XbInterlockedPopEntrySList ( IN PSLIST_HEADER ListHead ) { LOG_FUNC_ONE_ARG(ListHead); - RETURN(NtDll::InterlockedPopEntrySList((NtDll::PSLIST_HEADER)ListHead)); + RETURN((PSLIST_ENTRY)InterlockedPopEntrySList((::PSLIST_HEADER)ListHead)); } // Source:ReactOS -XBSYSAPI EXPORTNUM(58) xboxkrnl::PSLIST_ENTRY FASTCALL xboxkrnl::InterlockedPushEntrySList +XBSYSAPI EXPORTNUM(58) xboxkrnl::PSLIST_ENTRY FASTCALL xboxkrnl::XbInterlockedPushEntrySList ( IN PSLIST_HEADER ListHead, IN PSLIST_ENTRY ListEntry @@ -228,9 +228,9 @@ XBSYSAPI EXPORTNUM(58) xboxkrnl::PSLIST_ENTRY FASTCALL xboxkrnl::InterlockedPush LOG_FUNC_ARG(ListEntry) LOG_FUNC_END; - RETURN(NtDll::InterlockedPushEntrySList((NtDll::PSLIST_HEADER)ListHead, (NtDll::PSLIST_ENTRY)ListEntry)); + RETURN((xboxkrnl::PSLIST_ENTRY)InterlockedPushEntrySList((::PSLIST_HEADER)ListHead, (::PSLIST_ENTRY)ListEntry)); } -*/ + // ****************************************************************** // * 0x00A0 - KfRaiseIrql diff --git a/src/CxbxKrnl/EmuNtDll.h b/src/CxbxKrnl/EmuNtDll.h index 9b51045aa..d22c0c556 100644 --- a/src/CxbxKrnl/EmuNtDll.h +++ b/src/CxbxKrnl/EmuNtDll.h @@ -565,52 +565,6 @@ KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; // This is only the top of the actual definition. For the complete version, // see http://processhacker.sourceforge.net/doc/ntexapi_8h_source.html -/* -typedef LONG(FASTCALL *FPTR_InterlockedCompareExchange) -( - IN OUT volatile PLONG Destination, - IN LONG Exchange, - IN LONG Comparand -); - -typedef LONG(FASTCALL *FPTR_InterlockedDecrement) -( - IN OUT PLONG Addend -); - -typedef LONG(FASTCALL *FPTR_InterlockedExchange) -( - IN volatile PLONG Destination, - IN LONG Value -); - -typedef LONG(FASTCALL *FPTR_InterlockedExchangeAdd) -( - IN volatile PLONG Addend, - IN LONG Value -); - -typedef PSINGLE_LIST_ENTRY(FASTCALL *FPTR_InterlockedFlushSList) -( - IN PSLIST_HEADER ListHead -); - -typedef LONG(FASTCALL *FPTR_InterlockedIncrement) -( - IN OUT PLONG Addend -); - -typedef PSLIST_ENTRY(FASTCALL *FPTR_InterlockedPopEntrySList) -( - IN PSLIST_HEADER ListHead -); - -typedef PSLIST_ENTRY(FASTCALL *FPTR_InterlockedPushEntrySList) -( - IN PSLIST_HEADER ListHead, - IN PSLIST_ENTRY ListEntry -); -*/ // ****************************************************************** // * KeDelayExecutionThread diff --git a/src/CxbxKrnl/KernelThunk.cpp b/src/CxbxKrnl/KernelThunk.cpp index b5719ec1c..c560a0550 100644 --- a/src/CxbxKrnl/KernelThunk.cpp +++ b/src/CxbxKrnl/KernelThunk.cpp @@ -115,24 +115,14 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] = (uint32)FUNC(&xboxkrnl::HalRequestSoftwareInterrupt), // 0x0030 (48) (uint32)FUNC(&xboxkrnl::HalReturnToFirmware), // 0x0031 (49) (uint32)FUNC(&xboxkrnl::HalWriteSMBusValue), // 0x0032 (50) - (uint32)PANIC(0x0033), // 0x0033 (51) InterlockedCompareExchange - (uint32)PANIC(0x0034), // 0x0034 (52) InterlockedDecrement - (uint32)PANIC(0x0035), // 0x0035 (53) InterlockedIncrement - (uint32)PANIC(0x0036), // 0x0036 (54) InterlockedExchange - (uint32)PANIC(0x0037), // 0x0037 (55) InterlockedExchangeAdd - (uint32)PANIC(0x0038), // 0x0038 (56) InterlockedFlushSList - (uint32)PANIC(0x0039), // 0x0039 (57) InterlockedPopEntrySList - (uint32)PANIC(0x003A), // 0x003A (58) InterlockedPushEntrySList -/* - (uint32)FUNC(&xboxkrnl::InterlockedCompareExchange), // 0x0033 (51) - (uint32)FUNC(&xboxkrnl::InterlockedDecrement), // 0x0034 (52) - (uint32)FUNC(&xboxkrnl::InterlockedIncrement), // 0x0035 (53) - (uint32)FUNC(&xboxkrnl::InterlockedExchange), // 0x0036 (54) - (uint32)FUNC(&xboxkrnl::InterlockedExchangeAdd), // 0x0037 (55) - (uint32)FUNC(&xboxkrnl::InterlockedFlushSList), // 0x0038 (56) - (uint32)FUNC(&xboxkrnl::InterlockedPopEntrySList), // 0x0039 (57) - (uint32)FUNC(&xboxkrnl::InterlockedPushEntrySList), // 0x003A (58) -*/ + (uint32)FUNC(&xboxkrnl::XbInterlockedCompareExchange), // 0x0033 (51) + (uint32)FUNC(&xboxkrnl::XbInterlockedDecrement), // 0x0034 (52) + (uint32)FUNC(&xboxkrnl::XbInterlockedIncrement), // 0x0035 (53) + (uint32)FUNC(&xboxkrnl::XbInterlockedExchange), // 0x0036 (54) + (uint32)FUNC(&xboxkrnl::XbInterlockedExchangeAdd), // 0x0037 (55) + (uint32)FUNC(&xboxkrnl::XbInterlockedFlushSList), // 0x0038 (56) + (uint32)FUNC(&xboxkrnl::XbInterlockedPopEntrySList), // 0x0039 (57) + (uint32)FUNC(&xboxkrnl::XbInterlockedPushEntrySList), // 0x003A (58) (uint32)PANIC(0x003B), // 0x003B (59) IoAllocateIrp (uint32)PANIC(0x003C), // 0x003C (60) IoBuildAsynchronousFsdRequest (uint32)PANIC(0x003D), // 0x003D (61) IoBuildDeviceIoControlRequest