guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 01/05: Add breakpoint instruction


From: Andy Wingo
Subject: [Guile-commits] 01/05: Add breakpoint instruction
Date: Mon, 27 May 2019 13:06:09 -0400 (EDT)

wingo pushed a commit to branch master
in repository guile.

commit 84b9ef087b49e0685848826156baaed02655efb4
Author: Andy Wingo <address@hidden>
Date:   Mon May 27 18:29:26 2019 +0200

    Add breakpoint instruction
---
 lightening.h             |  2 ++
 lightening/aarch64-cpu.c | 13 +++++++++++++
 lightening/arm-cpu.c     | 13 +++++++++++++
 lightening/x86-cpu.c     |  6 ++++++
 4 files changed, 34 insertions(+)

diff --git a/lightening.h b/lightening.h
index d9e8e1f..7fd96f2 100644
--- a/lightening.h
+++ b/lightening.h
@@ -600,6 +600,8 @@ jit_load_args_3(jit_state_t *_jit, jit_operand_t a, 
jit_operand_t b,
           M(_F___, retval_f)           \
           M(_F___, retval_d)           \
                                        \
+          M(_____, breakpoint)         \
+                                       \
           M(_FF__, negr_f)             \
           M(_FF__, negr_d)             \
           M(_FF__, absr_f)             \
diff --git a/lightening/aarch64-cpu.c b/lightening/aarch64-cpu.c
index 39ca06a..e99c696 100644
--- a/lightening/aarch64-cpu.c
+++ b/lightening/aarch64-cpu.c
@@ -273,6 +273,7 @@ oxxrs(jit_state_t *_jit, int32_t Op,
 #define A64_MOVN                      0x12800000
 #define A64_MOVZ                      0x52800000
 #define A64_MOVK                      0x72800000
+#define A64_BRK                       0xd4200000
 
 static void
 SBFM(jit_state_t *_jit, int32_t Rd, int32_t Rn, int32_t ImmR, int32_t ImmS) 
@@ -926,6 +927,12 @@ NOP(jit_state_t *_jit)
   return emit_u32_with_pool(_jit, 0xd503201f);
 }
 
+static void
+BRK(jit_state_t *_jit)
+{
+  emit_u32_with_pool(_jit, A64_BRK);
+}
+
 static jit_reloc_t
 movi_from_pool(jit_state_t *_jit, int32_t Rt)
 {
@@ -2540,3 +2547,9 @@ cas_atomic(jit_state_t *_jit, int32_t dst, int32_t loc, 
int32_t expected,
   movr(_jit, dst, dst_or_tmp);
   unget_temp_gpr(_jit);
 }
+
+static void
+breakpoint(jit_state_t *_jit)
+{
+  BRK(_jit);
+}
diff --git a/lightening/arm-cpu.c b/lightening/arm-cpu.c
index b4e1660..a280ca1 100644
--- a/lightening/arm-cpu.c
+++ b/lightening/arm-cpu.c
@@ -182,6 +182,7 @@
 #define THUMB_DMB                     0xf3bf8f50
 #define THUMB_LDREX                   0xe8500f00
 #define THUMB_STREX                   0xe8400000
+#define THUMB_BRK                         0xbe00
 
 #define _NOREG (jit_gpr_regno(_PC))
 
@@ -1342,6 +1343,12 @@ T2_STRIN(jit_state_t *_jit, int32_t rt, int32_t rn, 
int32_t im)
 }
 
 static void
+T1_BRK(jit_state_t *_jit)
+{
+  emit_u16_with_pool(_jit, THUMB_BRK);
+}
+
+static void
 nop(jit_state_t *_jit, int32_t i0)
 {
   for (; i0 > 0; i0 -= 2)
@@ -3053,3 +3060,9 @@ cas_atomic(jit_state_t *_jit, int32_t dst, int32_t loc, 
int32_t expected,
   movr(_jit, dst, dst_or_tmp);
   unget_temp_gpr(_jit);
 }
+
+static void
+breakpoint(jit_state_t *_jit)
+{
+  T1_BRK(_jit);
+}
diff --git a/lightening/x86-cpu.c b/lightening/x86-cpu.c
index 28ec738..aa2bbdd 100644
--- a/lightening/x86-cpu.c
+++ b/lightening/x86-cpu.c
@@ -2753,3 +2753,9 @@ cas_atomic(jit_state_t *_jit, int32_t dst, int32_t loc, 
int32_t expected,
     unget_temp_gpr(_jit);
   }
 }
+
+static void
+breakpoint(jit_state_t *_jit)
+{
+  ic(_jit, 0xcc);
+}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]