RV32 SoC DS UG
High-Perf RV32 SoC DS UG
RV64 SoC DS UG API and Examples
Embedded IDE UG
Loading...
Searching...
No Matches
io.h
Go to the documentation of this file.
1
2// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
3// Full license header bsp/efinix/EfxSapphireSocRV64/include/LICENSE.MD
5#ifndef IO_H_
6#define IO_H_
7
8#include "type.h"
9#include "soc.h"
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15 static inline ulen read_ulen(u32 address){
16 return *((volatile ulen*) (uintptr_t) address);
17 }
18
19 static inline void write_ulen(ulen data, u32 address){
20 *((volatile ulen*) (uintptr_t) address) = data;
21 }
22
23 static inline u32 read_u32(u32 address){
24 return *((volatile u32*)(u64) address);
25 }
26
27 static inline void write_u32(u32 data, u32 address){
28 *((volatile u32*)(u64) address) = data;
29 }
30
31 static inline u16 read_u16(u32 address){
32 return *((volatile u16*)(u64) address);
33 }
34
35 static inline void write_u16(u16 data, u32 address){
36 *((volatile u16*)(u64) address) = data;
37 }
38
39 static inline u8 read_u8(u32 address){
40 return *((volatile u8*)(u64) address);
41 }
42
43 static inline void write_u8(u8 data, u32 address){
44 *((volatile u8*)(u64) address) = data;
45 }
46
47 static inline void write_u32_ad(u32 address, u32 data){
48 *((volatile u32*)(u64) address) = data;
49 }
50
51 #define writeReg_u32(name, offset) \
52 static inline void name(u32 reg, u32 value){ \
53 write_u32(value, reg + offset); \
54 } \
55
56 #define readReg_u32(name, offset) \
57 static inline u32 name(u32 reg){ \
58 return read_u32(reg + offset); \
59 } \
60
61#ifdef __cplusplus
62}
63#endif // C_plusplus
64
65#endif //IO_H_
66
67
68
69
70
uint32_t ulen
Definition type.h:21
uint64_t u64
Definition type.h:24
uint8_t u8
Definition type.h:30
uint16_t u16
Definition type.h:28
uint32_t u32
Definition type.h:26