Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
sys_io.h
Go to the documentation of this file.
1/*
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 <toolchain.h>
16#include <zephyr/types.h>
17#include <sys/sys_io.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
24{
25 return *(volatile uint8_t *)addr;
26}
27
29{
30 *(volatile uint8_t *)addr = data;
31}
32
34{
35 return *(volatile uint16_t *)addr;
36}
37
39{
40 *(volatile uint16_t *)addr = data;
41}
42
44{
45 return *(volatile uint32_t *)addr;
46}
47
49{
50 *(volatile uint32_t *)addr = data;
51}
52
53#ifdef __cplusplus
54}
55#endif
56
57#endif /* _ASMLANGUAGE */
58
59#endif /* ZEPHYR_INCLUDE_ARCH_COMMON_SYS_IO_H_ */
static ALWAYS_INLINE void sys_write32(uint32_t data, mem_addr_t addr)
Definition: sys_io.h:48
static ALWAYS_INLINE uint8_t sys_read8(mem_addr_t addr)
Definition: sys_io.h:23
static ALWAYS_INLINE void sys_write16(uint16_t data, mem_addr_t addr)
Definition: sys_io.h:38
static ALWAYS_INLINE uint32_t sys_read32(mem_addr_t addr)
Definition: sys_io.h:43
static ALWAYS_INLINE uint16_t sys_read16(mem_addr_t addr)
Definition: sys_io.h:33
static ALWAYS_INLINE void sys_write8(uint8_t data, mem_addr_t addr)
Definition: sys_io.h:28
#define ALWAYS_INLINE
Definition: common.h:116
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
__UINT16_TYPE__ uint16_t
Definition: stdint.h:59
uintptr_t mem_addr_t
Definition: sys_io.h:21
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
Macros to abstract toolchain specific capabilities.