Line data Source code
1 0 : /*
2 : * Copyright (c) 2015, Wind River Systems, Inc.
3 : * Copyright (c) 2017, Oticon A/S
4 : *
5 : * SPDX-License-Identifier: Apache-2.0
6 : */
7 :
8 : /* Memory mapped registers I/O functions in non-arch-specific C code */
9 :
10 : #ifndef ZEPHYR_INCLUDE_ARCH_COMMON_SYS_IO_H_
11 : #define ZEPHYR_INCLUDE_ARCH_COMMON_SYS_IO_H_
12 :
13 : #ifndef _ASMLANGUAGE
14 :
15 : #include <zephyr/toolchain.h>
16 : #include <zephyr/types.h>
17 : #include <zephyr/sys/sys_io.h>
18 :
19 : #ifdef __cplusplus
20 : extern "C" {
21 : #endif
22 :
23 0 : static ALWAYS_INLINE uint8_t sys_read8(mem_addr_t addr)
24 : {
25 : return *(volatile uint8_t *)addr;
26 : }
27 :
28 0 : static ALWAYS_INLINE void sys_write8(uint8_t data, mem_addr_t addr)
29 : {
30 : *(volatile uint8_t *)addr = data;
31 : }
32 :
33 0 : static ALWAYS_INLINE uint16_t sys_read16(mem_addr_t addr)
34 : {
35 : return *(volatile uint16_t *)addr;
36 : }
37 :
38 0 : static ALWAYS_INLINE void sys_write16(uint16_t data, mem_addr_t addr)
39 : {
40 : *(volatile uint16_t *)addr = data;
41 : }
42 :
43 0 : static ALWAYS_INLINE uint32_t sys_read32(mem_addr_t addr)
44 : {
45 : return *(volatile uint32_t *)addr;
46 : }
47 :
48 0 : static ALWAYS_INLINE void sys_write32(uint32_t data, mem_addr_t addr)
49 : {
50 : *(volatile uint32_t *)addr = data;
51 : }
52 :
53 0 : static ALWAYS_INLINE uint64_t sys_read64(mem_addr_t addr)
54 : {
55 : return *(volatile uint64_t *)addr;
56 : }
57 :
58 0 : static ALWAYS_INLINE void sys_write64(uint64_t data, mem_addr_t addr)
59 : {
60 : *(volatile uint64_t *)addr = data;
61 : }
62 :
63 : #ifdef __cplusplus
64 : }
65 : #endif
66 :
67 : #endif /* _ASMLANGUAGE */
68 :
69 : #endif /* ZEPHYR_INCLUDE_ARCH_COMMON_SYS_IO_H_ */
|