GDB (xrefs)
Loading...
Searching...
No Matches
gdb
amd64-ravenscar-thread.c
Go to the documentation of this file.
1
/* Ravenscar x86-64 target support.
2
3
Copyright (C) 2020-2023 Free Software Foundation, Inc.
4
5
This file is part of GDB.
6
7
This program is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 3 of the License, or
10
(at your option) any later version.
11
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20
#include "
defs.h
"
21
#include "
gdbarch.h
"
22
#include "
gdbcore.h
"
23
#include "
regcache.h
"
24
#include "
amd64-tdep.h
"
25
#include "
inferior.h
"
26
#include "
ravenscar-thread.h
"
27
#include "
amd64-ravenscar-thread.h
"
28
29
/* x86-64 Ravenscar stores registers as:
30
31
type Context_Buffer is record
32
RIP : System.Address;
33
RFLAGS : EFLAGS;
34
RSP : System.Address;
35
36
RBX : System.Address;
37
RBP : System.Address;
38
R12 : System.Address;
39
R13 : System.Address;
40
R14 : System.Address;
41
R15 : System.Address;
42
end record;
43
*/
44
static
const
int
register_layout
[] =
45
{
46
/* RAX */
-1,
47
/* RBX */
3 * 8,
48
/* RCX */
-1,
49
/* RDX */
-1,
50
/* RSI */
-1,
51
/* RDI */
-1,
52
/* RBP */
4 * 8,
53
/* RSP */
2 * 8,
54
/* R8 */
-1,
55
/* R9 */
-1,
56
/* R10 */
-1,
57
/* R11 */
-1,
58
/* R12 */
5 * 8,
59
/* R13 */
6 * 8,
60
/* R14 */
7 * 8,
61
/* R15 */
8 * 8,
62
/* RIP */
0 * 8,
63
/* EFLAGS */
1 * 8,
64
};
65
66
/* The ravenscar_arch_ops vector for AMD64 targets. */
67
68
static
struct
ravenscar_arch_ops
amd64_ravenscar_ops
(
register_layout
);
69
70
/* Register amd64_ravenscar_ops in GDBARCH. */
71
72
void
73
register_amd64_ravenscar_ops
(
struct
gdbarch
*
gdbarch
)
74
{
75
set_gdbarch_ravenscar_ops
(
gdbarch
, &
amd64_ravenscar_ops
);
76
}
amd64_ravenscar_ops
static struct ravenscar_arch_ops amd64_ravenscar_ops(register_layout)
register_amd64_ravenscar_ops
void register_amd64_ravenscar_ops(struct gdbarch *gdbarch)
Definition
amd64-ravenscar-thread.c:73
register_layout
static const int register_layout[]
Definition
amd64-ravenscar-thread.c:44
amd64-ravenscar-thread.h
amd64-tdep.h
defs.h
set_gdbarch_ravenscar_ops
void set_gdbarch_ravenscar_ops(struct gdbarch *gdbarch, struct ravenscar_arch_ops *ravenscar_ops)
Definition
gdbarch.c:5099
gdbarch.h
gdbcore.h
inferior.h
gdbarch
Definition
gdbarch.py:1
ravenscar-thread.h
regcache.h
ravenscar_arch_ops
Definition
ravenscar-thread.h:26
Generated by
1.10.0