[coreboot-gerrit] New patch to review for coreboot: 7fb1ca8 libpayload arm64: Add gdb stub for arm64

Marc Jones (marc.jones@se-eng.com) gerrit at coreboot.org
Mon Jan 5 23:37:33 CET 2015


Marc Jones (marc.jones at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8125

-gerrit

commit 7fb1ca843f3c00c3f50cdf43b319b0a8bbced21e
Author: Furquan Shaikh <furquan at google.com>
Date:   Fri Jun 20 00:19:31 2014 -0700

    libpayload arm64: Add gdb stub for arm64
    
    Add stub implementation for gdb arm64 support. Currently all functions are kept
    empty to enable proper compilation of depthcharge and libpayload. As we get more
    clear about context management and stuff, we can add details for gdb as well.
    
    BUG=None
    BRANCH=None
    TEST=Compiles successfully for rush
    
    Original-Change-Id: I0a8729671ab0764d424c0e3d50af86433d05b1e8
    Original-Signed-off-by: Furquan Shaikh <furquan at google.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/204877
    Original-Tested-by: Furquan Shaikh <furquan at chromium.org>
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    Original-Commit-Queue: Furquan Shaikh <furquan at chromium.org>
    (cherry picked from commit d24e5c26b56a9882b3450b1e4988b56c3d73efd1)
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
    
    Change-Id: I9b7d3d7060dd827ef4a46865e0f9a2b4e063d07d
---
 payloads/libpayload/arch/arm64/Makefile.inc |  2 +
 payloads/libpayload/arch/arm64/gdb.c        | 69 +++++++++++++++++++++++++++++
 2 files changed, 71 insertions(+)

diff --git a/payloads/libpayload/arch/arm64/Makefile.inc b/payloads/libpayload/arch/arm64/Makefile.inc
index 7107d0c..bb09b8f 100644
--- a/payloads/libpayload/arch/arm64/Makefile.inc
+++ b/payloads/libpayload/arch/arm64/Makefile.inc
@@ -40,6 +40,8 @@ libc-y += cache.c cpu.S
 libc-y += selfboot.c
 libcbfs-$(CONFIG_LP_CBFS) += dummy_media.c
 
+libgdb-y += gdb.c
+
 # Add other classes here when you put assembly files into them!
  head.o-S-ccopts += $(arm64_asm_flags)
  libc-S-ccopts += $(arm64_asm_flags)
diff --git a/payloads/libpayload/arch/arm64/gdb.c b/payloads/libpayload/arch/arm64/gdb.c
new file mode 100644
index 0000000..857272f
--- /dev/null
+++ b/payloads/libpayload/arch/arm64/gdb.c
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but without any warranty; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <exception.h>
+#include <gdb.h>
+#include <libpayload.h>
+
+struct gdb_regs
+{
+	u64 x[32];
+	struct fp_reg
+	{
+		u64 quad[2];
+	} __attribute__((packed)) f[32];
+	u32 fpcr;
+	u32 fpsr;
+	u32 spsr;
+} __attribute__((packed));
+
+static const u8 type_to_signal[] = {
+	[EXC_INV]    = GDB_SIGILL,
+	[EXC_SYNC]   = GDB_SIGTRAP,
+	[EXC_IRQ]    = GDB_SIGSEGV,
+	[EXC_FIQ]    = GDB_SIGSEGV,
+	[EXC_SERROR] = GDB_SIGSEGV
+};
+
+static int gdb_exception_hook(u32 type)
+{
+	return -1;
+}
+
+void gdb_arch_init(void)
+{
+	exception_install_hook(&gdb_exception_hook);
+}
+
+void gdb_arch_enter(void)
+{
+}
+
+int gdb_arch_set_single_step(int on)
+{
+	/* GDB seems to only need this on x86, ARM works fine without it. */
+	return -1;
+}
+
+void gdb_arch_encode_regs(struct gdb_message *message)
+{
+}
+
+void gdb_arch_decode_regs(int offset, struct gdb_message *message)
+{
+}



More information about the coreboot-gerrit mailing list