KiInitSystem
This commit is contained in:
parent
9827cfcaa3
commit
bd0eced253
|
@ -174,12 +174,6 @@ void FASTCALL KiWaitSatisfyAll
|
|||
break; \
|
||||
}
|
||||
|
||||
#define KiInsertWaitList(_WaitMode, _Thread) { \
|
||||
PLIST_ENTRY _ListHead; \
|
||||
_ListHead = &KiWaitInListHead; \
|
||||
InsertTailList(_ListHead, &(_Thread)->WaitListEntry); \
|
||||
}
|
||||
|
||||
|
||||
// ******************************************************************
|
||||
// * KeGetPcr()
|
||||
|
@ -1833,8 +1827,6 @@ xboxkrnl::PLARGE_INTEGER FASTCALL KiComputeWaitInterval(
|
|||
}
|
||||
}
|
||||
|
||||
xboxkrnl::LIST_ENTRY KiWaitInListHead;
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x009E - KeWaitForMultipleObjects()
|
||||
// ******************************************************************
|
||||
|
|
|
@ -62,6 +62,20 @@ xboxkrnl::KTIMER_TABLE_ENTRY KiTimerTableListHead[TIMER_TABLE_SIZE];
|
|||
xboxkrnl::KDPC KiTimerExpireDpc;
|
||||
|
||||
|
||||
VOID xboxkrnl::KiInitSystem()
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
InitializeListHead(&KiWaitInListHead);
|
||||
|
||||
KeInitializeDpc(&KiTimerExpireDpc, KiTimerExpiration, NULL);
|
||||
for (i = 0; i < TIMER_TABLE_SIZE; i++) {
|
||||
InitializeListHead(&KiTimerTableListHead[i].Entry);
|
||||
KiTimerTableListHead[i].Time.u.HighPart = 0xFFFFFFFF;
|
||||
KiTimerTableListHead[i].Time.u.LowPart = 0;
|
||||
}
|
||||
}
|
||||
|
||||
VOID xboxkrnl::KiClockIsr(unsigned int ScalingFactor)
|
||||
{
|
||||
KIRQL OldIrql;
|
||||
|
|
|
@ -31,16 +31,7 @@
|
|||
// * All rights reserved
|
||||
// *
|
||||
// ******************************************************************
|
||||
#pragma once
|
||||
|
||||
#define KiLockDispatcherDatabase(OldIrql) \
|
||||
*(OldIrql) = KeRaiseIrqlToDpcLevel()
|
||||
|
||||
#define KiLockApcQueue(Thread, OldIrql) \
|
||||
*(OldIrql) = KeRaiseIrqlToSynchLevel()
|
||||
|
||||
#define KiUnlockApcQueue(Thread, OldIrql) \
|
||||
KfLowerIrql((OldIrql))
|
||||
#pragma once
|
||||
|
||||
namespace xboxkrnl
|
||||
{
|
||||
|
@ -51,6 +42,9 @@ namespace xboxkrnl
|
|||
} KTIMER_TABLE_ENTRY, *PKTIMER_TABLE_ENTRY;
|
||||
|
||||
const ULONG CLOCK_TIME_INCREMENT = 0x2710;
|
||||
LIST_ENTRY KiWaitInListHead;
|
||||
|
||||
VOID KiInitSystem();
|
||||
|
||||
VOID KiClockIsr(
|
||||
IN unsigned int ScalingFactor
|
||||
|
@ -99,3 +93,18 @@ namespace xboxkrnl
|
|||
IN PKTIMER Timer
|
||||
);
|
||||
};
|
||||
|
||||
#define KiLockDispatcherDatabase(OldIrql) \
|
||||
*(OldIrql) = KeRaiseIrqlToDpcLevel()
|
||||
|
||||
#define KiLockApcQueue(Thread, OldIrql) \
|
||||
*(OldIrql) = KeRaiseIrqlToSynchLevel()
|
||||
|
||||
#define KiUnlockApcQueue(Thread, OldIrql) \
|
||||
KfLowerIrql((OldIrql))
|
||||
|
||||
#define KiInsertWaitList(_WaitMode, _Thread) { \
|
||||
PLIST_ENTRY _ListHead; \
|
||||
_ListHead = &KiWaitInListHead; \
|
||||
InsertTailList(_ListHead, &(_Thread)->WaitListEntry); \
|
||||
}
|
||||
|
|
|
@ -1579,10 +1579,6 @@ __declspec(noreturn) void CxbxKrnlInit
|
|||
// Read Xbox video mode from the SMC, store it in HalBootSMCVideoMode
|
||||
xboxkrnl::HalReadSMBusValue(SMBUS_ADDRESS_SYSTEM_MICRO_CONTROLLER, SMC_COMMAND_AV_PACK, FALSE, &xboxkrnl::HalBootSMCVideoMode);
|
||||
|
||||
// TODO: move much of this stuff to xboxkrnl::init();
|
||||
extern xboxkrnl::LIST_ENTRY KiWaitInListHead;
|
||||
InitializeListHead(&KiWaitInListHead);
|
||||
|
||||
if (bLLE_USB) {
|
||||
#if 1 // Reenable this when LLE USB actually works
|
||||
int ret;
|
||||
|
@ -1633,6 +1629,7 @@ __declspec(noreturn) void CxbxKrnlInit
|
|||
|
||||
InitXboxThread(g_CPUXbox);
|
||||
xboxkrnl::ObInitSystem();
|
||||
xboxkrnl::KiInitSystem();
|
||||
|
||||
EmuX86_Init();
|
||||
// Create the interrupt processing thread
|
||||
|
|
Loading…
Reference in New Issue