WIP : Interlocked functions from Dxbx
This commit is contained in:
parent
f9f3fa4b86
commit
6fd697663f
|
@ -124,10 +124,157 @@ std::ostream& operator<<(std::ostream& os, const xboxkrnl::PLARGE_INTEGER& value
|
|||
|
||||
using namespace xboxkrnl;
|
||||
|
||||
/*
|
||||
XBSYSAPI EXPORTNUM(51) __fastcall xboxkrnl::InterlockedCompareExchange(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}Exchange: LONG;
|
||||
{1 ECX}Destination: PLONG;
|
||||
{3 stack}Comparand: LONG
|
||||
): LONG; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedCompareExchange' +
|
||||
#13#10'(' +
|
||||
#13#10' Exchange : 0x%.08X' +
|
||||
#13#10' Destination : 0x%.08X' +
|
||||
#13#10' Comparand : 0x%.08X' +
|
||||
#13#10');',
|
||||
[Exchange, Destination, Comparand]);
|
||||
|
||||
RETURN(InterlockedCompareExchange({var}Destination^, Exchange, Comparand);
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(52) __fastcall xboxkrnl::InterlockedDecrement(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}FASTCALL_FIX_ARGUMENT_TAKING_EDX: DWORD;
|
||||
{1 ECX}Addend: PLONG // OUT, volatile
|
||||
): LONG; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedDecrement' +
|
||||
#13#10'(' +
|
||||
#13#10' Addend : 0x%.08X' +
|
||||
#13#10');',
|
||||
[Addend]);
|
||||
|
||||
RETURN(InterlockedDecrement({var}Addend^);
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(53) __fastcall xboxkrnl::InterlockedIncrement(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}FASTCALL_FIX_ARGUMENT_TAKING_EDX: DWORD;
|
||||
{1 ECX}Addend: PLONG // OUT, volatile
|
||||
): LONG; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedIncrement' +
|
||||
#13#10'(' +
|
||||
#13#10' Addend : 0x%.08X' +
|
||||
#13#10');',
|
||||
[Addend]);
|
||||
|
||||
RETURN(InterlockedIncrement({var}Addend^);
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(54) __fastcall xboxkrnl::InterlockedExchange(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}Value: LONG;
|
||||
{1 ECX}Destination: PLONG
|
||||
): LONG; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedExchange' +
|
||||
#13#10'(' +
|
||||
#13#10' Value : 0x%.08X' +
|
||||
#13#10' Destination : 0x%.08X' +
|
||||
#13#10');',
|
||||
[Value, Destination]);
|
||||
|
||||
RETURN(InterlockedExchange({var}Destination^, Value);
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(55) __fastcall xboxkrnl::InterlockedExchangeAdd(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}Value: LONG;
|
||||
{1 ECX}Addend: PLONG
|
||||
): LONG; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedExchangeAdd' +
|
||||
#13#10'(' +
|
||||
#13#10' Value : 0x%.08X' +
|
||||
#13#10' Addend : 0x%.08X' +
|
||||
#13#10');',
|
||||
[Value, Addend]);
|
||||
|
||||
RETURN(InterlockedExchangeAdd({var}Addend^, Value);
|
||||
};
|
||||
|
||||
// Dxbx Note : The Xbox1 SINGLE_LIST strucures are the same as in WinNT
|
||||
XBSYSAPI EXPORTNUM(56) __fastcall xboxkrnl::InterlockedFlushSList(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}FASTCALL_FIX_ARGUMENT_TAKING_EDX: DWORD;
|
||||
{1 ECX}ListHead: PSLIST_HEADER
|
||||
): PSINGLE_LIST_ENTRY; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedFlushSList' +
|
||||
#13#10'(' +
|
||||
#13#10' ListHead : 0x%.08X' +
|
||||
#13#10');',
|
||||
[ListHead]);
|
||||
|
||||
RETURN(InterlockedFlushSList(ListHead);
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(57) __fastcall xboxkrnl::InterlockedPopEntrySList(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}FASTCALL_FIX_ARGUMENT_TAKING_EDX: DWORD;
|
||||
{1 ECX}ListHead: PSLIST_HEADER
|
||||
): PSLIST_ENTRY; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedPopEntrySList' +
|
||||
#13#10'(' +
|
||||
#13#10' ListHead : 0x%.08X' +
|
||||
#13#10');',
|
||||
[ListHead]);
|
||||
|
||||
RETURN(InterlockedPopEntrySList(ListHead);
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(58) __fastcall xboxkrnl::InterlockedPushEntrySList(
|
||||
{0 EAX}FASTCALL_FIX_ARGUMENT_TAKING_EAX: DWORD;
|
||||
{2 EDX}ListEntry: PSLIST_ENTRY;
|
||||
{1 ECX}ListHead: PSLIST_HEADER
|
||||
): PSLIST_ENTRY; register; // fastcall simulation - See Translation guide
|
||||
// Source:ReactOS Branch:Dxbx Translator:PatrickvL Done:100
|
||||
{
|
||||
if MayLog(lfUnit) then
|
||||
DbgPrintf('EmuKrnl : InterlockedPopEntrySList' +
|
||||
#13#10'(' +
|
||||
#13#10' ListEntry : 0x%.08X' +
|
||||
#13#10' ListHead : 0x%.08X' +
|
||||
#13#10');',
|
||||
[ListEntry, ListHead]);
|
||||
|
||||
RETURN(InterlockedPushEntrySList(ListHead, ListEntry);
|
||||
};
|
||||
*/
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00A0 - KfRaiseIrql
|
||||
// ******************************************************************
|
||||
// Raises the hardware priority (irql)
|
||||
// NewIrql = Irql to raise to
|
||||
// RETURN VALUE previous irq level
|
||||
XBSYSAPI EXPORTNUM(160) xboxkrnl::UCHAR _fastcall xboxkrnl::KfRaiseIrql
|
||||
(
|
||||
IN UCHAR NewIrql
|
||||
|
@ -163,6 +310,8 @@ XBSYSAPI EXPORTNUM(160) xboxkrnl::UCHAR _fastcall xboxkrnl::KfRaiseIrql
|
|||
// ******************************************************************
|
||||
// * 0x00A1 - KfLowerIrql
|
||||
// ******************************************************************
|
||||
// Restores the irq level on the current processor
|
||||
// ARGUMENTS NewIrql = Irql to lower to
|
||||
XBSYSAPI EXPORTNUM(161) VOID _fastcall xboxkrnl::KfLowerIrql
|
||||
(
|
||||
IN UCHAR NewIrql
|
||||
|
@ -176,5 +325,79 @@ XBSYSAPI EXPORTNUM(161) VOID _fastcall xboxkrnl::KfLowerIrql
|
|||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(162) xboxkrnl::ULONG_PTR xboxkrnl::KiBugCheckData[5] = { NULL, NULL, NULL, NULL, NULL };
|
||||
|
||||
/*
|
||||
XBSYSAPI EXPORTNUM(163) xboxkrnl::KiUnlockDispatcherDatabase(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('KiUnlockDispatcherDatabase');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(252) xboxkrnl::PhyGetLinkState(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('PhyGetLinkState');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(253) xboxkrnl::PhyInitialize(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('PhyInitialize');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
*/
|
||||
|
||||
// TODO : Determine size, structure & filling behind this
|
||||
XBSYSAPI EXPORTNUM(357) xboxkrnl::BYTE xboxkrnl::IdexChannelObject[0x100] = { };
|
||||
|
||||
/*
|
||||
XBSYSAPI EXPORTNUM(367) xboxkrnl::UnknownAPI367(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('UnknownAPI367');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(368) xboxkrnl::UnknownAPI368(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('UnknownAPI368');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(369) xboxkrnl::UnknownAPI369(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('UnknownAPI369');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(370} PROFILING XProfpControl(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('UnknownAPI370');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(371} PROFILING XProfpGetData(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('UnknownAPI371');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(372} PROFILING IrtClientInitFast(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('UnknownAPI372');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
|
||||
XBSYSAPI EXPORTNUM(373} PROFILING IrtSweep(): NTSTATUS; stdcall;
|
||||
// Branch:Dxbx Translator:PatrickvL Done:0
|
||||
{
|
||||
Unimplemented('UnknownAPI373');
|
||||
RETURN(S_OK;
|
||||
};
|
||||
*/
|
Loading…
Reference in New Issue