Skip to content

Commit af0e41e

Browse files
committed
Add registers::debug
1 parent a9cbf14 commit af0e41e

File tree

4 files changed

+661
-0
lines changed

4 files changed

+661
-0
lines changed

src/asm/asm.s

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,72 @@ _x86_64_asm_write_cr4:
257257
movq %rdi, %cr4
258258
retq
259259

260+
.global _x86_64_asm_read_dr0
261+
.p2align 4
262+
_x86_64_asm_read_dr0:
263+
movq %dr0, %rax
264+
retq
265+
266+
.global _x86_64_asm_read_dr1
267+
.p2align 4
268+
_x86_64_asm_read_dr1:
269+
movq %dr1, %rax
270+
retq
271+
272+
.global _x86_64_asm_read_dr2
273+
.p2align 4
274+
_x86_64_asm_read_dr2:
275+
movq %dr2, %rax
276+
retq
277+
278+
.global _x86_64_asm_read_dr3
279+
.p2align 4
280+
_x86_64_asm_read_dr3:
281+
movq %dr3, %rax
282+
retq
283+
284+
.global _x86_64_asm_read_dr6
285+
.p2align 4
286+
_x86_64_asm_read_dr6:
287+
movq %dr6, %rax
288+
retq
289+
290+
.global _x86_64_asm_read_dr7
291+
.p2align 4
292+
_x86_64_asm_read_dr7:
293+
movq %dr7, %rax
294+
retq
295+
296+
.global _x86_64_asm_write_dr0
297+
.p2align 4
298+
_x86_64_asm_write_dr0:
299+
movq %rdi, %dr0
300+
retq
301+
302+
.global _x86_64_asm_write_dr1
303+
.p2align 4
304+
_x86_64_asm_write_dr1:
305+
movq %rdi, %dr1
306+
retq
307+
308+
.global _x86_64_asm_write_dr2
309+
.p2align 4
310+
_x86_64_asm_write_dr2:
311+
movq %rdi, %dr2
312+
retq
313+
314+
.global _x86_64_asm_write_dr3
315+
.p2align 4
316+
_x86_64_asm_write_dr3:
317+
movq %rdi, %dr3
318+
retq
319+
320+
.global _x86_64_asm_write_dr7
321+
.p2align 4
322+
_x86_64_asm_write_dr7:
323+
movq %rdi, %dr7
324+
retq
325+
260326
.global _x86_64_asm_rdmsr
261327
.p2align 4
262328
_x86_64_asm_rdmsr:

src/asm/mod.rs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,72 @@ extern "sysv64" {
240240
)]
241241
pub(crate) fn x86_64_asm_write_cr4(value: u64);
242242

243+
#[cfg_attr(
244+
any(target_env = "gnu", target_env = "musl"),
245+
link_name = "_x86_64_asm_read_dr0"
246+
)]
247+
pub(crate) fn x86_64_asm_read_dr0() -> u64;
248+
249+
#[cfg_attr(
250+
any(target_env = "gnu", target_env = "musl"),
251+
link_name = "_x86_64_asm_write_dr0"
252+
)]
253+
pub(crate) fn x86_64_asm_write_dr0(value: u64);
254+
255+
#[cfg_attr(
256+
any(target_env = "gnu", target_env = "musl"),
257+
link_name = "_x86_64_asm_read_dr1"
258+
)]
259+
pub(crate) fn x86_64_asm_read_dr1() -> u64;
260+
261+
#[cfg_attr(
262+
any(target_env = "gnu", target_env = "musl"),
263+
link_name = "_x86_64_asm_write_dr1"
264+
)]
265+
pub(crate) fn x86_64_asm_write_dr1(value: u64);
266+
267+
#[cfg_attr(
268+
any(target_env = "gnu", target_env = "musl"),
269+
link_name = "_x86_64_asm_read_dr2"
270+
)]
271+
pub(crate) fn x86_64_asm_read_dr2() -> u64;
272+
273+
#[cfg_attr(
274+
any(target_env = "gnu", target_env = "musl"),
275+
link_name = "_x86_64_asm_write_dr2"
276+
)]
277+
pub(crate) fn x86_64_asm_write_dr2(value: u64);
278+
279+
#[cfg_attr(
280+
any(target_env = "gnu", target_env = "musl"),
281+
link_name = "_x86_64_asm_read_dr3"
282+
)]
283+
pub(crate) fn x86_64_asm_read_dr3() -> u64;
284+
285+
#[cfg_attr(
286+
any(target_env = "gnu", target_env = "musl"),
287+
link_name = "_x86_64_asm_write_dr3"
288+
)]
289+
pub(crate) fn x86_64_asm_write_dr3(value: u64);
290+
291+
#[cfg_attr(
292+
any(target_env = "gnu", target_env = "musl"),
293+
link_name = "_x86_64_asm_read_dr6"
294+
)]
295+
pub(crate) fn x86_64_asm_read_dr6() -> u64;
296+
297+
#[cfg_attr(
298+
any(target_env = "gnu", target_env = "musl"),
299+
link_name = "_x86_64_asm_read_dr7"
300+
)]
301+
pub(crate) fn x86_64_asm_read_dr7() -> u64;
302+
303+
#[cfg_attr(
304+
any(target_env = "gnu", target_env = "musl"),
305+
link_name = "_x86_64_asm_write_dr7"
306+
)]
307+
pub(crate) fn x86_64_asm_write_dr7(value: u64);
308+
243309
#[cfg_attr(
244310
any(target_env = "gnu", target_env = "musl"),
245311
link_name = "_x86_64_asm_rdmsr"

0 commit comments

Comments
 (0)