feat(kernel): add PL011 UART console and arch I/O helpers

- Add IOSerial: PL011 (0x0900_0000) TX with FIFO-full polling, yield while waiting
- Add Arch/IO.h (32-bit MMIO with DSB) and Arch/CPU.h (yield, WFI)
- Extend types.h (e.g. ASCII, Address, Int/UInt aliases)
- Wire KernelMain to IOSerialPutString for early boot output
- Drop .sourcekit-lsp config; note IO glob in CMake (commented)
This commit is contained in:
karina
2026-04-23 21:25:15 +04:00
parent cf142ba78e
commit 502413b9ab
8 changed files with 68 additions and 11 deletions
+25
View File
@@ -0,0 +1,25 @@
#include <IO/IOSerial.h>
#include <Arch/IO.h>
#include <Arch/CPU.h>
Int32 IOSerialPutCharacter(ASCII character) {
// TXFF -- TRansmit FIFO Full for PL011 is 5 bit of FR reg (0x18)
UInt64 uartFR = kUARTBaseAddress + 0x18;
while ((IOAddressRead32(uartFR) & (1 << 5)) != 0) {
CPUYield();
}
IOAddressWrite32(kUARTBaseAddress, character);
return character;
}
Int32 IOSerialPutString(const ASCII* string) {
Int i = 0;
while (string[i] != '\0') {
IOSerialPutCharacter(string[i]);
i++;
}
return i;
}