You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/07/22 03:43:08 UTC

[incubator-nuttx] branch master updated: tools: Add armv7-a support to nuttx-gdbinit

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 757c0cb  tools: Add armv7-a support to nuttx-gdbinit
757c0cb is described below

commit 757c0cbf813e2bcc07bc20e2f3bb007587af74b7
Author: Masayuki Ishikawa <ma...@gmail.com>
AuthorDate: Thu Jul 22 07:28:49 2021 +0900

    tools: Add armv7-a support to nuttx-gdbinit
    
    Summary:
    - This commit adds armv7-a support to nuttx-gdbinit
    
    Impact:
    - None
    
    Testing:
    - Tested sabre-6quad:smp with QEMU
    
    Signed-off-by: Masayuki Ishikawa <Ma...@jp.sony.com>
---
 tools/nuttx-gdbinit | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 61 insertions(+), 1 deletion(-)

diff --git a/tools/nuttx-gdbinit b/tools/nuttx-gdbinit
index c7b4f3f..2875fa0 100644
--- a/tools/nuttx-gdbinit
+++ b/tools/nuttx-gdbinit
@@ -35,10 +35,13 @@ define _examine_arch
   python if (_target_arch.name() == 'armv7e-m') : \
   gdb.execute("set $_target_arch = \"armv7e-m\"")
 
-  # TODO: qemu (need to distinguish cortex-m and cortex-a)
   python if (_target_arch.name() == 'armv7') : \
   gdb.execute("set $_target_arch = \"armv7e-m\"")
 
+  # TODO: need more smart way to detect armv7-a
+  python if (type(gdb.lookup_global_symbol("arm_gic_initialize")) is gdb.Symbol) : \
+  gdb.execute("set $_target_arch = \"armv7-a\"")
+
   python if (_target_arch.name() == 'i386:x86-64') : \
   gdb.execute("set $_target_arch = \"i386:x86-64\"")
 
@@ -61,6 +64,12 @@ define _examine_target
       end
     end
 
+    if ($_streq($_target_arch, "armv7-a") == 1)
+      if ($_xcp_nregs != 17)
+        set $_target_has_fpu = 1
+      end
+    end
+
     python gdb.execute("set $_target_has_smp = 0")
     python if (type(gdb.lookup_global_symbol("g_assignedtasks")) is gdb.Symbol) : \
     gdb.execute("set $_target_has_smp = 1")
@@ -108,6 +117,9 @@ define _save_tcb
   _examine_target
 
   set $tcb = $arg0
+  if ($_streq($_target_arch, "armv7-a") == 1)
+    _save_tcb_armv7-a $tcb
+  end
   if ($_streq($_target_arch, "armv7e-m") == 1)
     if ($_target_has_fpu == 0)
       _save_tcb_armv7e-m $tcb
@@ -149,6 +161,9 @@ define _switch_tcb
   gdb.newest_frame().select()
 
   set $tcb = $arg0
+  if ($_streq($_target_arch, "armv7-a") == 1)
+    _switch_tcb_armv7-a $tcb
+  end
   if ($_streq($_target_arch, "armv7e-m") == 1)
     if ($_target_has_fpu == 0)
       _switch_tcb_armv7e-m $tcb
@@ -167,6 +182,51 @@ define _switch_tcb
   set $_current_tcb = $tcb
 end
 
+# see nuttx/arch/arm/include/armv7-a/irq.h
+define _save_tcb_armv7-a
+  set $tcb = (struct tcb_s *)$arg0
+  set $tcb.xcp.regs[0] = $r0
+  set $tcb.xcp.regs[1] = $r1
+  set $tcb.xcp.regs[2] = $r2
+  set $tcb.xcp.regs[3] = $r3
+  set $tcb.xcp.regs[4] = $r4
+  set $tcb.xcp.regs[5] = $r5
+  set $tcb.xcp.regs[6] = $r6
+  set $tcb.xcp.regs[7] = $r7
+  set $tcb.xcp.regs[8] = $r8
+  set $tcb.xcp.regs[9] = $r9
+  set $tcb.xcp.regs[10] = $r10
+  set $tcb.xcp.regs[11] = $r11
+  set $tcb.xcp.regs[12] = $r12
+  set $tcb.xcp.regs[13] = $r13
+  set $tcb.xcp.regs[14] = $r14
+  set $tcb.xcp.regs[15] = $r15
+  # TODO: xPSR
+
+  set $_pc_reg_idx = 15
+end
+
+define _switch_tcb_armv7-a
+  set $tcb = (struct tcb_s *)$arg0
+  set $r0 = $tcb.xcp.regs[0]
+  set $r1 = $tcb.xcp.regs[1]
+  set $r2 = $tcb.xcp.regs[2]
+  set $r3 = $tcb.xcp.regs[3]
+  set $r4 = $tcb.xcp.regs[4]
+  set $r5 = $tcb.xcp.regs[5]
+  set $r6 = $tcb.xcp.regs[6]
+  set $r7 = $tcb.xcp.regs[7]
+  set $r8 = $tcb.xcp.regs[8]
+  set $r9 = $tcb.xcp.regs[9]
+  set $r10 = $tcb.xcp.regs[10]
+  set $r11 = $tcb.xcp.regs[11]
+  set $r12 = $tcb.xcp.regs[12]
+  set $r13 = $tcb.xcp.regs[13]
+  set $r14 = $tcb.xcp.regs[14]
+  set $r15 = $tcb.xcp.regs[15]
+  # TODO: xPSR
+end
+
 # see nuttx/arch/arm/include/armv7-m/irq_cmnvector.h
 define _save_tcb_armv7e-m
   set $tcb = (struct tcb_s *)$arg0