summaryrefslogtreecommitdiff
path: root/sys/include/arch/amd64/cpu.h
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-08-21 20:11:31 -0400
committerIan Moffett <ian@osmora.org>2025-08-21 20:11:31 -0400
commit6bd8fc75891cf2c08aaf4584f0110ca1cbbf84db (patch)
treec4cc4cdda2d307ccd10c7396a10708e365b85958 /sys/include/arch/amd64/cpu.h
parent6da57a82e1b40f6f1f105aa990475b451d4958e9 (diff)
kernel/amd64: ipi: Greatly simplify IPI framework
The previous IPI framework design was quite an overengineered mess thanks to our friend, Φ of the body. - Use a flat array instead of a weird bitmap - Only use one ISR and chain the functions Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/include/arch/amd64/cpu.h')
-rw-r--r--sys/include/arch/amd64/cpu.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/include/arch/amd64/cpu.h b/sys/include/arch/amd64/cpu.h
index cf073fe..5adff29 100644
--- a/sys/include/arch/amd64/cpu.h
+++ b/sys/include/arch/amd64/cpu.h
@@ -52,7 +52,7 @@
#define CPU_VENDOR_INTEL 0x00000001
#define CPU_VENDOR_AMD 0x00000002
-typedef uint16_t ipi_pend_t;
+typedef uint32_t ipi_pend_t;
struct cpu_info {
uint32_t apicid;
@@ -60,8 +60,7 @@ struct cpu_info {
uint32_t vendor; /* Vendor (see CPU_VENDOR_*) */
uint8_t preempt : 1; /* CPU is preemptable */
uint8_t ipi_dispatch : 1; /* 1: IPIs being dispatched */
- uint8_t ipi_id;
- ipi_pend_t ipi_pending[N_IPIVEC];
+ ipi_pend_t ipi_pending;
uint8_t id; /* MI Logical ID */
uint8_t model : 4; /* CPU model number */
uint8_t family : 4; /* CPU family ID */