Index: kernel/arch/abs32le/include/arch/context.h
===================================================================
--- kernel/arch/abs32le/include/arch/context.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/abs32le/include/arch/context.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -49,5 +49,4 @@
 	uintptr_t sp;
 	uintptr_t pc;
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/abs32le/include/arch/context_offset.h
===================================================================
--- kernel/arch/abs32le/include/arch/context_offset.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/abs32le/include/arch/context_offset.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -37,5 +37,4 @@
 
 #define OFFSET_PC  0x00
-#define OFFSET_IPL 0x04
 
 #endif
Index: kernel/arch/amd64/include/arch/context_struct.h
===================================================================
--- kernel/arch/amd64/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/amd64/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -39,6 +39,5 @@
 #define CONTEXT_OFFSET_R15  0x38
 #define CONTEXT_OFFSET_TP   0x40
-#define CONTEXT_OFFSET_IPL  0x48
-#define CONTEXT_SIZE        0x50
+#define CONTEXT_SIZE        0x48
 
 #ifndef __ASSEMBLER__
@@ -60,5 +59,4 @@
 	uint64_t r15;
 	uint64_t tp;
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/arm64/include/arch/context_struct.h
===================================================================
--- kernel/arch/arm64/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/arm64/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -43,6 +43,5 @@
 #define CONTEXT_OFFSET_X28  0x58
 #define CONTEXT_OFFSET_X29  0x60
-#define CONTEXT_OFFSET_IPL  0x68
-#define CONTEXT_SIZE        0x70
+#define CONTEXT_SIZE        0x68
 
 #ifndef __ASSEMBLER__
@@ -68,5 +67,4 @@
 	uint64_t x28;
 	uint64_t x29;
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/ia32/include/arch/context_struct.h
===================================================================
--- kernel/arch/ia32/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/ia32/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -37,6 +37,5 @@
 #define CONTEXT_OFFSET_EBP  0x14
 #define CONTEXT_OFFSET_TP   0x18
-#define CONTEXT_OFFSET_IPL  0x1c
-#define CONTEXT_SIZE        0x20
+#define CONTEXT_SIZE        0x1c
 
 #ifndef __ASSEMBLER__
@@ -53,5 +52,4 @@
 	uint32_t ebp;
 	uint32_t tp;
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/ia64/include/arch/context_struct.h
===================================================================
--- kernel/arch/ia64/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/ia64/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -72,6 +72,5 @@
 #define CONTEXT_OFFSET_F30             0x1d0
 #define CONTEXT_OFFSET_F31             0x1e0
-#define CONTEXT_OFFSET_IPL             0x1f0
-#define CONTEXT_SIZE                   0x200
+#define CONTEXT_SIZE                   0x1f0
 
 #ifndef __ASSEMBLER__
@@ -136,6 +135,4 @@
 	uint128_t f30;
 	uint128_t f31;
-
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/mips32/include/arch/context_struct.h
===================================================================
--- kernel/arch/mips32/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/mips32/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -43,6 +43,5 @@
 #define CONTEXT_OFFSET_GP  0x2c
 #define CONTEXT_OFFSET_TP  0x30
-#define CONTEXT_OFFSET_IPL 0x34
-#define CONTEXT_SIZE       0x38
+#define CONTEXT_SIZE       0x34
 
 #ifndef __ASSEMBLER__
@@ -66,5 +65,4 @@
 	/* We use the K1 register for userspace thread pointer. */
 	uint32_t tp;
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/ppc32/include/arch/context_struct.h
===================================================================
--- kernel/arch/ppc32/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/ppc32/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -53,6 +53,5 @@
 #define CONTEXT_OFFSET_R31  0x54
 #define CONTEXT_OFFSET_CR   0x58
-#define CONTEXT_OFFSET_IPL  0x5c
-#define CONTEXT_SIZE        0x60
+#define CONTEXT_SIZE        0x5c
 
 #ifndef __ASSEMBLER__
@@ -84,5 +83,4 @@
 	uint32_t r31;
 	uint32_t cr;
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/riscv64/include/arch/context_struct.h
===================================================================
--- kernel/arch/riscv64/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/riscv64/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -46,6 +46,5 @@
 #define CONTEXT_OFFSET_S10  0x70
 #define CONTEXT_OFFSET_S11  0x78
-#define CONTEXT_OFFSET_IPL  0x80
-#define CONTEXT_SIZE        0x88
+#define CONTEXT_SIZE        0x80
 
 #ifndef __ASSEMBLER__
@@ -70,5 +69,4 @@
 	uint64_t s10;
 	uint64_t s11;
-	ipl_t ipl;
 } context_t;
 
Index: kernel/arch/sparc64/include/arch/context_struct.h
===================================================================
--- kernel/arch/sparc64/include/arch/context_struct.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/arch/sparc64/include/arch/context_struct.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -49,6 +49,5 @@
 #define CONTEXT_OFFSET_L7   0x88
 #define CONTEXT_OFFSET_TP   0x90
-#define CONTEXT_OFFSET_IPL  0x98
-#define CONTEXT_SIZE        0xa0
+#define CONTEXT_SIZE        0x98
 
 #ifndef __ASSEMBLER__
@@ -76,5 +75,4 @@
 	uint64_t l7;
 	uint64_t tp;  // %g7
-	ipl_t ipl;
 } context_t;
 
Index: kernel/generic/include/proc/thread.h
===================================================================
--- kernel/generic/include/proc/thread.h	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/generic/include/proc/thread.h	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -95,4 +95,5 @@
 	 */
 	context_t saved_context;
+	ipl_t saved_ipl;
 
 	/**
Index: kernel/generic/src/proc/scheduler.c
===================================================================
--- kernel/generic/src/proc/scheduler.c	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/generic/src/proc/scheduler.c	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -336,5 +336,5 @@
 
 			irq_spinlock_unlock(&THREAD->lock, false);
-			interrupts_restore(THREAD->saved_context.ipl);
+			interrupts_restore(THREAD->saved_ipl);
 
 			return;
@@ -347,5 +347,5 @@
 		 *
 		 */
-		THREAD->saved_context.ipl = ipl;
+		THREAD->saved_ipl = ipl;
 	}
 
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision c1b073b79d93be484c1277800ebe22a898153e70)
+++ kernel/generic/src/proc/thread.c	(revision c030818c76c1190836935ae3d0c05760e3582537)
@@ -365,5 +365,5 @@
 
 	ipl_t ipl = interrupts_disable();
-	thread->saved_context.ipl = interrupts_read();
+	thread->saved_ipl = interrupts_read();
 	interrupts_restore(ipl);
 
