diff --git a/api/arceos_posix_api/src/imp/fd_ops.rs b/api/arceos_posix_api/src/imp/fd_ops.rs index 1158629968..7274b4cb13 100644 --- a/api/arceos_posix_api/src/imp/fd_ops.rs +++ b/api/arceos_posix_api/src/imp/fd_ops.rs @@ -8,6 +8,7 @@ use flatten_objects::FlattenObjects; use spin::RwLock; use crate::ctypes; +use crate::imp::stdio::{stdin, stdout}; pub const AX_FILE_LIMIT: usize = 1024; @@ -123,11 +124,7 @@ pub fn sys_fcntl(fd: c_int, cmd: c_int, arg: usize) -> c_int { } #[ctor_bare::register_ctor] -#[cfg(feature = "fd")] fn init_stdio() { - use crate::imp::fd_ops::FD_TABLE; - use crate::imp::stdio::{stdin, stdout}; - use alloc::sync::Arc; let mut fd_table = flatten_objects::FlattenObjects::new(); fd_table .add_at(0, Arc::new(stdin()) as _) diff --git a/api/arceos_posix_api/src/imp/stdio.rs b/api/arceos_posix_api/src/imp/stdio.rs index 46ba0c2a26..4087004f00 100644 --- a/api/arceos_posix_api/src/imp/stdio.rs +++ b/api/arceos_posix_api/src/imp/stdio.rs @@ -16,10 +16,6 @@ fn console_read_bytes(buf: &mut [u8]) -> AxResult { } fn console_write_bytes(buf: &[u8]) -> AxResult { - #[cfg(feature = "uspace")] - // We need to copy the buffer to the kernel space because SBI can't access user space. - axhal::console::write_bytes(buf.to_vec().as_slice()); - #[cfg(not(feature = "uspace"))] axhal::console::write_bytes(buf); Ok(buf.len()) } diff --git a/modules/axfs/Cargo.toml b/modules/axfs/Cargo.toml index 5db182dc47..a2efed294a 100644 --- a/modules/axfs/Cargo.toml +++ b/modules/axfs/Cargo.toml @@ -53,5 +53,5 @@ axdriver = { workspace = true, features = ["block", "ramdisk"] } axdriver_block = { git = "https://github.com/arceos-org/axdriver_crates.git", tag = "v0.1.0", features = ["ramdisk"] } axsync = { workspace = true, features = ["multitask"] } axtask = { workspace = true, features = ["test"] } -axns = { workspace = true, features = ["thread-local"] } +axns = { workspace = true, features = [] } crate_interface = "0.1" \ No newline at end of file diff --git a/modules/axfs/src/root.rs b/modules/axfs/src/root.rs index 8dda269cd4..afa3f937a2 100644 --- a/modules/axfs/src/root.rs +++ b/modules/axfs/src/root.rs @@ -12,9 +12,7 @@ use lazyinit::LazyInit; use crate::{api::FileType, fs, mounts}; def_resource! { - #[allow(non_camel_case_types)] static CURRENT_DIR_PATH: ResArc> = ResArc::new(); - #[allow(non_camel_case_types)] static CURRENT_DIR: ResArc> = ResArc::new(); } diff --git a/modules/axhal/linker.lds.S b/modules/axhal/linker.lds.S index 12b9047535..aa3b3c9ca3 100644 --- a/modules/axhal/linker.lds.S +++ b/modules/axhal/linker.lds.S @@ -16,15 +16,22 @@ SECTIONS _etext = .; } + _srodata = .; .rodata : ALIGN(4K) { - _srodata = .; *(.rodata .rodata.*) *(.srodata .srodata.*) *(.sdata2 .sdata2.*) - . = ALIGN(4K); - _erodata = .; } + .init_array : ALIGN(0x10) { + __init_array_start = .; + *(.init_array .init_array.*) + __init_array_end = .; + } + + . = ALIGN(4K); + _erodata = .; + .data : ALIGN(4K) { _sdata = .; *(.data.boot_page_table) @@ -40,13 +47,6 @@ SECTIONS _etdata = .; } - .init_array : ALIGN(4K) { - __init_array_start = .; - *(.init_array .init_array.*) - __init_array_end = .; - . = ALIGN(4K); - } - .tbss : ALIGN(0x10) { _stbss = .; *(.tbss .tbss.*) diff --git a/modules/axhal/src/arch/aarch64/context.rs b/modules/axhal/src/arch/aarch64/context.rs index 4ce640ed1d..ddd39f2fa2 100644 --- a/modules/axhal/src/arch/aarch64/context.rs +++ b/modules/axhal/src/arch/aarch64/context.rs @@ -127,29 +127,29 @@ impl UspaceContext { unsafe { core::arch::asm!( " - mov sp, x1 - ldp x30, x9, [x0, 30 * 8] - ldp x10, x11, [x0, 32 * 8] - msr sp_el0, x9 - msr elr_el1, x10 - msr spsr_el1, x11 + mov sp, x1 + ldp x30, x9, [x0, 30 * 8] + ldp x10, x11, [x0, 32 * 8] + msr sp_el0, x9 + msr elr_el1, x10 + msr spsr_el1, x11 - ldp x28, x29, [x0, 28 * 8] - ldp x26, x27, [x0, 26 * 8] - ldp x24, x25, [x0, 24 * 8] - ldp x22, x23, [x0, 22 * 8] - ldp x20, x21, [x0, 20 * 8] - ldp x18, x19, [x0, 18 * 8] - ldp x16, x17, [x0, 16 * 8] - ldp x14, x15, [x0, 14 * 8] - ldp x12, x13, [x0, 12 * 8] - ldp x10, x11, [x0, 10 * 8] - ldp x8, x9, [x0, 8 * 8] - ldp x6, x7, [x0, 6 * 8] - ldp x4, x5, [x0, 4 * 8] - ldp x2, x3, [x0, 2 * 8] - ldp x0, x1, [x0] - eret", + ldp x28, x29, [x0, 28 * 8] + ldp x26, x27, [x0, 26 * 8] + ldp x24, x25, [x0, 24 * 8] + ldp x22, x23, [x0, 22 * 8] + ldp x20, x21, [x0, 20 * 8] + ldp x18, x19, [x0, 18 * 8] + ldp x16, x17, [x0, 16 * 8] + ldp x14, x15, [x0, 14 * 8] + ldp x12, x13, [x0, 12 * 8] + ldp x10, x11, [x0, 10 * 8] + ldp x8, x9, [x0, 8 * 8] + ldp x6, x7, [x0, 6 * 8] + ldp x4, x5, [x0, 4 * 8] + ldp x2, x3, [x0, 2 * 8] + ldp x0, x1, [x0] + eret", in("x0") &self.0, in("x1") kstack_top.as_usize() , options(noreturn), diff --git a/modules/axns/src/lib.rs b/modules/axns/src/lib.rs index b3ae46fbc3..f1a679c08f 100644 --- a/modules/axns/src/lib.rs +++ b/modules/axns/src/lib.rs @@ -223,6 +223,7 @@ pub unsafe fn current_namespace_base() -> *mut u8 { macro_rules! def_resource { ( $( $(#[$attr:meta])* $vis:vis static $name:ident: $ty:ty = $default:expr; )+ ) => { $( + $(#[$attr])* #[allow(non_camel_case_types)] $vis struct $name { __value: () }