Line data Source code
1 0 : /* 2 : * Copyright (c) 2023 Meta 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : /* Memory mapped registers I/O functions in riscv arch C code */ 8 : 9 : #ifndef ZEPHYR_INCLUDE_ARCH_RISCV_SYS_IO_H_ 10 : #define ZEPHYR_INCLUDE_ARCH_RISCV_SYS_IO_H_ 11 : 12 : #ifndef _ASMLANGUAGE 13 : 14 : #include <zephyr/toolchain.h> 15 : #include <zephyr/types.h> 16 : #include <zephyr/sys/sys_io.h> 17 : 18 : #ifndef CONFIG_RISCV_SOC_HAS_CUSTOM_SYS_IO 19 : #include <zephyr/arch/common/sys_io.h> 20 : #endif 21 : 22 : #ifdef __cplusplus 23 : extern "C" { 24 : #endif 25 : 26 : #ifdef CONFIG_RISCV_SOC_HAS_CUSTOM_SYS_IO 27 : 28 : extern uint8_t z_soc_sys_read8(mem_addr_t addr); 29 : extern void z_soc_sys_write8(uint8_t data, mem_addr_t addr); 30 : extern uint16_t z_soc_sys_read16(mem_addr_t addr); 31 : extern void z_soc_sys_write16(uint16_t data, mem_addr_t addr); 32 : extern uint32_t z_soc_sys_read32(mem_addr_t addr); 33 : extern void z_soc_sys_write32(uint32_t data, mem_addr_t addr); 34 : extern uint64_t z_soc_sys_read64(mem_addr_t addr); 35 : extern void z_soc_sys_write64(uint64_t data, mem_addr_t addr); 36 : 37 : static ALWAYS_INLINE uint8_t sys_read8(mem_addr_t addr) 38 : { 39 : return z_soc_sys_read8(addr); 40 : } 41 : 42 : static ALWAYS_INLINE void sys_write8(uint8_t data, mem_addr_t addr) 43 : { 44 : z_soc_sys_write8(data, addr); 45 : } 46 : 47 : static ALWAYS_INLINE uint16_t sys_read16(mem_addr_t addr) 48 : { 49 : return z_soc_sys_read16(addr); 50 : } 51 : 52 : static ALWAYS_INLINE void sys_write16(uint16_t data, mem_addr_t addr) 53 : { 54 : z_soc_sys_write16(data, addr); 55 : } 56 : 57 : static ALWAYS_INLINE uint32_t sys_read32(mem_addr_t addr) 58 : { 59 : return z_soc_sys_read32(addr); 60 : } 61 : 62 : static ALWAYS_INLINE void sys_write32(uint32_t data, mem_addr_t addr) 63 : { 64 : z_soc_sys_write32(data, addr); 65 : } 66 : 67 : static ALWAYS_INLINE uint64_t sys_read64(mem_addr_t addr) 68 : { 69 : return z_soc_sys_read64(addr); 70 : } 71 : 72 : static ALWAYS_INLINE void sys_write64(uint64_t data, mem_addr_t addr) 73 : { 74 : z_soc_sys_write64(data, addr); 75 : } 76 : 77 : #endif /* CONFIG_RISCV_SOC_HAS_CUSTOM_SYS_IO */ 78 : 79 : #ifdef __cplusplus 80 : } 81 : #endif 82 : 83 : #endif /* _ASMLANGUAGE */ 84 : 85 : #endif /* ZEPHYR_INCLUDE_ARCH_RISCV_SYS_IO_H_ */