From 1bc9042af8907260659f28e8941837213dd37a8b Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Fri, 28 Jun 2024 23:07:09 -0400 Subject: kernel/amd64: Make splraise() return previous IPL Signed-off-by: Ian Moffett --- sys/arch/amd64/amd64/intr.c | 5 ++++- sys/include/arch/amd64/intr.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/arch/amd64/amd64/intr.c b/sys/arch/amd64/amd64/intr.c index 3e3f309..c79195d 100644 --- a/sys/arch/amd64/amd64/intr.c +++ b/sys/arch/amd64/amd64/intr.c @@ -38,17 +38,20 @@ static struct intr_entry *intrs[256] = {0}; -void +int splraise(uint8_t s) { struct cpu_info *ci = this_cpu(); + int old_ipl; if (s < ci->ipl) { panic("splraise IPL less than current IPL\n"); } amd64_write_cr8(s); + old_ipl = ci->ipl; ci->ipl = s; + return old_ipl; } void diff --git a/sys/include/arch/amd64/intr.h b/sys/include/arch/amd64/intr.h index af5edf2..c7c4583 100644 --- a/sys/include/arch/amd64/intr.h +++ b/sys/include/arch/amd64/intr.h @@ -52,7 +52,7 @@ struct intr_entry { }; int intr_alloc_vector(const char *name, uint8_t priority); -void splraise(uint8_t s); +int splraise(uint8_t s); void splx(uint8_t s); #endif -- cgit v1.2.3