diff --git a/Kernel/Arch/riscv64/CSR.h b/Kernel/Arch/riscv64/CSR.h index 40caab79da..fcfab7c447 100644 --- a/Kernel/Arch/riscv64/CSR.h +++ b/Kernel/Arch/riscv64/CSR.h @@ -31,7 +31,7 @@ enum class Address : u16 { TIME = 0xc01, }; -inline FlatPtr read(Address address) +ALWAYS_INLINE FlatPtr read(Address address) { FlatPtr ret; asm volatile("csrr %0, %1" @@ -40,12 +40,12 @@ inline FlatPtr read(Address address) return ret; } -inline void write(Address address, FlatPtr value) +ALWAYS_INLINE void write(Address address, FlatPtr value) { asm volatile("csrw %0, %1" ::"i"(address), "Kr"(value)); } -inline FlatPtr read_and_set_bits(Address address, FlatPtr bit_mask) +ALWAYS_INLINE FlatPtr read_and_set_bits(Address address, FlatPtr bit_mask) { FlatPtr ret; asm volatile("csrrs %0, %1, %2" @@ -54,12 +54,12 @@ inline FlatPtr read_and_set_bits(Address address, FlatPtr bit_mask) return ret; } -inline void set_bits(Address address, FlatPtr bit_mask) +ALWAYS_INLINE void set_bits(Address address, FlatPtr bit_mask) { asm volatile("csrs %0, %1" ::"i"(address), "Kr"(bit_mask)); } -inline void clear_bits(Address address, FlatPtr bit_mask) +ALWAYS_INLINE void clear_bits(Address address, FlatPtr bit_mask) { asm volatile("csrc %0, %1" ::"i"(address), "Kr"(bit_mask)); } @@ -82,12 +82,12 @@ struct [[gnu::packed]] alignas(u64) SATP { // Current address-translation scheme Mode MODE : 4; - static inline void write(SATP satp) + static ALWAYS_INLINE void write(SATP satp) { CSR::write(CSR::Address::SATP, bit_cast(satp)); } - static inline SATP read() + static ALWAYS_INLINE SATP read() { return bit_cast(CSR::read(CSR::Address::SATP)); } @@ -203,12 +203,12 @@ struct [[gnu::packed]] alignas(u64) SSTATUS { // presence of some dirty state that will require saving extended user context to memory. u64 SD : 1; - static inline void write(SSTATUS sstatus) + static ALWAYS_INLINE void write(SSTATUS sstatus) { CSR::write(CSR::Address::SSTATUS, bit_cast(sstatus)); } - static inline SSTATUS read() + static ALWAYS_INLINE SSTATUS read() { return bit_cast(CSR::read(CSR::Address::SSTATUS)); }