finished PIT implementation

This commit is contained in:
Chris Sanden
2026-04-15 15:49:11 +00:00
parent 46a91312f4
commit 9a213dcff2
12 changed files with 327 additions and 9 deletions

View File

@@ -8,9 +8,9 @@ typedef struct {
uint32_t size;
} alloc_t;
void init_kernel_memory(uint32_t* kernel_end);
void InitKernelMemory(uint32_t* kernel_end);
void init_paging(void);
void InitPaging(void);
void paging_map_virtual_to_phys(uint32_t virt, uint32_t phys);
char* pmalloc(size_t size);
@@ -21,6 +21,6 @@ void* memcpy(void* dest, const void* src, size_t num);
void* memset (void* ptr, int value, size_t num);
void* memset16 (void* ptr, uint16_t value, size_t num);
void print_memory_layout(void);
void PrintMemoryLayout(void);
#endif

View File

@@ -0,0 +1,25 @@
#ifndef PIT_H
#define PIT_H
#include <libc/stdint.h>
#include <libc/stdbool.h>
#define PIT_CMD_PORT 0x43
#define PIT_CHANNEL0_PORT 0x40
#define PIT_CHANNEL1_PORT 0x41
#define PIT_CHANNEL2_PORT 0x42
#define PC_SPEAKER_PORT 0x61
#define PIT_DEFAULT_DIVISOR 0x4E20 //20000, gets just shy of 60Hz
#define PIC1_CMD_PORT 0x20
#define PIC1_DATA_PORT 0x21
#define PIT_BASE_FREQ 1193180
#define TARGET_FREQ 1000
#define DIVIDER (PIT_BASE_FREQ / TARGET_FREQ)
#define TICKS_PER_MS (TARGET_FREQ / TARGET_FREQ) // = 1, needed for converting ms into ticks
void PitInitialize();
void SleepInterrupt(uint32_t ticks);
void SleepBusy(uint32_t milliseconds);
void SleepTest();
#endif

View File

@@ -34,5 +34,6 @@ void TerminalPutChar(char c);
void TerminalWrite(const char* data, size_t size);
void TerminalWriteString(const char* data);
void TerminalWriteUInt(uint32_t num);
void TerminalWriteHex(uint32_t memory);
#endif