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): Jakub Jermar <jakub.jermar@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
12
namespace
Asm_access {
13
14
inline
15
l4_uint8_t
16
read
(
l4_uint8_t
const
*mem)
17
{
18
l4_uint8_t
val;
19
20
asm
volatile
(
"movb %[mem], %[val]"
: [val]
"=q"
(val) : [mem]
"m"
(*mem));
21
22
return
val;
23
}
24
25
inline
26
l4_uint16_t
27
read
(
l4_uint16_t
const
*mem)
28
{
29
l4_uint16_t
val;
30
31
asm
volatile
(
"movw %[mem], %[val]"
: [val]
"=r"
(val) : [mem]
"m"
(*mem));
32
33
return
val;
34
}
35
36
inline
37
l4_uint32_t
38
read
(
l4_uint32_t
const
*mem)
39
{
40
l4_uint32_t
val;
41
42
asm
volatile
(
"movl %[mem], %[val]"
: [val]
"=r"
(val) : [mem]
"m"
(*mem));
43
44
return
val;
45
}
46
47
inline
48
void
49
write(
l4_uint8_t
val,
l4_uint8_t
*mem)
50
{
51
asm
volatile
(
"movb %[val], %[mem]"
:[mem]
"=m"
(*mem) : [val]
"qi"
(val));
52
}
53
54
inline
55
void
56
write(
l4_uint16_t
val,
l4_uint16_t
*mem)
57
{
58
asm
volatile
(
"movw %[val], %[mem]"
: [mem]
"=m"
(*mem) : [val]
"ri"
(val));
59
}
60
61
inline
62
void
63
write(
l4_uint32_t
val,
l4_uint32_t
*mem)
64
{
65
asm
volatile
(
"movl %[val], %[mem]"
: [mem]
"=m"
(*mem) : [val]
"ri"
(val));
66
}
67
68
}
l4_uint8_t
unsigned char l4_uint8_t
Unsigned 8bit value.
Definition
l4int.h:25
l4_uint32_t
unsigned int l4_uint32_t
Unsigned 32bit value.
Definition
l4int.h:29
l4_uint16_t
unsigned short int l4_uint16_t
Unsigned 16bit value.
Definition
l4int.h:27
L4::Ipc::read
T read(Istream &s)
Read a value out of a stream.
Definition
ipc_stream:1289
pkg
drivers-frst
include
ARCH-x86
asm_access.h
Generated on Mon Mar 3 2025 23:08:49 for L4Re Operating System Framework by
1.9.8