Signed-off-by: Manos Pitsidianakis <manos.pitsidiana...@linaro.org>
---
 gdb-xml/aarch64-core.xml | 12 ++++++++++++
 target/arm/gdbstub64.c   |  7 +++++++
 2 files changed, 19 insertions(+)

diff --git a/gdb-xml/aarch64-core.xml b/gdb-xml/aarch64-core.xml
index 
2b74b87f908f792c24f76f212e4f7eaf335ddbc2..dffc92303fc7b7e8221cf6afd6009101f34352ed
 100644
--- a/gdb-xml/aarch64-core.xml
+++ b/gdb-xml/aarch64-core.xml
@@ -108,4 +108,16 @@
     <field name="N" start="31" end="31"/>
   </flags>
   <reg name="NZCV" bitsize="64" type="nzcv_flags"/>
+
+  <flags id="daif_flags" size="8">
+    <!-- FIQ interrupt mask.  -->
+    <field name="F" start="6" end="6"/>
+    <!-- IRQ interrupt mask.  -->
+    <field name="I" start="7" end="7"/>
+    <!-- SError interrupt mask.  -->
+    <field name="A" start="8" end="8"/>
+    <!-- Debug exception mask.  -->
+    <field name="D" start="9" end="9"/>
+  </flags>
+  <reg name="DAIF" bitsize="64" type="daif_flags"/>
 </feature>
diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c
index 
dd3c6222a577efa03753cf07371afdedeefdb771..6c424ed361e32e12836c6ef00a06397bd684bac4
 100644
--- a/target/arm/gdbstub64.c
+++ b/target/arm/gdbstub64.c
@@ -54,6 +54,9 @@ int aarch64_cpu_gdb_read_register(CPUState *cs, GByteArray 
*mem_buf, int n)
     case 35:
         /* NZCV */
         return gdb_get_reg64(mem_buf, pstate_read(env) & PSTATE_NZCV);
+    case 36:
+        /* DAIF */
+        return gdb_get_reg64(mem_buf, env->daif);
     }
     /* Unknown register.  */
     return 0;
@@ -91,6 +94,10 @@ int aarch64_cpu_gdb_write_register(CPUState *cs, uint8_t 
*mem_buf, int n)
         tmp = (pstate_read(env) & ~PSTATE_NZCV) | (tmp & PSTATE_NZCV);
         pstate_write(env, tmp);
         return 8;
+    case 36:
+        /* DAIF */
+        env->daif = tmp & PSTATE_DAIF;
+        return 8;
     }
     /* Unknown register.  */
     return 0;

-- 
2.47.2


Reply via email to