Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@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