L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
asm_access.h
1/*
2 * Copyright (C) 2021, 2024 Kernkonzept GmbH.
3 * Author(s): Georg Kotheimer <georg.kotheimer@kernkonzept.com>
4 *
5 * License: see LICENSE.spdx (in this directory or the directories above)
6 */
7
8#pragma once
9
10#include <l4/sys/l4int.h>
11
12namespace Asm_access {
13
14inline
16read(l4_uint8_t const *mem)
17{
18 l4_uint8_t val;
19
20 asm volatile ("lb %[val], %[mem]" : [val] "=r" (val) : [mem] "m" (*mem));
21
22 return val;
23}
24
25inline
27read(l4_uint16_t const *mem)
28{
29 l4_uint16_t val;
30
31 asm volatile ("lh %[val], %[mem]" : [val] "=r" (val) : [mem] "m" (*mem));
32
33 return val;
34}
35
36inline
38read(l4_uint32_t const *mem)
39{
40 l4_uint32_t val;
41
42 asm volatile ("lw %[val], %[mem]" : [val] "=r" (val) : [mem] "m" (*mem));
43
44 return val;
45}
46
47inline
48void
49write(l4_uint8_t val, l4_uint8_t *mem)
50{
51 asm volatile ("sb %[val], %[mem]" :[mem] "=m" (*mem) : [val] "r" (val));
52}
53
54inline
55void
56write(l4_uint16_t val, l4_uint16_t *mem)
57{
58 asm volatile ("sh %[val], %[mem]" : [mem] "=m" (*mem) : [val] "r" (val));
59}
60
61inline
62void
63write(l4_uint32_t val, l4_uint32_t *mem)
64{
65 asm volatile ("sw %[val], %[mem]" : [mem] "=m" (*mem) : [val] "r" (val));
66}
67
68#if __riscv_xlen == 64
69
70inline
72read(l4_uint64_t const *mem)
73{
74 l4_uint64_t val;
75
76 asm volatile ("ld %[val], %[mem]" : [val] "=r" (val) : [mem] "m" (*mem));
77
78 return val;
79}
80
81inline
82void
83write(l4_uint64_t val, l4_uint64_t *mem)
84{
85 asm volatile ("sd %[val], %[mem]" : [mem] "=m" (*mem) : [val] "r" (val));
86}
87
88#endif
89
90}
unsigned char l4_uint8_t
Unsigned 8bit value.
Definition l4int.h:25
unsigned int l4_uint32_t
Unsigned 32bit value.
Definition l4int.h:29
unsigned short int l4_uint16_t
Unsigned 16bit value.
Definition l4int.h:27
unsigned long long l4_uint64_t
Unsigned 64bit value.
Definition l4int.h:31
T read(Istream &s)
Read a value out of a stream.
Definition ipc_stream:1289