C to C++ migration and refactoring #17
@@ -43,7 +43,7 @@ AR::ProcSup::IdentifyProcessor(VOID)
|
|||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
/* Get current processor control block */
|
/* Get current processor control block */
|
||||||
Prcb = KeGetCurrentProcessorControlBlock();
|
Prcb = KE::Processor::GetCurrentProcessorControlBlock();
|
||||||
|
|
||||||
/* Get CPU vendor by issueing CPUID instruction */
|
/* Get CPU vendor by issueing CPUID instruction */
|
||||||
RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS));
|
RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS));
|
||||||
|
@@ -43,7 +43,7 @@ AR::ProcSup::IdentifyProcessor(VOID)
|
|||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
/* Get current processor control block */
|
/* Get current processor control block */
|
||||||
Prcb = KeGetCurrentProcessorControlBlock();
|
Prcb = KE::Processor::GetCurrentProcessorControlBlock();
|
||||||
|
|
||||||
/* Get CPU vendor by issueing CPUID instruction */
|
/* Get CPU vendor by issueing CPUID instruction */
|
||||||
RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS));
|
RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS));
|
||||||
|
@@ -43,5 +43,5 @@ HL::Cpu::InitializeProcessor(VOID)
|
|||||||
Pic::InitializePic();
|
Pic::InitializePic();
|
||||||
|
|
||||||
/* Set the APIC running level */
|
/* Set the APIC running level */
|
||||||
HL::RunLevel::SetRunLevel(KeGetCurrentProcessorBlock()->RunLevel);
|
HL::RunLevel::SetRunLevel(KE::Processor::GetCurrentProcessorBlock()->RunLevel);
|
||||||
}
|
}
|
||||||
|
@@ -1,442 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/amd64/ari.h
|
|
||||||
* DESCRIPTION: AMD64 architecture library routines
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_AMD64_ARI_H
|
|
||||||
#define __XTOSKRNL_AMD64_ARI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* AMD64 architecture library routines forward references */
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArClearInterruptFlag(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
ArCpuId(IN OUT PCPUID_REGISTERS Registers);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArFlushTlb(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PVOID
|
|
||||||
ArGetBootStack(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONG
|
|
||||||
ArGetCpuFlags(VOID);
|
|
||||||
|
|
||||||
XTASSEMBLY
|
|
||||||
XTCDECL
|
|
||||||
ULONG_PTR
|
|
||||||
ArGetStackPointer(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArHalt(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArInitializeProcessor(IN PVOID ProcessorStructures);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
ArInterruptsEnabled(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArInvalidateTlbEntry(IN PVOID Address);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadGlobalDescriptorTable(IN PVOID Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadInterruptDescriptorTable(IN PVOID Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadLocalDescriptorTable(IN USHORT Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadMxcsrRegister(IN ULONG Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadSegment(IN USHORT Segment,
|
|
||||||
IN ULONG Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadTaskRegister(IN USHORT Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArMemoryBarrier(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONG_PTR
|
|
||||||
ArReadControlRegister(IN USHORT ControlRegister);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONG_PTR
|
|
||||||
ArReadDebugRegister(IN USHORT DebugRegister);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONGLONG
|
|
||||||
ArReadGSQuadWord(IN ULONG Offset);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONGLONG
|
|
||||||
ArReadModelSpecificRegister(IN ULONG Register);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
UINT
|
|
||||||
ArReadMxCsrRegister(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONGLONG
|
|
||||||
ArReadTimeStampCounter(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArReadWriteBarrier(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArSetGdtEntryBase(IN PKGDTENTRY Gdt,
|
|
||||||
IN USHORT Selector,
|
|
||||||
IN ULONG_PTR Base);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArSetInterruptFlag(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreGlobalDescriptorTable(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreInterruptDescriptorTable(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreLocalDescriptorTable(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreSegment(IN USHORT Segment,
|
|
||||||
OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreTaskRegister(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteControlRegister(IN USHORT ControlRegister,
|
|
||||||
IN UINT_PTR Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteDebugRegister(IN USHORT DebugRegister,
|
|
||||||
IN UINT_PTR Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteEflagsRegister(IN UINT_PTR Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteModelSpecificRegister(IN ULONG Register,
|
|
||||||
IN ULONGLONG Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArYieldProcessor(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleSystemCall32(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleSystemCall64(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap1F(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2C(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2D(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2F(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrapE1(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrapFF(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpIdentifyProcessor(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeGdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeIdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeProcessorBlock(OUT PKPROCESSOR_BLOCK ProcessorBlock,
|
|
||||||
IN PKGDTENTRY Gdt,
|
|
||||||
IN PKIDTENTRY Idt,
|
|
||||||
IN PKTSS Tss,
|
|
||||||
IN PVOID DpcStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeProcessorRegisters(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeProcessorStructures(IN PVOID ProcessorStructures,
|
|
||||||
OUT PKGDTENTRY *Gdt,
|
|
||||||
OUT PKTSS *Tss,
|
|
||||||
OUT PKPROCESSOR_BLOCK *ProcessorBlock,
|
|
||||||
OUT PVOID *KernelBootStack,
|
|
||||||
OUT PVOID *KernelFaultStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeSegments(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeTss(IN PKPROCESSOR_BLOCK ProcessorBlock,
|
|
||||||
IN PVOID KernelBootStack,
|
|
||||||
IN PVOID KernelFaultStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpSetGdtEntry(IN PKGDTENTRY Gdt,
|
|
||||||
IN USHORT Selector,
|
|
||||||
IN ULONG_PTR Base,
|
|
||||||
IN ULONG Limit,
|
|
||||||
IN UCHAR Type,
|
|
||||||
IN UCHAR Dpl,
|
|
||||||
IN UCHAR SegmentMode);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpSetIdtGate(IN PKIDTENTRY Idt,
|
|
||||||
IN USHORT Vector,
|
|
||||||
IN PVOID Handler,
|
|
||||||
IN USHORT Selector,
|
|
||||||
IN USHORT Ist,
|
|
||||||
IN USHORT Access);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x00(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x01(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x02(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x03(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x04(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x05(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x06(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x07(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x08(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x09(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0A(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0B(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0C(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0D(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0E(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x10(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x11(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x12(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x13(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x1F(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2C(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2D(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2F(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0xE1(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0xFF(VOID);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_ARI_H */
|
|
@@ -1,64 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/amd64/asm.h
|
|
||||||
* DESCRIPTION: AMD64 architecture assembly definitions
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_AMD64_ASMSUP_H
|
|
||||||
#define __XTOSKRNL_AMD64_ASMSUP_H
|
|
||||||
|
|
||||||
|
|
||||||
/* Control Register bit definitions */
|
|
||||||
#define CR0_PG 0x80000000
|
|
||||||
#define CR4_PGE 0x00000080
|
|
||||||
#define CR4_LA57 0x00001000
|
|
||||||
#define CR4_PCIDE 0x00020000
|
|
||||||
|
|
||||||
/* GDT selectors */
|
|
||||||
#define GDT_R0_CMCODE 0x08
|
|
||||||
#define GDT_R0_CODE 0x10
|
|
||||||
#define GDT_R0_DATA 0x18
|
|
||||||
|
|
||||||
/* MSR registers */
|
|
||||||
#define X86_MSR_EFER 0xC0000080
|
|
||||||
#define X86_MSR_EFER_LME (1 << 8)
|
|
||||||
|
|
||||||
/* KTRAP_FRAME structure offsets */
|
|
||||||
#define TrapXmm0 0
|
|
||||||
#define TrapXmm1 16
|
|
||||||
#define TrapXmm2 32
|
|
||||||
#define TrapXmm3 48
|
|
||||||
#define TrapXmm4 64
|
|
||||||
#define TrapXmm5 80
|
|
||||||
#define TrapXmm6 96
|
|
||||||
#define TrapXmm7 112
|
|
||||||
#define TrapXmm8 128
|
|
||||||
#define TrapXmm9 144
|
|
||||||
#define TrapXmm10 160
|
|
||||||
#define TrapXmm11 176
|
|
||||||
#define TrapXmm12 192
|
|
||||||
#define TrapXmm13 208
|
|
||||||
#define TrapXmm14 224
|
|
||||||
#define TrapXmm15 240
|
|
||||||
#define TrapMxCsr 256
|
|
||||||
#define TrapPreviousMode 260
|
|
||||||
#define TrapCr2 264
|
|
||||||
#define TrapCr3 272
|
|
||||||
#define TrapDr0 280
|
|
||||||
#define TrapDr1 288
|
|
||||||
#define TrapDr2 296
|
|
||||||
#define TrapDr3 304
|
|
||||||
#define TrapDr6 312
|
|
||||||
#define TrapDr7 320
|
|
||||||
#define TrapSegDs 328
|
|
||||||
#define TrapSegEs 330
|
|
||||||
#define TrapSegFs 332
|
|
||||||
#define TrapSegGs 334
|
|
||||||
|
|
||||||
/* KTRAP_FRAME length related definitions */
|
|
||||||
#define TRAP_FRAME_SIZE 512
|
|
||||||
#define TRAP_REGISTERS_SIZE 176
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_ASMSUP_H */
|
|
@@ -1,39 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/amd64/globals.h
|
|
||||||
* DESCRIPTION: XT kernel global variables related to AMD64 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_AMD64_GLOBALS_H
|
|
||||||
#define __XTOSKRNL_AMD64_GLOBALS_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Initial GDT */
|
|
||||||
EXTERN KGDTENTRY ArInitialGdt[GDT_ENTRIES];
|
|
||||||
|
|
||||||
/* Initial IDT */
|
|
||||||
EXTERN KIDTENTRY ArInitialIdt[IDT_ENTRIES];
|
|
||||||
|
|
||||||
/* Initial Processor Block */
|
|
||||||
EXTERN KPROCESSOR_BLOCK ArInitialProcessorBlock;
|
|
||||||
|
|
||||||
/* Initial TSS */
|
|
||||||
EXTERN KTSS ArInitialTss;
|
|
||||||
|
|
||||||
/* Kernel own boot stack */
|
|
||||||
EXTERN UCHAR ArKernelBootStack[KERNEL_STACK_SIZE];
|
|
||||||
|
|
||||||
/* Kernel own fault stack */
|
|
||||||
EXTERN UCHAR ArKernelFaultStack[KERNEL_STACK_SIZE];
|
|
||||||
|
|
||||||
/* Page mapping routines for systems using 4-level paging (PML4) */
|
|
||||||
EXTERN CMMPAGEMAP_ROUTINES MmpPml4Routines;
|
|
||||||
|
|
||||||
/* Page mapping routines for systems using 5-level paging (PML5) */
|
|
||||||
EXTERN CMMPAGEMAP_ROUTINES MmpPml5Routines;
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_GLOBALS_H */
|
|
@@ -1,74 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/amd64/hli.h
|
|
||||||
* DESCRIPTION: XT hardware abstraction layer routines specific to AMD64 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_AMD64_HLI_H
|
|
||||||
#define __XTOSKRNL_AMD64_HLI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* HAL library routines forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlClearApicErrors(VOID);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
ULONGLONG
|
|
||||||
HlReadApicRegister(IN APIC_REGISTER Register);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlSendEoi(VOID);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
HlWriteApicRegister(IN APIC_REGISTER Register,
|
|
||||||
IN ULONGLONG Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
HlpCheckX2ApicSupport(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONG
|
|
||||||
HlpGetCpuApicId(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
HlpHandleApicSpuriousService(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
HlpHandlePicSpuriousService(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpInitializeApic();
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpInitializeLegacyPic(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpInitializePic();
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpSendIpi(ULONG ApicId,
|
|
||||||
ULONG Vector);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
KRUNLEVEL
|
|
||||||
HlpTransformApicTprToRunLevel(IN UCHAR Tpr);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
UCHAR
|
|
||||||
HlpTransformRunLevelToApicTpr(IN KRUNLEVEL RunLevel);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_HLI_H */
|
|
@@ -1,60 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/amd64/kei.h
|
|
||||||
* DESCRIPTION: XTOS kernel services routine definitions specific to AMD64 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_AMD64_KEI_H
|
|
||||||
#define __XTOSKRNL_AMD64_KEI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* AMD64 specific Kernel services routines forward references */
|
|
||||||
XTAPI
|
|
||||||
PKPROCESSOR_BLOCK
|
|
||||||
KeGetCurrentProcessorBlock(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PKPROCESSOR_CONTROL_BLOCK
|
|
||||||
KeGetCurrentProcessorControlBlock(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONG
|
|
||||||
KeGetCurrentProcessorNumber(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PKTHREAD
|
|
||||||
KeGetCurrentThread(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepInitializeKernel(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepInitializeMachine(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepInitializeThreadContext(IN PKTHREAD Thread,
|
|
||||||
IN PKSYSTEM_ROUTINE SystemRoutine,
|
|
||||||
IN PKSTART_ROUTINE StartRoutine,
|
|
||||||
IN PVOID StartContext,
|
|
||||||
IN PCONTEXT ContextRecord);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepSaveProcessorState(OUT PKPROCESSOR_STATE CpuState);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepStartKernel(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepSwitchBootStack();
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_KEI_H */
|
|
@@ -1,73 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/amd64/mmi.h
|
|
||||||
* DESCRIPTION: XT memory manager routines specific to AMD64 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_AMD64_MMI_H
|
|
||||||
#define __XTOSKRNL_AMD64_MMI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* AMD64 Memory Manager routines forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmInitializePageMapSupport(VOID);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
MmZeroPages(IN PVOID Address,
|
|
||||||
IN ULONG Size);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpClearPte(PHARDWARE_PTE PtePointer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpGetExtendedPhysicalAddressingStatus(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMP5E
|
|
||||||
MmpGetP5eAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMPDE
|
|
||||||
MmpGetPdeAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMPPE
|
|
||||||
MmpGetPpeAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMPTE
|
|
||||||
MmpGetPteAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMPXE
|
|
||||||
MmpGetPxeAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpInitializeArchitecture(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpPteValid(PHARDWARE_PTE PtePointer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpSetPte(PHARDWARE_PTE PtePointer,
|
|
||||||
PFN_NUMBER PageFrameNumber,
|
|
||||||
BOOLEAN Writable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpSetPteCaching(PHARDWARE_PTE PtePointer,
|
|
||||||
BOOLEAN CacheDisable,
|
|
||||||
BOOLEAN WriteThrough);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_MMI_H */
|
|
@@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/amd64/rtli.h
|
|
||||||
* DESCRIPTION: XT runtime library routines specific to AMD64 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_AMD64_RTLI_H
|
|
||||||
#define __XTOSKRNL_AMD64_RTLI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Runtime Library routines specific to AMD64 forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
RtlGetStackLimits(OUT PULONG_PTR StackBase,
|
|
||||||
OUT PULONG_PTR StackLimit);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_RTLI_H */
|
|
@@ -1,115 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/globals.h
|
|
||||||
* DESCRIPTION: XT kernel global variables
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_GLOBALS_H
|
|
||||||
#define __XTOSKRNL_GLOBALS_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* ACPI tables cache list */
|
|
||||||
EXTERN LIST_ENTRY HlpAcpiCacheList;
|
|
||||||
|
|
||||||
/* ACPI Root System Description Pointer (RSDP) */
|
|
||||||
EXTERN PACPI_RSDP HlpAcpiRsdp;
|
|
||||||
|
|
||||||
/* ACPI timer information */
|
|
||||||
EXTERN ACPI_TIMER_INFO HlpAcpiTimerInfo;
|
|
||||||
|
|
||||||
/* Active processors count */
|
|
||||||
EXTERN KAFFINITY HlpActiveProcessors;
|
|
||||||
|
|
||||||
/* APIC mode */
|
|
||||||
EXTERN APIC_MODE HlpApicMode;
|
|
||||||
|
|
||||||
/* FrameBuffer information */
|
|
||||||
EXTERN HL_FRAMEBUFFER_DATA HlpFrameBufferData;
|
|
||||||
|
|
||||||
/* Scroll region information */
|
|
||||||
EXTERN HL_SCROLL_REGION_DATA HlpScrollRegionData;
|
|
||||||
|
|
||||||
/* System information */
|
|
||||||
EXTERN ACPI_SYSTEM_INFO HlpSystemInfo;
|
|
||||||
|
|
||||||
/* Pointer to DbgPrint() routine */
|
|
||||||
EXTERN PKD_PRINT_ROUTINE KdPrint;
|
|
||||||
|
|
||||||
/* Kernel Debugger mode */
|
|
||||||
EXTERN KD_DEBUG_MODE KdpDebugMode;
|
|
||||||
|
|
||||||
/* Debugger I/O providers initialization routines */
|
|
||||||
EXTERN PKD_INIT_ROUTINE KdpIoProvidersInitRoutines[KDBG_PROVIDERS_COUNT];
|
|
||||||
|
|
||||||
/* List of active I/O providers */
|
|
||||||
EXTERN LIST_ENTRY KdpProviders;
|
|
||||||
|
|
||||||
/* Debugger's serial port handle */
|
|
||||||
EXTERN CPPORT KdpSerialPort;
|
|
||||||
|
|
||||||
/* Pre-defined serial port addresses */
|
|
||||||
EXTERN ULONG KdpSerialPortList[COMPORT_COUNT];
|
|
||||||
|
|
||||||
|
|
||||||
/* Kernel initialization block passed by boot loader */
|
|
||||||
EXTERN PKERNEL_INITIALIZATION_BLOCK KeInitializationBlock;
|
|
||||||
|
|
||||||
/* Kernel initial process */
|
|
||||||
EXTERN EPROCESS KeInitialProcess;
|
|
||||||
|
|
||||||
/* Kernel initial thread */
|
|
||||||
EXTERN ETHREAD KeInitialThread;
|
|
||||||
|
|
||||||
/* Kernel service descriptor table */
|
|
||||||
EXTERN KSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable[KSERVICE_TABLES_COUNT];
|
|
||||||
|
|
||||||
/* Kernel process list */
|
|
||||||
EXTERN LIST_ENTRY KepProcessListHead;
|
|
||||||
|
|
||||||
/* Kernel system resources list */
|
|
||||||
EXTERN LIST_ENTRY KepSystemResourcesListHead;
|
|
||||||
|
|
||||||
/* Kernel system resources lock */
|
|
||||||
EXTERN KSPIN_LOCK KepSystemResourcesLock;
|
|
||||||
|
|
||||||
/* Kernel UBSAN active frame flag */
|
|
||||||
EXTERN BOOLEAN KepUbsanActiveFrame;
|
|
||||||
|
|
||||||
/* Biggest free memory descriptor */
|
|
||||||
EXTERN PLOADER_MEMORY_DESCRIPTOR MmFreeDescriptor;
|
|
||||||
|
|
||||||
/* Highest physical page number */
|
|
||||||
EXTERN ULONG_PTR MmHighestPhysicalPage;
|
|
||||||
|
|
||||||
/* Lowest physical page number */
|
|
||||||
EXTERN ULONG_PTR MmLowestPhysicalPage;
|
|
||||||
|
|
||||||
/* Number of physical pages */
|
|
||||||
EXTERN ULONG MmNumberOfPhysicalPages;
|
|
||||||
|
|
||||||
/* Old biggest free memory descriptor */
|
|
||||||
EXTERN LOADER_MEMORY_DESCRIPTOR MmOldFreeDescriptor;
|
|
||||||
|
|
||||||
/* Processor structures data (THIS IS A TEMPORARY HACK) */
|
|
||||||
EXTERN UCHAR MmProcessorStructuresData[MAXIMUM_PROCESSORS][KPROCESSOR_STRUCTURES_SIZE];
|
|
||||||
|
|
||||||
/* Allocation descriptors dedicated for hardware layer */
|
|
||||||
EXTERN LOADER_MEMORY_DESCRIPTOR MmpHardwareAllocationDescriptors[MM_HARDWARE_ALLOCATION_DESCRIPTORS];
|
|
||||||
|
|
||||||
/* Live address of kernel's hardware heap */
|
|
||||||
EXTERN PVOID MmpHardwareHeapStart;
|
|
||||||
|
|
||||||
/* Information about the current page map */
|
|
||||||
EXTERN MMPAGEMAP_INFO MmpPageMapInfo;
|
|
||||||
|
|
||||||
/* Pointers to page map routines for the current paging mode */
|
|
||||||
EXTERN PCMMPAGEMAP_ROUTINES MmpPageMapRoutines;
|
|
||||||
|
|
||||||
/* Number of used hardware allocation descriptors */
|
|
||||||
EXTERN ULONG MmpUsedHardwareAllocationDescriptors;
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_GLOBALS_H */
|
|
@@ -1,152 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/hli.h
|
|
||||||
* DESCRIPTION: XT hardware abstraction layer routines
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_HLI_H
|
|
||||||
#define __XTOSKRNL_HLI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* HAL library routines forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlClearScreen(IN ULONG Color);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
XTSTATUS
|
|
||||||
HlComPortGetByte(IN PCPPORT Port,
|
|
||||||
OUT PUCHAR Byte,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
IN BOOLEAN Poll);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
XTSTATUS
|
|
||||||
HlWriteComPort8(IN PCPPORT Port,
|
|
||||||
IN UCHAR Byte);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
UCHAR
|
|
||||||
HlComPortReadLsr(IN PCPPORT Port,
|
|
||||||
IN UCHAR Byte);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
XTSTATUS
|
|
||||||
HlDisplayCharacter(IN WCHAR Character);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlGetAcpiSystemDescriptionPointer(OUT PACPI_RSDP *Rsdp);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlGetAcpiTable(IN ULONG Signature,
|
|
||||||
OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlGetFrameBufferResolution(OUT PULONG Width, OUT PULONG Height);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
KRUNLEVEL
|
|
||||||
HlGetRunLevel(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
XTSTATUS
|
|
||||||
HlInitializeComPort(IN OUT PCPPORT Port,
|
|
||||||
IN PUCHAR PortAddress,
|
|
||||||
IN ULONG BaudRate);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlInitializeFrameBuffer(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlInitializeProcessor(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlInitializeScrollRegion(IN ULONG Left,
|
|
||||||
IN ULONG Top,
|
|
||||||
IN ULONG Right,
|
|
||||||
IN ULONG Bottom,
|
|
||||||
IN ULONG FontColor);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlInitializeSystem(VOID);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
HlSetRunLevel(IN KRUNLEVEL RunLevel);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpCacheAcpiTable(IN PACPI_DESCRIPTION_HEADER AcpiTable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpDrawCharacter(IN ULONG PositionX,
|
|
||||||
IN ULONG PositionY,
|
|
||||||
IN ULONG Color,
|
|
||||||
IN WCHAR WideCharacter);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpDrawPixel(IN ULONG PosX,
|
|
||||||
IN ULONG PosY,
|
|
||||||
IN ULONG Color);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpInitializeAcpi(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpInitializeAcpiCache(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpInitializeAcpiSystemDescriptionTable(OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpInitializeAcpiSystemInformation(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpInitializeAcpiSystemStructure(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpInitializeAcpiTimer(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpQueryAcpiCache(IN ULONG Signature,
|
|
||||||
OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
HlpQueryAcpiTables(IN ULONG Signature,
|
|
||||||
OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONG
|
|
||||||
HlpRGBColor(IN ULONG Color);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpScrollRegion(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
HlpValidateAcpiTable(IN PVOID Buffer,
|
|
||||||
IN UINT_PTR Size);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_HLI_H */
|
|
@@ -1,436 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/i686/ari.h
|
|
||||||
* DESCRIPTION: I686 architecture library routines
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_I686_ARI_H
|
|
||||||
#define __XTOSKRNL_I686_ARI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* I686 architecture library routines forward references */
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArClearInterruptFlag(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
ArCpuId(IN OUT PCPUID_REGISTERS Registers);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArFlushTlb(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PVOID
|
|
||||||
ArGetBootStack(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONG
|
|
||||||
ArGetCpuFlags(VOID);
|
|
||||||
|
|
||||||
XTASSEMBLY
|
|
||||||
XTCDECL
|
|
||||||
ULONG_PTR
|
|
||||||
ArGetStackPointer(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArHalt(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArInitializeProcessor(IN PVOID ProcessorStructures);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
ArInterruptsEnabled(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArInvalidateTlbEntry(IN PVOID Address);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadGlobalDescriptorTable(IN PVOID Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadInterruptDescriptorTable(IN PVOID Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadLocalDescriptorTable(IN USHORT Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadSegment(IN USHORT Segment,
|
|
||||||
IN ULONG Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArLoadTaskRegister(IN USHORT Source);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArMemoryBarrier(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONG_PTR
|
|
||||||
ArReadControlRegister(IN USHORT ControlRegister);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONG_PTR
|
|
||||||
ArReadDebugRegister(IN USHORT DebugRegister);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONG
|
|
||||||
ArReadFSDualWord(IN ULONG Offset);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONGLONG
|
|
||||||
ArReadModelSpecificRegister(IN ULONG Register);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
UINT
|
|
||||||
ArReadMxCsrRegister(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONGLONG
|
|
||||||
ArReadTimeStampCounter(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArReadWriteBarrier(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArSetGdtEntryBase(IN PKGDTENTRY Gdt,
|
|
||||||
IN USHORT Selector,
|
|
||||||
IN ULONG_PTR Base);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArSetInterruptFlag(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreGlobalDescriptorTable(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreInterruptDescriptorTable(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreLocalDescriptorTable(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreSegment(IN USHORT Segment,
|
|
||||||
OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArStoreTaskRegister(OUT PVOID Destination);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteControlRegister(IN USHORT ControlRegister,
|
|
||||||
IN UINT_PTR Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteDebugRegister(IN USHORT DebugRegister,
|
|
||||||
IN UINT_PTR Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteEflagsRegister(IN UINT_PTR Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArWriteModelSpecificRegister(IN ULONG Register,
|
|
||||||
IN ULONGLONG Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArYieldProcessor(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2A(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2B(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2C(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2D(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2E(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrapFF(IN PKTRAP_FRAME TrapFrame);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpIdentifyProcessor(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeGdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeIdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeProcessorBlock(OUT PKPROCESSOR_BLOCK ProcessorBlock,
|
|
||||||
IN PKGDTENTRY Gdt,
|
|
||||||
IN PKIDTENTRY Idt,
|
|
||||||
IN PKTSS Tss,
|
|
||||||
IN PVOID DpcStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeProcessorRegisters(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeProcessorStructures(IN PVOID ProcessorStructures,
|
|
||||||
OUT PKGDTENTRY *Gdt,
|
|
||||||
OUT PKTSS *Tss,
|
|
||||||
OUT PKPROCESSOR_BLOCK *ProcessorBlock,
|
|
||||||
OUT PVOID *KernelBootStack,
|
|
||||||
OUT PVOID *KernelFaultStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeSegments(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpInitializeTss(IN PKPROCESSOR_BLOCK ProcessorBlock,
|
|
||||||
IN PVOID KernelBootStack,
|
|
||||||
IN PVOID KernelFaultStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpSetDoubleFaultTssEntry(IN PKPROCESSOR_BLOCK ProcessorBlock,
|
|
||||||
IN PVOID KernelFaultStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpSetGdtEntry(IN PKGDTENTRY Gdt,
|
|
||||||
IN USHORT Selector,
|
|
||||||
IN ULONG_PTR Base,
|
|
||||||
IN ULONG Limit,
|
|
||||||
IN UCHAR Type,
|
|
||||||
IN UCHAR Dpl,
|
|
||||||
IN UCHAR SegmentMode);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpSetIdtGate(IN PKIDTENTRY Idt,
|
|
||||||
IN USHORT Vector,
|
|
||||||
IN PVOID Handler,
|
|
||||||
IN USHORT Selector,
|
|
||||||
IN USHORT Ist,
|
|
||||||
IN USHORT Access);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
ArpSetNonMaskableInterruptTssEntry(IN PKPROCESSOR_BLOCK ProcessorBlock,
|
|
||||||
IN PVOID KernelFaultStack);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x00(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x01(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x02(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x03(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x04(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x05(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x06(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x07(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x08(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x09(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0A(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0B(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0C(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0D(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x0E(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x10(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x11(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x12(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x13(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2A(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2B(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2C(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2D(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpTrap0x2E(VOID);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_I686_ARI_H */
|
|
@@ -1,32 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/i686/asm.h
|
|
||||||
* DESCRIPTION: i686 architecture assembly definitions
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_I686_ASMSUP_H
|
|
||||||
#define __XTOSKRNL_I686_ASMSUP_H
|
|
||||||
|
|
||||||
|
|
||||||
/* KTRAP_FRAME structure offsets */
|
|
||||||
#define TrapPreviousMode 0
|
|
||||||
#define TrapCr2 4
|
|
||||||
#define TrapCr3 8
|
|
||||||
#define TrapDr0 12
|
|
||||||
#define TrapDr1 16
|
|
||||||
#define TrapDr2 20
|
|
||||||
#define TrapDr3 24
|
|
||||||
#define TrapDr6 28
|
|
||||||
#define TrapDr7 32
|
|
||||||
#define TrapSegDs 36
|
|
||||||
#define TrapSegEs 38
|
|
||||||
#define TrapSegFs 40
|
|
||||||
#define TrapSegGs 42
|
|
||||||
|
|
||||||
/* KTRAP_FRAME length related definitions */
|
|
||||||
#define TRAP_FRAME_SIZE 100
|
|
||||||
#define TRAP_REGISTERS_SIZE 56
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_ASMSUP_H */
|
|
@@ -1,43 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/i686/globals.h
|
|
||||||
* DESCRIPTION: XT kernel global variables related to i686 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_I686_GLOBALS_H
|
|
||||||
#define __XTOSKRNL_I686_GLOBALS_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Initial GDT */
|
|
||||||
EXTERN KGDTENTRY ArInitialGdt[GDT_ENTRIES];
|
|
||||||
|
|
||||||
/* Initial IDT */
|
|
||||||
EXTERN KIDTENTRY ArInitialIdt[IDT_ENTRIES];
|
|
||||||
|
|
||||||
/* Initial Processor Block */
|
|
||||||
EXTERN KPROCESSOR_BLOCK ArInitialProcessorBlock;
|
|
||||||
|
|
||||||
/* Initial TSS */
|
|
||||||
EXTERN KTSS ArInitialTss;
|
|
||||||
|
|
||||||
/* Double Fault and NMI task gates */
|
|
||||||
EXTERN UCHAR ArpDoubleFaultTss[KTSS_IO_MAPS];
|
|
||||||
EXTERN UCHAR ArpNonMaskableInterruptTss[KTSS_IO_MAPS];
|
|
||||||
|
|
||||||
/* Kernel own boot stack */
|
|
||||||
EXTERN UCHAR ArKernelBootStack[KERNEL_STACK_SIZE];
|
|
||||||
|
|
||||||
/* Kernel own fault stack */
|
|
||||||
EXTERN UCHAR ArKernelFaultStack[KERNEL_STACK_SIZE];
|
|
||||||
|
|
||||||
/* Page mapping routines for systems using 2-level paging (PML2) */
|
|
||||||
EXTERN CMMPAGEMAP_ROUTINES MmpPml2Routines;
|
|
||||||
|
|
||||||
/* Page mapping routines for systems using 3-level paging (PML3) */
|
|
||||||
EXTERN CMMPAGEMAP_ROUTINES MmpPml3Routines;
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_I686_GLOBALS_H */
|
|
@@ -1,74 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/i686/hli.h
|
|
||||||
* DESCRIPTION: XT hardware abstraction layer routines specific to i686 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_I686_HLI_H
|
|
||||||
#define __XTOSKRNL_I686_HLI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* HAL library routines forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlClearApicErrors(VOID);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
ULONGLONG
|
|
||||||
HlReadApicRegister(IN APIC_REGISTER Register);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlSendEoi(VOID);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
HlWriteApicRegister(IN APIC_REGISTER Register,
|
|
||||||
IN ULONGLONG Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
HlpCheckX2ApicSupport(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONG
|
|
||||||
HlpGetCpuApicId(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
HlpHandleApicSpuriousService(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
HlpHandlePicSpuriousService(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpInitializeApic(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpInitializeLegacyPic(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpInitializePic(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
HlpSendIpi(ULONG ApicId,
|
|
||||||
ULONG Vector);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
KRUNLEVEL
|
|
||||||
HlpTransformApicTprToRunLevel(IN UCHAR Tpr);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
UCHAR
|
|
||||||
HlpTransformRunLevelToApicTpr(IN KRUNLEVEL RunLevel);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_I686_HLI_H */
|
|
@@ -1,60 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/i686/kei.h
|
|
||||||
* DESCRIPTION: XTOS kernel services routine definitions specific to i686 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_I686_KEI_H
|
|
||||||
#define __XTOSKRNL_I686_KEI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* I686 specific Kernel services routines forward references */
|
|
||||||
XTAPI
|
|
||||||
PKPROCESSOR_BLOCK
|
|
||||||
KeGetCurrentProcessorBlock(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PKPROCESSOR_CONTROL_BLOCK
|
|
||||||
KeGetCurrentProcessorControlBlock(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONG
|
|
||||||
KeGetCurrentProcessorNumber(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PKTHREAD
|
|
||||||
KeGetCurrentThread(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepInitializeKernel(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepInitializeMachine(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepInitializeThreadContext(IN PKTHREAD Thread,
|
|
||||||
IN PKSYSTEM_ROUTINE SystemRoutine,
|
|
||||||
IN PKSTART_ROUTINE StartRoutine,
|
|
||||||
IN PVOID StartContext,
|
|
||||||
IN PCONTEXT ContextRecord);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepSaveProcessorState(OUT PKPROCESSOR_STATE CpuState);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepStartKernel(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepSwitchBootStack();
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_I686_KEI_H */
|
|
@@ -1,81 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/i686/mmi.h
|
|
||||||
* DESCRIPTION: XT memory manager routines specific to i686 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_I686_MMI_H
|
|
||||||
#define __XTOSKRNL_I686_MMI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* i686 Memory Manager routines forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmInitializePageMapSupport(VOID);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
MmZeroPages(IN PVOID Address,
|
|
||||||
IN ULONG Size);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpClearPte(PHARDWARE_PTE PtePointer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpGetExtendedPhysicalAddressingStatus(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMPDE
|
|
||||||
MmpGetPdeAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMPPE
|
|
||||||
MmpGetPpeAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
PMMPTE
|
|
||||||
MmpGetPteAddress(PVOID Address);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpInitializeArchitecture(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpPml2PteValid(PHARDWARE_PTE PtePointer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpSetPml2Pte(PHARDWARE_PTE PtePointer,
|
|
||||||
PFN_NUMBER PageFrameNumber,
|
|
||||||
BOOLEAN Writable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpSetPml2PteCaching(PHARDWARE_PTE PtePointer,
|
|
||||||
BOOLEAN CacheDisable,
|
|
||||||
BOOLEAN WriteThrough);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpPml3PteValid(PHARDWARE_PTE PtePointer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpSetPml3Pte(PHARDWARE_PTE PtePointer,
|
|
||||||
PFN_NUMBER PageFrameNumber,
|
|
||||||
BOOLEAN Writable);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpSetPml3PteCaching(PHARDWARE_PTE PtePointer,
|
|
||||||
BOOLEAN CacheDisable,
|
|
||||||
BOOLEAN WriteThrough);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_I686_MMI_H */
|
|
@@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/i686/rtli.h
|
|
||||||
* DESCRIPTION: XT runtime library routines specific to i686 architecture
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_I686_RTLI_H
|
|
||||||
#define __XTOSKRNL_I686_RTLI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Runtime Library routines specific to I686 forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
RtlGetStackLimits(OUT PULONG_PTR StackBase,
|
|
||||||
OUT PULONG_PTR StackLimit);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_I686_RTLI_H */
|
|
@@ -1,44 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/kdi.h
|
|
||||||
* DESCRIPTION: Kernel Debugger routines
|
|
||||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_KDI_H
|
|
||||||
#define __XTOSKRNL_KDI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Kernel Debugger routines forward references */
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
KdInitializeDebugIoProviders(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KdSetPrintRoutine(PVOID DebugPrintRoutine);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KdpDebugPrint(PCWSTR Format, ...);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
KdpDetectDebugPorts(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
KdpInitializeFrameBufferProvider(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
KdpInitializeSerialPortProvider(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
XTSTATUS
|
|
||||||
KdpSerialWriteCharacter(WCHAR Character);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_KDI_H */
|
|
@@ -25,6 +25,7 @@ namespace KE
|
|||||||
STATIC XTAPI SYSTEM_FIRMWARE_TYPE GetFirmwareType(VOID);
|
STATIC XTAPI SYSTEM_FIRMWARE_TYPE GetFirmwareType(VOID);
|
||||||
STATIC XTAPI XTSTATUS GetKernelParameter(IN PCWSTR ParameterName,
|
STATIC XTAPI XTSTATUS GetKernelParameter(IN PCWSTR ParameterName,
|
||||||
OUT PCWSTR *Parameter);
|
OUT PCWSTR *Parameter);
|
||||||
|
STATIC XTAPI PLIST_ENTRY GetMemoryDescriptors(VOID);
|
||||||
STATIC XTAPI PLIST_ENTRY GetSystemResources(VOID);
|
STATIC XTAPI PLIST_ENTRY GetSystemResources(VOID);
|
||||||
STATIC XTAPI VOID InitializeInitializationBlock(IN PKERNEL_INITIALIZATION_BLOCK Block);
|
STATIC XTAPI VOID InitializeInitializationBlock(IN PKERNEL_INITIALIZATION_BLOCK Block);
|
||||||
|
|
||||||
|
@@ -1,237 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/kei.h
|
|
||||||
* DESCRIPTION: XTOS kernel services routine definitions
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_KEI_H
|
|
||||||
#define __XTOSKRNL_KEI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Kernel services routines forward references */
|
|
||||||
XTAPI
|
|
||||||
PKERNEL_INITIALIZATION_BLOCK
|
|
||||||
KeGetInitializationBlock(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeClearEvent(IN PKEVENT Event);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeClearTimer(IN PKTIMER Timer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
SYSTEM_FIRMWARE_TYPE
|
|
||||||
KeGetFirmwareType(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
KeGetKernelParameter(IN PCWSTR ParameterName,
|
|
||||||
OUT PCWSTR *Parameter);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeHaltSystem(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeInitializeEvent(OUT PKEVENT Event,
|
|
||||||
IN KEVENT_TYPE EventType,
|
|
||||||
IN BOOLEAN InitialState);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeInitializeProcess(IN OUT PKPROCESS Process,
|
|
||||||
IN KPRIORITY Priority,
|
|
||||||
IN KAFFINITY Affinity,
|
|
||||||
IN PULONG_PTR DirectoryTable,
|
|
||||||
IN BOOLEAN Alignment);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
KeInitializeThread(IN PKPROCESS Process,
|
|
||||||
IN OUT PKTHREAD Thread,
|
|
||||||
IN PKSYSTEM_ROUTINE SystemRoutine,
|
|
||||||
IN PKSTART_ROUTINE StartRoutine,
|
|
||||||
IN PVOID StartContext,
|
|
||||||
IN PCONTEXT Context,
|
|
||||||
IN PVOID EnvironmentBlock,
|
|
||||||
IN PVOID Stack,
|
|
||||||
IN BOOLEAN StartThread);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KePanic(IN ULONG Code);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KePanicEx(IN ULONG Code,
|
|
||||||
IN ULONG_PTR Parameter1,
|
|
||||||
IN ULONG_PTR Parameter2,
|
|
||||||
IN ULONG_PTR Parameter3,
|
|
||||||
IN ULONG_PTR Parameter4);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONGLONG
|
|
||||||
KeQueryTimer(IN PKTIMER Timer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
LONG
|
|
||||||
KeSetEvent(IN PKEVENT Event,
|
|
||||||
IN KPRIORITY Increment,
|
|
||||||
IN BOOLEAN Wait);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeSetInterruptHandler(IN ULONG Vector,
|
|
||||||
IN PVOID Handler);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeStartThread(IN PKTHREAD Thread);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
KepCheckUbsanReport(PKUBSAN_SOURCE_LOCATION Location);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepEnterUbsanFrame(PKUBSAN_SOURCE_LOCATION Location,
|
|
||||||
PCCHAR Reason);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
KepExitDispatcher(IN KRUNLEVEL OldRunLevel);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
LONGLONG
|
|
||||||
KepGetSignedUbsanValue(PKUBSAN_TYPE_DESCRIPTOR Type,
|
|
||||||
PVOID Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
KepGetSystemResource(IN SYSTEM_RESOURCE_TYPE ResourceType,
|
|
||||||
IN BOOLEAN Acquire,
|
|
||||||
OUT PSYSTEM_RESOURCE_HEADER *ResourceHeader);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
PCCHAR
|
|
||||||
KepGetUbsanTypeKind(UCHAR TypeCheckKind);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
ULONGLONG
|
|
||||||
KepGetUnsignedUbsanValue(PKUBSAN_TYPE_DESCRIPTOR Type,
|
|
||||||
PVOID Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanDivisionOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
|
||||||
PVOID Lhs,
|
|
||||||
PVOID Rhs);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanFloatCastOverflow(PKUBSAN_FLOAT_CAST_OVERFLOW_DATA Data,
|
|
||||||
ULONG_PTR Lhs,
|
|
||||||
ULONG_PTR Rhs);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanFunctionTypeMismatch(PKUBSAN_FUNCTION_TYPE_MISMATCH_DATA Data,
|
|
||||||
ULONG_PTR Pointer);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanIntegerOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
|
||||||
ULONG_PTR Lhs,
|
|
||||||
ULONG_PTR Rhs);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanInvalidBuiltin(PKUBSAN_INVALID_BUILTIN_DATA Data);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanMisalignedAccess(PKUBSAN_TYPE_MISMATCH_DATA Data,
|
|
||||||
ULONG_PTR Pointer);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanNegateOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
|
||||||
ULONG_PTR OldValue);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanNullPointerDereference(PKUBSAN_TYPE_MISMATCH_DATA Data);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanObjectSizeMismatch(PKUBSAN_TYPE_MISMATCH_DATA Data,
|
|
||||||
ULONG_PTR Pointer);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanOutOfBounds(PKUBSAN_OUT_OF_BOUNDS_DATA Data,
|
|
||||||
ULONG_PTR Index);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanPointerOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
|
||||||
ULONG_PTR Lhs,
|
|
||||||
ULONG_PTR Rhs);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanShiftOutOfBounds(PKUBSAN_SHIFT_OUT_OF_BOUNDS_DATA Data,
|
|
||||||
ULONG_PTR Lhs,
|
|
||||||
ULONG_PTR Rhs);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepHandleUbsanTypeMismatch(PKUBSAN_TYPE_MISMATCH_DATA Data,
|
|
||||||
ULONG_PTR Pointer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepInitializeSystemResources(VOID);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
KepLeaveUbsanFrame();
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepRemoveTimer(IN OUT PKTIMER Timer);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
KepRetireDpcList(IN PKPROCESSOR_CONTROL_BLOCK Prcb);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepSuspendNop(IN PKAPC Apc,
|
|
||||||
IN OUT PKNORMAL_ROUTINE *NormalRoutine,
|
|
||||||
IN OUT PVOID *NormalContext,
|
|
||||||
IN OUT PVOID *SystemArgument1,
|
|
||||||
IN OUT PVOID *SystemArgument2);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepSuspendRundown(IN PKAPC Apc);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
KepSuspendThread(IN PVOID NormalContext,
|
|
||||||
IN PVOID SystemArgument1,
|
|
||||||
IN PVOID SystemArgument2);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_KEI_H */
|
|
@@ -1,86 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/mmi.h
|
|
||||||
* DESCRIPTION: Memory manager routines
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_MMI_H
|
|
||||||
#define __XTOSKRNL_MMI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Memory Manager routines forward references */
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
MmAllocateHardwareMemory(IN PFN_NUMBER PageCount,
|
|
||||||
IN BOOLEAN Aligned,
|
|
||||||
OUT PPHYSICAL_ADDRESS Buffer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
MmAllocateKernelStack(IN PVOID *Stack,
|
|
||||||
IN BOOLEAN LargeStack,
|
|
||||||
IN UCHAR SystemNode);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
MmAllocateProcessorStructures(IN ULONG CpuNumber,
|
|
||||||
OUT PVOID *StructuresData);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmFlushTlb(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmFreeKernelStack(IN PVOID Stack,
|
|
||||||
IN BOOLEAN LargeStack);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmFreeProcessorStructures(IN PVOID StructuresData);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmInitializeMemoryManager(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
MmMapHardwareMemory(IN PHYSICAL_ADDRESS PhysicalAddress,
|
|
||||||
IN PFN_NUMBER PageCount,
|
|
||||||
IN BOOLEAN FlushTlb,
|
|
||||||
OUT PVOID *VirtualAddress);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmMarkHardwareMemoryWriteThrough(IN PVOID VirtualAddress,
|
|
||||||
IN PFN_NUMBER PageCount);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmRemapHardwareMemory(IN PVOID VirtualAddress,
|
|
||||||
IN PHYSICAL_ADDRESS PhysicalAddress,
|
|
||||||
IN BOOLEAN FlushTlb);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
MmUnmapHardwareMemory(IN PVOID VirtualAddress,
|
|
||||||
IN PFN_NUMBER PageCount,
|
|
||||||
IN BOOLEAN FlushTlb);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
MmpScanMemoryDescriptors(VOID);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpVerifyMemoryTypeFree(LOADER_MEMORY_TYPE MemoryType);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpVerifyMemoryTypeInvisible(LOADER_MEMORY_TYPE MemoryType);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_MMI_H */
|
|
@@ -1,35 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/poi.h
|
|
||||||
* DESCRIPTION: Power manager subsystem routines
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_POI_H
|
|
||||||
#define __XTOSKRNL_POI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Power Manager routines forward references */
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
PoInitializeProcessorControlBlock(IN OUT PKPROCESSOR_CONTROL_BLOCK Prcb);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
VOID
|
|
||||||
PopIdle0Function(IN PPROCESSOR_POWER_STATE PowerState);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
PopPerfIdle(PPROCESSOR_POWER_STATE PowerState);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
PopPerfIdleDpc(IN PKDPC Dpc,
|
|
||||||
IN PVOID DeferredContext,
|
|
||||||
IN PVOID SystemArgument1,
|
|
||||||
IN PVOID SystemArgument2);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_POI_H */
|
|
@@ -1,379 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/rtli.h
|
|
||||||
* DESCRIPTION: XT runtime library routines
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __XTOSKRNL_RTLI_H
|
|
||||||
#define __XTOSKRNL_RTLI_H
|
|
||||||
|
|
||||||
#include <xtos.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Runtime Library routines forward references */
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicAnd8(IN PCHAR Address,
|
|
||||||
IN CHAR Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicAnd16(IN PSHORT Address,
|
|
||||||
IN SHORT Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicAnd32(IN PLONG Address,
|
|
||||||
IN LONG Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicAnd64(IN PLONG_PTR Address,
|
|
||||||
IN LONG_PTR Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
UCHAR
|
|
||||||
RtlAtomicBitTestAndSet(IN PLONG Base,
|
|
||||||
IN LONG Offset);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
UCHAR
|
|
||||||
RtlAtomicBitTestAndSet64(IN PLONGLONG Base,
|
|
||||||
IN LONGLONG Offset);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicCompareExchange8(IN PCHAR Address,
|
|
||||||
IN CHAR Comperand,
|
|
||||||
IN CHAR Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicCompareExchange16(IN PSHORT Address,
|
|
||||||
IN SHORT Comperand,
|
|
||||||
IN SHORT Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicCompareExchange32(IN PLONG Address,
|
|
||||||
IN LONG Comperand,
|
|
||||||
IN LONG Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicCompareExchange64(IN PLONG_PTR Address,
|
|
||||||
IN LONG_PTR Comperand,
|
|
||||||
IN LONG_PTR Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
PVOID
|
|
||||||
RtlAtomicCompareExchangePointer(IN PVOID *Address,
|
|
||||||
IN PVOID Comperand,
|
|
||||||
IN PVOID Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicDecrement8(IN PCHAR Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicDecrement16(IN PSHORT Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicDecrement32(IN PLONG Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicDecrement64(IN PLONG_PTR Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicExchange8(IN PCHAR Address,
|
|
||||||
IN CHAR Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicExchange16(IN PSHORT Address,
|
|
||||||
IN SHORT Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicExchange32(IN PLONG Address,
|
|
||||||
IN LONG Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicExchange64(IN PLONG_PTR Address,
|
|
||||||
IN LONG_PTR Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicExchangeAdd8(IN PCHAR Address,
|
|
||||||
IN CHAR Value);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicExchangeAdd16(IN PSHORT Address,
|
|
||||||
IN SHORT Value);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicExchangeAdd32(IN PLONG Address,
|
|
||||||
IN LONG Value);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicExchangeAdd64(IN PLONG_PTR Address,
|
|
||||||
IN LONG_PTR Value);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
PVOID
|
|
||||||
RtlAtomicExchangePointer(IN PVOID *Address,
|
|
||||||
IN PVOID Exchange);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
PSINGLE_LIST_ENTRY
|
|
||||||
RtlAtomicFlushSingleList(IN PSINGLE_LIST_HEADER Header);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicIncrement8(IN PCHAR Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicIncrement16(IN PSHORT Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicIncrement32(IN PLONG Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicIncrement64(IN PLONG_PTR Address);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicOr8(IN PCHAR Address,
|
|
||||||
IN CHAR Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicOr16(IN PSHORT Address,
|
|
||||||
IN SHORT Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicOr32(IN PLONG Address,
|
|
||||||
IN LONG Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicOr64(IN PLONG_PTR Address,
|
|
||||||
IN LONG_PTR Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
PSINGLE_LIST_ENTRY
|
|
||||||
RtlAtomicPopEntrySingleList(IN PSINGLE_LIST_HEADER Header);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
PSINGLE_LIST_ENTRY
|
|
||||||
RtlAtomicPushEntrySingleList(IN PSINGLE_LIST_HEADER Header,
|
|
||||||
IN PSINGLE_LIST_ENTRY Entry);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
CHAR
|
|
||||||
RtlAtomicXor8(IN PCHAR Address,
|
|
||||||
IN CHAR Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
SHORT
|
|
||||||
RtlAtomicXor16(IN PSHORT Address,
|
|
||||||
IN SHORT Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG
|
|
||||||
RtlAtomicXor32(IN PLONG Address,
|
|
||||||
IN LONG Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
LONG_PTR
|
|
||||||
RtlAtomicXor64(IN PLONG_PTR Address,
|
|
||||||
IN LONG_PTR Mask);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
USHORT
|
|
||||||
RtlByteSwap16(IN USHORT Source);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
ULONG
|
|
||||||
RtlByteSwap32(IN ULONG Source);
|
|
||||||
|
|
||||||
XTFASTCALL
|
|
||||||
ULONGLONG
|
|
||||||
RtlByteSwap64(IN ULONGLONG Source);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
INT
|
|
||||||
RtlCountLeadingZeroes32(IN ULONG Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
INT
|
|
||||||
RtlCountLeadingZeroes64(IN ULONGLONG Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
INT
|
|
||||||
RtlCountTrailingZeroes32(IN ULONG Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
INT
|
|
||||||
RtlCountTrailingZeroes64(IN ULONGLONG Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
LONGLONG
|
|
||||||
RtlDivide32(IN LONG Dividend,
|
|
||||||
IN LONG Divisor,
|
|
||||||
OUT PLONG Remainder);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
LONGLONG
|
|
||||||
RtlDivide64(IN LONGLONG Dividend,
|
|
||||||
IN LONGLONG Divisor,
|
|
||||||
OUT PLONGLONG Remainder);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONGLONG
|
|
||||||
RtlDivideUnsigned32(IN ULONG Dividend,
|
|
||||||
IN ULONG Divisor,
|
|
||||||
OUT PULONG Remainder);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONGLONG
|
|
||||||
RtlDivideUnsigned64(IN ULONGLONG Dividend,
|
|
||||||
IN ULONGLONG Divisor,
|
|
||||||
OUT PULONGLONG Remainder);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
VOID
|
|
||||||
RtlDumpBitMap(IN PRTL_BITMAP BitMap);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
LONG
|
|
||||||
RtlGetBaseExponent(IN DOUBLE Value,
|
|
||||||
OUT PDOUBLE PowerOfTen);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
RtlInfiniteDouble(IN DOUBLE Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
RtlInitializeListHead(IN PLIST_ENTRY ListHead);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
RtlInsertHeadList(IN OUT PLIST_ENTRY ListHead,
|
|
||||||
IN PLIST_ENTRY Entry);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
RtlInsertTailList(IN OUT PLIST_ENTRY ListHead,
|
|
||||||
IN PLIST_ENTRY Entry);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
RtlListEmpty(PLIST_ENTRY ListHead);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
RtlListLoop(IN PLIST_ENTRY ListHead);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
BOOLEAN
|
|
||||||
RtlNanDouble(IN DOUBLE Value);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
RtlRemoveEntryList(IN PLIST_ENTRY Entry);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONG_PTR
|
|
||||||
RtlpCountBits(IN PRTL_BITMAP BitMap,
|
|
||||||
IN ULONG_PTR Length,
|
|
||||||
IN ULONG_PTR StartingIndex,
|
|
||||||
IN BOOLEAN SetBits);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONG_PTR
|
|
||||||
RtlpFindBits(IN PRTL_BITMAP BitMap,
|
|
||||||
IN ULONG_PTR Length,
|
|
||||||
IN ULONG_PTR StartingIndex,
|
|
||||||
IN BOOLEAN SetBits);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
RtlpFormatWideStringArgumentSpecifier(IN PRTL_PRINT_CONTEXT Context,
|
|
||||||
IN PCWSTR Format,
|
|
||||||
IN PVA_LIST ArgumentList,
|
|
||||||
IN OUT PULONG Index);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONGLONG
|
|
||||||
RtlpGetWideStringArgument(IN PVA_LIST ArgumentList,
|
|
||||||
IN ULONG ArgumentNumber,
|
|
||||||
IN LONG ArgumentSize);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
ULONGLONG
|
|
||||||
RtlpGetWideStringSpecifierValue(IN PWCHAR *Format);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
RtlpWriteWideCharacter(IN PRTL_PRINT_CONTEXT Context,
|
|
||||||
IN WCHAR Character);
|
|
||||||
|
|
||||||
XTCDECL
|
|
||||||
XTSTATUS
|
|
||||||
RtlpWriteWideStringCustomValue(IN PRTL_PRINT_CONTEXT Context,
|
|
||||||
IN PCWSTR Format,
|
|
||||||
IN ...);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
RtlpWriteWideStringDoubleValue(IN PRTL_PRINT_CONTEXT Context,
|
|
||||||
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
|
||||||
IN DOUBLE Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
RtlpWriteWideStringHexDoubleValue(IN PRTL_PRINT_CONTEXT Context,
|
|
||||||
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
|
||||||
IN DOUBLE Value);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
RtlpWriteWideStringIntegerValue(IN PRTL_PRINT_CONTEXT Context,
|
|
||||||
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
|
||||||
IN ULONGLONG Integer);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
RtlpWriteWideStringStringValue(PRTL_PRINT_CONTEXT Context,
|
|
||||||
PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
|
||||||
PCHAR String,
|
|
||||||
SIZE_T StringLength);
|
|
||||||
|
|
||||||
XTAPI
|
|
||||||
XTSTATUS
|
|
||||||
RtlpWriteWideStringValue(PRTL_PRINT_CONTEXT Context,
|
|
||||||
PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
|
||||||
PWCHAR String,
|
|
||||||
SIZE_T StringLength);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_RTLI_H */
|
|
@@ -1,19 +0,0 @@
|
|||||||
/**
|
|
||||||
* PROJECT: ExectOS
|
|
||||||
* COPYRIGHT: See COPYING.md in the top level directory
|
|
||||||
* FILE: xtoskrnl/includes/xtos.h
|
|
||||||
* DESCRIPTION: Top level header for the XT kernel
|
|
||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* XT Development Kit */
|
|
||||||
#include <xtkmapi.h>
|
|
||||||
|
|
||||||
/* XT OS version */
|
|
||||||
#include <xtver.h>
|
|
||||||
|
|
||||||
/* Kernel specific headers */
|
|
||||||
#include "kei.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include ARCH_HEADER(kei.h)
|
|
@@ -10,22 +10,13 @@
|
|||||||
/* Preprocessor macro for including arch-specific headers */
|
/* Preprocessor macro for including arch-specific headers */
|
||||||
#define XTOS_ARCH_HEADER(subsystem, header) STRINGIFY(subsystem/_ARCH/header)
|
#define XTOS_ARCH_HEADER(subsystem, header) STRINGIFY(subsystem/_ARCH/header)
|
||||||
|
|
||||||
|
/* XT Kernel Mode Development Kit */
|
||||||
|
|
||||||
/* Temporary includes for C code compatibility */
|
|
||||||
extern "C" {
|
|
||||||
/* XT Development Kit */
|
|
||||||
#include <xtkmapi.h>
|
#include <xtkmapi.h>
|
||||||
|
|
||||||
/* XT OS version */
|
/* XT OS version */
|
||||||
#include <xtver.h>
|
#include <xtver.h>
|
||||||
|
|
||||||
/* Kernel specific headers */
|
/* Kernel specific headers */
|
||||||
#include <xtos.h>
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <ar.hh>
|
#include <ar.hh>
|
||||||
#include <ex.hh>
|
#include <ex.hh>
|
||||||
#include <hl.hh>
|
#include <hl.hh>
|
||||||
|
@@ -97,6 +97,13 @@ KE::BootInformation::GetKernelParameter(IN PCWSTR ParameterName,
|
|||||||
return STATUS_NOT_FOUND;
|
return STATUS_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XTAPI
|
||||||
|
PLIST_ENTRY
|
||||||
|
KE::BootInformation::GetMemoryDescriptors(VOID)
|
||||||
|
{
|
||||||
|
return &InitializationBlock->MemoryDescriptorListHead;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a pointer to the list of system resources.
|
* Retrieves a pointer to the list of system resources.
|
||||||
*
|
*
|
||||||
@@ -125,8 +132,13 @@ XTAPI
|
|||||||
VOID
|
VOID
|
||||||
KE::BootInformation::InitializeInitializationBlock(IN PKERNEL_INITIALIZATION_BLOCK Block)
|
KE::BootInformation::InitializeInitializationBlock(IN PKERNEL_INITIALIZATION_BLOCK Block)
|
||||||
{
|
{
|
||||||
|
/* Check if the initialization block is already initialized */
|
||||||
|
if(!InitializationBlock)
|
||||||
|
{
|
||||||
|
/* Save the kernel initialization block */
|
||||||
InitializationBlock = Block;
|
InitializationBlock = Block;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -34,7 +34,7 @@ MM::HardwarePool::AllocateHardwareMemory(IN PFN_NUMBER PageCount,
|
|||||||
PLOADER_MEMORY_DESCRIPTOR Descriptor, ExtraDescriptor, HardwareDescriptor;
|
PLOADER_MEMORY_DESCRIPTOR Descriptor, ExtraDescriptor, HardwareDescriptor;
|
||||||
PFN_NUMBER Alignment, MaxPage;
|
PFN_NUMBER Alignment, MaxPage;
|
||||||
ULONGLONG PhysicalAddress;
|
ULONGLONG PhysicalAddress;
|
||||||
PLIST_ENTRY ListEntry;
|
PLIST_ENTRY ListEntry, LoaderMemoryDescriptors;
|
||||||
|
|
||||||
/* Assume failure */
|
/* Assume failure */
|
||||||
(*Buffer).QuadPart = 0;
|
(*Buffer).QuadPart = 0;
|
||||||
@@ -49,9 +49,12 @@ MM::HardwarePool::AllocateHardwareMemory(IN PFN_NUMBER PageCount,
|
|||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get a list of memory descriptors provided by the boot loader */
|
||||||
|
LoaderMemoryDescriptors = KE::BootInformation::GetMemoryDescriptors();
|
||||||
|
|
||||||
/* Scan memory descriptors provided by the boot loader */
|
/* Scan memory descriptors provided by the boot loader */
|
||||||
ListEntry = KeGetInitializationBlock()->MemoryDescriptorListHead.Flink;
|
ListEntry = LoaderMemoryDescriptors->Flink;
|
||||||
while(ListEntry != &KeGetInitializationBlock()->MemoryDescriptorListHead)
|
while(ListEntry != LoaderMemoryDescriptors)
|
||||||
{
|
{
|
||||||
Descriptor = CONTAIN_RECORD(ListEntry, LOADER_MEMORY_DESCRIPTOR, ListEntry);
|
Descriptor = CONTAIN_RECORD(ListEntry, LOADER_MEMORY_DESCRIPTOR, ListEntry);
|
||||||
|
|
||||||
@@ -77,7 +80,7 @@ MM::HardwarePool::AllocateHardwareMemory(IN PFN_NUMBER PageCount,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure we found a descriptor */
|
/* Make sure we found a descriptor */
|
||||||
if(ListEntry == &KeGetInitializationBlock()->MemoryDescriptorListHead)
|
if(ListEntry == LoaderMemoryDescriptors)
|
||||||
{
|
{
|
||||||
/* Descriptor not found, return error */
|
/* Descriptor not found, return error */
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
@@ -28,7 +28,7 @@ MM::Init::InitializeMemoryManager(VOID)
|
|||||||
{
|
{
|
||||||
/* Insufficient physical pages, kernel panic */
|
/* Insufficient physical pages, kernel panic */
|
||||||
DebugPrint(L"Insufficient physical pages! Install additional memory\n");
|
DebugPrint(L"Insufficient physical pages! Install additional memory\n");
|
||||||
KePanic(0);
|
KE::Crash::Panic(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Proceed with architecture specific initialization */
|
/* Proceed with architecture specific initialization */
|
||||||
@@ -46,16 +46,19 @@ XTAPI
|
|||||||
VOID
|
VOID
|
||||||
MM::Init::ScanMemoryDescriptors(VOID)
|
MM::Init::ScanMemoryDescriptors(VOID)
|
||||||
{
|
{
|
||||||
|
PLIST_ENTRY LoaderMemoryDescriptors, MemoryMappings;
|
||||||
PLOADER_MEMORY_DESCRIPTOR MemoryDescriptor;
|
PLOADER_MEMORY_DESCRIPTOR MemoryDescriptor;
|
||||||
PLIST_ENTRY MemoryMappings;
|
|
||||||
PFN_NUMBER FreePages;
|
PFN_NUMBER FreePages;
|
||||||
|
|
||||||
/* Initially, set number of free pages to 0 */
|
/* Initially, set number of free pages to 0 */
|
||||||
FreePages = 0;
|
FreePages = 0;
|
||||||
|
|
||||||
|
/* Get a list of memory descriptors provided by the boot loader */
|
||||||
|
LoaderMemoryDescriptors = KE::BootInformation::GetMemoryDescriptors();
|
||||||
|
|
||||||
/* Iterate through memory mappings provided by the boot loader */
|
/* Iterate through memory mappings provided by the boot loader */
|
||||||
MemoryMappings = KeGetInitializationBlock()->MemoryDescriptorListHead.Flink;
|
MemoryMappings = LoaderMemoryDescriptors->Flink;
|
||||||
while(MemoryMappings != &KeGetInitializationBlock()->MemoryDescriptorListHead)
|
while(MemoryMappings != LoaderMemoryDescriptors)
|
||||||
{
|
{
|
||||||
/* Get memory descriptor */
|
/* Get memory descriptor */
|
||||||
MemoryDescriptor = CONTAIN_RECORD(MemoryMappings, LOADER_MEMORY_DESCRIPTOR, ListEntry);
|
MemoryDescriptor = CONTAIN_RECORD(MemoryMappings, LOADER_MEMORY_DESCRIPTOR, ListEntry);
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xtos.h>
|
#include <xtos.hh>
|
||||||
|
|
||||||
|
|
||||||
/* This is required for floating numbers to keep LLVM happy */
|
/* This is required for floating numbers to keep LLVM happy */
|
||||||
|
Reference in New Issue
Block a user