Init IOAPIC nad LAPICs

This commit is contained in:
2025-08-21 00:47:58 +02:00
parent 3f6df79885
commit 9d8849a425
25 changed files with 801 additions and 306 deletions

49
kernel/util/mmio.h Normal file
View File

@ -0,0 +1,49 @@
#ifndef UTIL_MMIO_H_
#define UTIL_MMIO_H_
#include <stdint.h>
static inline void mmiowrite8(void *p, uint8_t data) {
*(volatile uint8_t *)(p) = data;
}
static inline uint8_t mmioread8(void *p) {
return *(volatile uint8_t *)(p);
}
static inline void mmiowrite16(void *p, uint16_t data) {
*(volatile uint16_t *)(p) = data;
}
static inline uint16_t mmioread16(void *p) {
return *(volatile uint16_t *)(p);
}
static inline void mmiowrite32(void *p, uint32_t data) {
*(volatile uint32_t *)(p) = data;
}
static inline uint32_t mmioread32(void *p) {
return *(volatile uint32_t *)(p);
}
static inline void mmiowrite64(void *p, uint64_t data) {
*(volatile uint64_t *)(p) = data;
}
static inline uint64_t mmioread64(void *p) {
return *(volatile uint64_t *)(p);
}
static inline void mmioreadn(void *dst, const volatile void *src, size_t bytes) {
volatile uint8_t *s = (volatile uint8_t *)src;
uint8_t *d = (uint8_t *)dst;
while (bytes > 0) {
*d = *s;
++s;
++d;
--bytes;
}
}
#endif // UTIL_MMIO_H_