coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mmio.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __ARCH_MMIO_H__
4 #define __ARCH_MMIO_H__
5 
6 #include <endian.h>
7 #include <stdint.h>
8 
9 static __always_inline uint8_t read8(const volatile void *addr)
10 {
11  return *((volatile uint8_t *)(addr));
12 }
13 
14 static __always_inline uint16_t read16(const volatile void *addr)
15 {
16  return *((volatile uint16_t *)(addr));
17 }
18 
19 static __always_inline uint32_t read32(const volatile void *addr)
20 {
21  return *((volatile uint32_t *)(addr));
22 }
23 
24 static __always_inline uint64_t read64(const volatile void *addr)
25 {
26  return *((volatile uint64_t *)(addr));
27 }
28 
29 static __always_inline void write8(volatile void *addr, uint8_t value)
30 {
31  *((volatile uint8_t *)(addr)) = value;
32 }
33 
34 static __always_inline void write16(volatile void *addr, uint16_t value)
35 {
36  *((volatile uint16_t *)(addr)) = value;
37 }
38 
39 static __always_inline void write32(volatile void *addr, uint32_t value)
40 {
41  *((volatile uint32_t *)(addr)) = value;
42 }
43 
44 static __always_inline void write64(volatile void *addr, uint64_t value)
45 {
46  *((volatile uint64_t *)(addr)) = value;
47 }
48 
49 #endif /* __ARCH_MMIO_H__ */
pte_t value
Definition: mmu.c:91
void write64(void *addr, uint64_t val)
uint64_t read64(const void *addr)
static __always_inline void write8(volatile void *addr, uint8_t value)
Definition: mmio.h:29
static __always_inline void write32(volatile void *addr, uint32_t value)
Definition: mmio.h:39
static __always_inline uint32_t read32(const volatile void *addr)
Definition: mmio.h:19
static __always_inline uint16_t read16(const volatile void *addr)
Definition: mmio.h:14
static __always_inline void write16(volatile void *addr, uint16_t value)
Definition: mmio.h:34
static __always_inline uint8_t read8(const volatile void *addr)
Definition: mmio.h:9
static u32 addr
Definition: cirrus.c:14
#define __always_inline
Definition: compiler.h:35
unsigned short uint16_t
Definition: stdint.h:11
unsigned int uint32_t
Definition: stdint.h:14
unsigned long long uint64_t
Definition: stdint.h:17
unsigned char uint8_t
Definition: stdint.h:8