1 /* 2 * Copyright (c) 2021 Synopsys. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_ARCH_ARC_SYS_IO_COMMON_H_ 8 #define ZEPHYR_INCLUDE_ARCH_ARC_SYS_IO_COMMON_H_ 9 10 #ifndef _ASMLANGUAGE 11 12 #include <toolchain.h> 13 #include <sys/sys_io.h> 14 #include <arch/arc/v2/aux_regs.h> 15 16 #include <zephyr/types.h> 17 #include <stddef.h> 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 sys_read8(mem_addr_t addr)23static ALWAYS_INLINE uint8_t sys_read8(mem_addr_t addr) 24 { 25 uint8_t value; 26 27 compiler_barrier(); 28 value = *(volatile uint8_t *)addr; 29 compiler_barrier(); 30 31 return value; 32 } 33 sys_write8(uint8_t data,mem_addr_t addr)34static ALWAYS_INLINE void sys_write8(uint8_t data, mem_addr_t addr) 35 { 36 compiler_barrier(); 37 *(volatile uint8_t *)addr = data; 38 compiler_barrier(); 39 } 40 sys_read16(mem_addr_t addr)41static ALWAYS_INLINE uint16_t sys_read16(mem_addr_t addr) 42 { 43 uint16_t value; 44 45 compiler_barrier(); 46 value = *(volatile uint16_t *)addr; 47 compiler_barrier(); 48 49 return value; 50 } 51 sys_write16(uint16_t data,mem_addr_t addr)52static ALWAYS_INLINE void sys_write16(uint16_t data, mem_addr_t addr) 53 { 54 compiler_barrier(); 55 *(volatile uint16_t *)addr = data; 56 compiler_barrier(); 57 } 58 sys_read32(mem_addr_t addr)59static ALWAYS_INLINE uint32_t sys_read32(mem_addr_t addr) 60 { 61 uint32_t value; 62 63 compiler_barrier(); 64 value = *(volatile uint32_t *)addr; 65 compiler_barrier(); 66 67 return value; 68 } 69 sys_write32(uint32_t data,mem_addr_t addr)70static ALWAYS_INLINE void sys_write32(uint32_t data, mem_addr_t addr) 71 { 72 compiler_barrier(); 73 *(volatile uint32_t *)addr = data; 74 compiler_barrier(); 75 } 76 77 #ifdef __cplusplus 78 } 79 #endif 80 81 #endif /* _ASMLANGUAGE */ 82 83 #endif /* ZEPHYR_INCLUDE_ARCH_ARC_SYS_IO_COMMON_H_ */ 84