mirror of https://gitlab.com/nakst/essence
32 lines
991 B
C
32 lines
991 B
C
#ifndef ARCH_X86_64_HEADER
|
|
#define ARCH_X86_64_HEADER
|
|
|
|
#define LOW_MEMORY_MAP_START (0xFFFFFE0000000000)
|
|
#define LOW_MEMORY_LIMIT (0x100000) // The first 1MB is mapped here.
|
|
|
|
extern "C" uint64_t ProcessorReadCR3();
|
|
extern "C" void gdt_data();
|
|
|
|
extern "C" void SSSE3Framebuffer32To24Copy(volatile uint8_t *destination, volatile uint8_t *source, size_t pixelGroups);
|
|
|
|
extern bool pagingNXESupport;
|
|
extern bool pagingPCIDSupport;
|
|
extern bool pagingSMEPSupport;
|
|
extern bool pagingTCESupport;
|
|
|
|
extern "C" void processorGDTR();
|
|
extern "C" void SetupProcessor2(struct NewProcessorStorage *);
|
|
extern "C" void ProcessorInstallTSS(uint32_t *gdt, uint32_t *tss);
|
|
|
|
struct NewProcessorStorage {
|
|
struct CPULocalStorage *local;
|
|
uint32_t *gdt;
|
|
};
|
|
|
|
NewProcessorStorage AllocateNewProcessorStorage(struct ACPIProcessor *archCPU);
|
|
bool HasSSSE3Support();
|
|
uintptr_t GetBootloaderInformationOffset();
|
|
void ArchDelay1Ms(); // Spin for approximately 1ms. Use only during initialisation. Not thread-safe.
|
|
|
|
#endif
|