From fe0045c0c9ed576d31fa0359775b6fecd534f4aa Mon Sep 17 00:00:00 2001 From: WangRunji Date: Fri, 12 Apr 2019 19:23:45 +0800 Subject: [PATCH] remove legacy 'is32' code --- kernel/src/arch/aarch64/consts.rs | 1 - kernel/src/arch/aarch64/interrupt/context.rs | 1 - kernel/src/arch/mipsel/consts.rs | 1 - kernel/src/arch/mipsel/context.rs | 1 - kernel/src/arch/riscv32/consts.rs | 1 - kernel/src/arch/riscv32/context.rs | 1 - kernel/src/arch/x86_64/consts.rs | 1 - kernel/src/arch/x86_64/interrupt/trapframe.rs | 14 +++----------- kernel/src/process/structs.rs | 14 ++++---------- 9 files changed, 7 insertions(+), 28 deletions(-) diff --git a/kernel/src/arch/aarch64/consts.rs b/kernel/src/arch/aarch64/consts.rs index ea71e7a..3a7c500 100644 --- a/kernel/src/arch/aarch64/consts.rs +++ b/kernel/src/arch/aarch64/consts.rs @@ -5,4 +5,3 @@ pub const KERNEL_HEAP_SIZE: usize = 8 * 1024 * 1024; pub const MEMORY_OFFSET: usize = 0; pub const USER_STACK_OFFSET: usize = 0x0000_8000_0000_0000 - USER_STACK_SIZE; pub const USER_STACK_SIZE: usize = 1 * 1024 * 1024; -pub const USER32_STACK_OFFSET: usize = USER_STACK_OFFSET; diff --git a/kernel/src/arch/aarch64/interrupt/context.rs b/kernel/src/arch/aarch64/interrupt/context.rs index 6639ab8..87f3a4e 100644 --- a/kernel/src/arch/aarch64/interrupt/context.rs +++ b/kernel/src/arch/aarch64/interrupt/context.rs @@ -163,7 +163,6 @@ impl Context { entry_addr: usize, ustack_top: usize, kstack_top: usize, - _is32: bool, ttbr: usize, ) -> Self { InitStack { diff --git a/kernel/src/arch/mipsel/consts.rs b/kernel/src/arch/mipsel/consts.rs index ff2ef0c..48b1b82 100644 --- a/kernel/src/arch/mipsel/consts.rs +++ b/kernel/src/arch/mipsel/consts.rs @@ -8,6 +8,5 @@ pub const MEMORY_OFFSET: usize = 0x8000_0000; pub const USER_STACK_OFFSET: usize = 0x80000000 - USER_STACK_SIZE; pub const USER_STACK_SIZE: usize = 0x10000; -pub const USER32_STACK_OFFSET: usize = 0x80000000 - USER_STACK_SIZE; pub const MAX_DTB_SIZE: usize = 0x2000; diff --git a/kernel/src/arch/mipsel/context.rs b/kernel/src/arch/mipsel/context.rs index 85bc56b..69f9016 100644 --- a/kernel/src/arch/mipsel/context.rs +++ b/kernel/src/arch/mipsel/context.rs @@ -206,7 +206,6 @@ impl Context { entry_addr: usize, ustack_top: usize, kstack_top: usize, - _is32: bool, satp: usize, ) -> Self { info!( diff --git a/kernel/src/arch/riscv32/consts.rs b/kernel/src/arch/riscv32/consts.rs index a3004b0..45fa998 100644 --- a/kernel/src/arch/riscv32/consts.rs +++ b/kernel/src/arch/riscv32/consts.rs @@ -37,6 +37,5 @@ pub const MEMORY_END: usize = 0x8100_0000; // FIXME: rv64 `sh` and `ls` will crash if stack top > 0x80000000 ??? pub const USER_STACK_OFFSET: usize = 0x80000000 - USER_STACK_SIZE; pub const USER_STACK_SIZE: usize = 0x10000; -pub const USER32_STACK_OFFSET: usize = 0xC0000000 - USER_STACK_SIZE; pub const MAX_DTB_SIZE: usize = 0x2000; diff --git a/kernel/src/arch/riscv32/context.rs b/kernel/src/arch/riscv32/context.rs index e05dafe..51df0c1 100644 --- a/kernel/src/arch/riscv32/context.rs +++ b/kernel/src/arch/riscv32/context.rs @@ -236,7 +236,6 @@ impl Context { entry_addr: usize, ustack_top: usize, kstack_top: usize, - _is32: bool, satp: usize, ) -> Self { InitStack { diff --git a/kernel/src/arch/x86_64/consts.rs b/kernel/src/arch/x86_64/consts.rs index 7543779..2095e39 100644 --- a/kernel/src/arch/x86_64/consts.rs +++ b/kernel/src/arch/x86_64/consts.rs @@ -53,7 +53,6 @@ pub const USER_GRANT_PML4: usize = (USER_GRANT_OFFSET & PML4_MASK) / PML4_SIZE; /// Offset to user stack pub const USER_STACK_OFFSET: usize = USER_GRANT_OFFSET + PML4_SIZE; -pub const USER32_STACK_OFFSET: usize = 0xB000_0000; pub const USER_STACK_PML4: usize = (USER_STACK_OFFSET & PML4_MASK) / PML4_SIZE; /// Size of user stack pub const USER_STACK_SIZE: usize = 1024 * 1024; // 1 MB diff --git a/kernel/src/arch/x86_64/interrupt/trapframe.rs b/kernel/src/arch/x86_64/interrupt/trapframe.rs index 03f4c32..d9ab7f7 100644 --- a/kernel/src/arch/x86_64/interrupt/trapframe.rs +++ b/kernel/src/arch/x86_64/interrupt/trapframe.rs @@ -73,14 +73,10 @@ impl TrapFrame { tf.fpstate_offset = 16; // skip restoring for first time tf } - fn new_user_thread(entry_addr: usize, rsp: usize, is32: bool) -> Self { + fn new_user_thread(entry_addr: usize, rsp: usize) -> Self { use crate::arch::gdt; let mut tf = TrapFrame::default(); - tf.cs = if is32 { - gdt::UCODE32_SELECTOR.0 - } else { - gdt::UCODE_SELECTOR.0 - } as usize; + tf.cs = gdt::UCODE_SELECTOR.0 as usize; tf.rip = entry_addr; tf.ss = gdt::UDATA32_SELECTOR.0 as usize; tf.rsp = rsp; @@ -88,9 +84,6 @@ impl TrapFrame { tf.fpstate_offset = 16; // skip restoring for first time tf } - pub fn is_user(&self) -> bool { - self.cs & 0x3 == 0x3 - } } #[derive(Debug, Default)] @@ -203,12 +196,11 @@ impl Context { entry_addr: usize, ustack_top: usize, kstack_top: usize, - is32: bool, cr3: usize, ) -> Self { InitStack { context: ContextData::new(cr3), - tf: TrapFrame::new_user_thread(entry_addr, ustack_top, is32), + tf: TrapFrame::new_user_thread(entry_addr, ustack_top), } .push_at(kstack_top) } diff --git a/kernel/src/process/structs.rs b/kernel/src/process/structs.rs index 057af1c..084469f 100644 --- a/kernel/src/process/structs.rs +++ b/kernel/src/process/structs.rs @@ -175,10 +175,6 @@ impl Thread { { // Parse ELF let elf = ElfFile::new(data).expect("failed to read elf"); - let is32 = match elf.header.pt2 { - header::HeaderPt2::Header32(_) => true, - header::HeaderPt2::Header64(_) => false, - }; // Check ELF type match elf.header.pt2.type_().as_type() { @@ -210,12 +206,10 @@ impl Thread { let mut vm = elf.make_memory_set(); // User stack - use crate::consts::{USER32_STACK_OFFSET, USER_STACK_OFFSET, USER_STACK_SIZE}; + use crate::consts::{USER_STACK_OFFSET, USER_STACK_SIZE}; let mut ustack_top = { - let (ustack_buttom, ustack_top) = match is32 { - true => (USER32_STACK_OFFSET, USER32_STACK_OFFSET + USER_STACK_SIZE), - false => (USER_STACK_OFFSET, USER_STACK_OFFSET + USER_STACK_SIZE), - }; + let ustack_buttom = USER_STACK_OFFSET; + let ustack_top = USER_STACK_OFFSET + USER_STACK_SIZE; vm.push( ustack_buttom, ustack_top, @@ -288,7 +282,7 @@ impl Thread { Box::new(Thread { context: unsafe { - Context::new_user_thread(entry_addr, ustack_top, kstack.top(), is32, vm.token()) + Context::new_user_thread(entry_addr, ustack_top, kstack.top(), vm.token()) }, kstack, clear_child_tid: 0,