Skip to contentSkip to conversation

Pull request buildroot.git (vapier branch)

Buildroot New Mike Frysinger 2 participants 8 messages Feb 7, 2011 Kbuild

lore
Share & tools
lore
#0 lore raw

The following changes since commit 9f31e2ffa005095206824e08f69da75503e998ab:

busybox: 1.18.2 fixes for ping, tar and udhcp (2011-02-06 21:48:53 +0100)

are available in the git repository at:
git://sources.blackfin.uclinux.org/git/users/vapier/buildroot.git vapier

Mike Frysinger (3):
debugging: do not require no stripping
initial support for Blackfin processors
gdb: add support for Blackfin gdbserver

 Config.in                                      |    4 +-
 Makefile                                       |    1 +
 boot/u-boot/Config.in                          |    4 +
 boot/u-boot/u-boot.mk                          |    2 +
 linux/Config.in                                |    2 +-
 linux/linux.mk                                 |    5 +
 target/Config.in.arch                          |   19 ++-
 toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch |  238 ++++++++++++++++++++++++
 toolchain/gdb/Config.in                        |    7 +-
 toolchain/toolchain-common.in                  |    2 +-
 10 files changed, 276 insertions(+), 8 deletions(-)
 create mode 100644 toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch
#1 lore raw

PATCH 1/3 debugging: do not require no stripping

The stripping options operate on the final image and not the intermediate builds, so requiring stripping to be disabled just to enable debugging options doesn't make much sense. Especially when working with gdbserver:
only the host needs the debugging information to be available. The board can run & debug perfectly fine without it.

---
 Config.in |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Config.in +2 -2
index af26bbe..c992c5b 100644
@@ -219,14 +219,14 @@ choice
 
 config BR2_STRIP_strip
 	bool "strip"
-	depends on !BR2_ENABLE_DEBUG && !BR2_ELF2FLT
+	depends on !BR2_ELF2FLT
 	help
 	  strip   is the normal strip command
 
 config BR2_STRIP_sstrip
 	bool "sstrip"
 	select BR2_PACKAGE_SSTRIP_HOST
-	depends on !BR2_ENABLE_DEBUG && !BR2_ELF2FLT
+	depends on !BR2_ELF2FLT
 	help
 	  sstrip  is a strip that discards more than the normal strip
 
Signature · 1 line
1.7.4
#2 lore raw

PATCH 2/3 initial support for Blackfin processors

---
 Makefile                      |    1 +
 boot/u-boot/Config.in         |    4 ++++
 boot/u-boot/u-boot.mk         |    2 ++
 linux/Config.in               |    2 +-
 linux/linux.mk                |    5 +++++
 target/Config.in.arch         |   19 ++++++++++++++++++-
 toolchain/toolchain-common.in |    2 +-
 7 files changed, 32 insertions(+), 3 deletions(-)
Makefile +1 -0
index 914d2ed..be4c078 100644
@@ -263,6 +263,7 @@ endif
 KERNEL_ARCH:=$(shell echo "$(ARCH)" | sed -e "s/-.*//" \
 	-e s/i.86/i386/ -e s/sun4u/sparc64/ \
 	-e s/arm.*/arm/ -e s/sa110/arm/ \
+	-e s/bfin/blackfin/ \
 	-e s/parisc64/parisc/ \
 	-e s/powerpc64/powerpc/ \
 	-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
boot/u-boot/Config.in +4 -0
index 60aeb1a..78c03ff 100644
@@ -75,6 +75,10 @@ config BR2_TARGET_UBOOT_FORMAT_KWB
 	depends on BR2_arm
 	bool "u-boot.kwb (Marvell)"
 
+config BR2_TARGET_UBOOT_FORMAT_LDR
+	depends on BR2_bfin
+	bool "u-boot.ldr"
+
 endchoice
 
 config BR2_TARGET_UBOOT_TOOL_MKIMAGE
boot/u-boot/u-boot.mk +2 -0
index 2f890fa..bd26f52 100644
@@ -31,6 +31,8 @@ U_BOOT_CAT:=$(BZCAT)
 ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
 U_BOOT_BIN:=u-boot.kwb
 U_BOOT_MAKE_OPT:=$(U_BOOT_BIN)
+else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
+U_BOOT_BIN:=u-boot.ldr
 else
 U_BOOT_BIN:=u-boot.bin
 endif
linux/Config.in +1 -1
index 17aa29a..bdb1abe 100644
@@ -115,7 +115,7 @@ choice
 
 config BR2_LINUX_KERNEL_UIMAGE
 	bool "uImage"
-	depends on BR2_arm || BR2_armeb || BR2_powerpc || BR2_avr32 || BR2_sh || BR2_sh64
+	depends on BR2_arm || BR2_armeb || BR2_bfin || BR2_powerpc || BR2_avr32 || BR2_sh || BR2_sh64
 
 config BR2_LINUX_KERNEL_BZIMAGE
 	bool "bzImage"
linux/linux.mk +5 -0
index 2bc2efe..0e9c92a 100644
@@ -31,7 +31,12 @@ LINUX26_MAKE_FLAGS = \
 LINUX26_VERSION_PROBED = $(shell $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) --no-print-directory -s kernelrelease)
 
 ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y)
+ifeq ($(KERNEL_ARCH),blackfin)
+# a uImage, but with a diff file name
+LINUX26_IMAGE_NAME=vmImage
+else
 LINUX26_IMAGE_NAME=uImage
+endif
 LINUX26_DEPENDENCIES+=$(MKIMAGE)
 else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y)
 LINUX26_IMAGE_NAME=bzImage
target/Config.in.arch +18 -1
index 0774d55..7c80945 100644
@@ -14,6 +14,8 @@ config BR2_armeb
 config BR2_avr32
 	bool "avr32"
 	select BR2_SOFT_FLOAT
+config BR2_bfin
+	bool "bfin"
 config BR2_i386
 	bool "i386"
 config BR2_m68k
@@ -128,6 +130,20 @@ config BR2_ARM_OABI
 endchoice
 
 choice
+	prompt "Target ABI"
+	depends on BR2_bfin
+	default BR2_BFIN_FLAT
+config BR2_BFIN_FDPIC
+	bool "FDPIC"
+config BR2_BFIN_FLAT
+	bool "FLAT"
+config BR2_BFIN_FLAT_SEP_DATA
+	bool "FLAT (Separate data)"
+config BR2_BFIN_SHARED_FLAT
+	bool "Shared FLAT"
+endchoice
+
+choice
 	prompt "Target Architecture Variant"
 	depends on BR2_mips || BR2_mipsel
 	default BR2_mips_3 if BR2_mips
@@ -444,6 +460,7 @@ config BR2_ARCH
 	default "arm"		if BR2_arm
 	default "armeb"		if BR2_armeb
 	default "avr32"		if BR2_avr32
+	default "bfin"		if BR2_bfin
 	default "i386"		if BR2_x86_i386
 	default "i486"		if BR2_x86_i486
 	default "i586"		if BR2_x86_i586
@@ -485,7 +502,7 @@ config BR2_ARCH
 
 config BR2_ENDIAN
 	string
-	default "LITTLE" if BR2_arm || BR2_i386 || BR2_mipsel || \
+	default "LITTLE" if BR2_arm || BR2_bfin || BR2_i386 || BR2_mipsel || \
 			    BR2_sh3 || BR2_sh4 || BR2_x86_64 || BR2_sh64
 	default "BIG"    if BR2_armeb || BR2_avr32 || BR2_m68k || BR2_mips || \
 			    BR2_powerpc || BR2_sh2a_nofpueb || BR2_sh2eb || \
toolchain/toolchain-common.in +1 -1
index eb3628a..cdfd56a 100644
@@ -67,7 +67,7 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE
 	default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)
 
 config BR2_USE_MMU
-	bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa
+	bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_bfin || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa
 	default y
 	help
 	  If your target has a MMU, you should say Y here.  If you
Signature · 1 line
1.7.4
#3 lore raw

PATCH 2/3 initial support for Blackfin processors

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Mike" == Mike Frysinger <[email protected]> writes:

Hi,

Mike> +++ b/toolchain/toolchain-common.in
Mike> @@ -67,7 +67,7 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE
Mike> default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)

Mike> config BR2_USE_MMU

 Mike> -	bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa
 Mike> +	bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_bfin || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa

Mike> default y

Bfin doesn't have MMU, right? So enabling USE_MMU doesn't make sense. I've changed it to be 'default y if !BR2_bfin' - Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#4 lore raw

PATCH 2/3 initial support for Blackfin processors

Quoted 5 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Mike" == Mike Frysinger <[email protected]> writes:

?Mike> +++ b/toolchain/toolchain-common.in
?Mike> @@ -67,7 +67,7 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE ?Mike> ? ? ? ? ?default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)

Quoted 7 lines

?Mike> ?config BR2_USE_MMU

?Mike> - ? ? ? ?bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa
?Mike> + ? ? ? ?bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_bfin || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa

?Mike> ? ? ? ? ?default y

Bfin doesn't have MMU, right? So enabling USE_MMU doesn't make sense. I've changed it to be 'default y if !BR2_bfin' - Committed, thanks.

thanks ... that obviousness obviously didnt occur to me :) -mike

#5 lore raw

PATCH 3/3 gdb: add support for Blackfin gdbserver

In reply to Mike Frysinger

This requires removing "deprecated" markings from gdb-6.6, but this isn't that big of a deal. That is the last version with Blackfin support at the moment and we're in the process of getting mainlined.

---
 toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch |  238 ++++++++++++++++++++++++
 toolchain/gdb/Config.in                        |    7 +-
 2 files changed, 242 insertions(+), 3 deletions(-)
 create mode 100644 toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch
toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch new file +238 -0
new file mode 100644
index 0000000..65c4b90
@@ -0,0 +1,238 @@
+--- gdb-6.6/gdb/gdbserver/configure.srv
++++ gdb-6.6/gdb/gdbserver/configure.srv
+@@ -23,6 +23,11 @@ case "${target}" in
+ 			srv_linux_usrregs=yes
+ 			srv_linux_thread_db=yes
+ 			;;
++  bfin-*-*)		srv_regobj=reg-bfin.o
++			srv_tgtobj="linux-low.o linux-bfin-low.o"
++			srv_linux_usrregs=yes
++			srv_linux_thread_db=yes
++			;;
+   crisv32-*-linux*)	srv_regobj=reg-crisv32.o
+ 			srv_tgtobj="linux-low.o linux-crisv32-low.o"
+ 			srv_linux_regsets=yes
+--- gdb-6.6/gdb/gdbserver/linux-bfin-low.c
++++ gdb-6.6/gdb/gdbserver/linux-bfin-low.c
+@@ -0,0 +1,101 @@
++/* GNU/Linux/BFIN specific low level interface, for the remote server for GDB.
++
++   Copyright (C) 2005 Free Software Foundation, Inc.
++   Contributed by Analog Devices.
++
++   This file is part of GDB.
++
++   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 Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++#include "server.h"
++#include "linux-low.h"
++#include <asm/ptrace.h>
++ 
++static int bfin_regmap[] =
++{
++  PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5, PT_R6, PT_R7,
++  PT_P0, PT_P1, PT_P2, PT_P3, PT_P4, PT_P5, PT_USP, PT_FP,
++  PT_I0, PT_I1, PT_I2, PT_I3, PT_M0, PT_M1, PT_M2, PT_M3,
++  PT_B0, PT_B1, PT_B2, PT_B3, PT_L0, PT_L1, PT_L2, PT_L3,
++  PT_A0X, PT_A0W, PT_A1X, PT_A1W, PT_ASTAT, PT_RETS,
++  PT_LC0, PT_LT0, PT_LB0, PT_LC1, PT_LT1, PT_LB1,
++  -1 /* PT_CYCLES */, -1 /* PT_CYCLES2 */,
++  -1 /* PT_USP */, PT_SEQSTAT, PT_SYSCFG, PT_PC, PT_RETX, PT_RETN, PT_RETE,
++  PT_PC, -1 /* PT_CC */, PT_TEXT_ADDR, PT_TEXT_END_ADDR, PT_DATA_ADDR,
++  PT_FDPIC_EXEC, PT_FDPIC_INTERP,
++  PT_IPEND
++};
++
++#define bfin_num_regs  (sizeof(bfin_regmap) / sizeof(bfin_regmap[0]))
++
++static int
++bfin_cannot_store_register (int regno)
++{
++  return (regno >= bfin_num_regs);
++}
++
++static int
++bfin_cannot_fetch_register (int regno)
++{
++  return (regno >= bfin_num_regs);
++}
++
++static CORE_ADDR
++bfin_get_pc ()
++{
++  unsigned long pc;
++  collect_register_by_name ("pc", &pc);
++  return pc;
++}
++
++static void
++bfin_set_pc (CORE_ADDR pc)
++{
++  unsigned long newpc = pc;
++  supply_register_by_name ("pc", &newpc);
++}
++
++#define bfin_breakpoint_len 2
++static const unsigned char bfin_breakpoint[bfin_breakpoint_len]={0xa1, 0x00};
++
++static int
++bfin_breakpoint_at (CORE_ADDR where)
++{
++  unsigned char insn[bfin_breakpoint_len];
++
++  read_inferior_memory(where, insn, bfin_breakpoint_len);
++  if (insn[0] == bfin_breakpoint[0]
++      && insn[1] == bfin_breakpoint[1])
++    return 1;
++
++  /* If necessary, recognize more trap instructions here.  GDB only uses the
++     one.  */
++  return 0;
++}
++
++struct linux_target_ops the_low_target = {
++  bfin_num_regs,
++  bfin_regmap,
++  bfin_cannot_fetch_register,
++  bfin_cannot_store_register,
++  bfin_get_pc,
++  bfin_set_pc,
++  bfin_breakpoint,
++  bfin_breakpoint_len,
++  0,
++  2,
++  bfin_breakpoint_at,
++};
+--- gdb-6.6/gdb/gdbserver/linux-low.c
++++ gdb-6.6/gdb/gdbserver/linux-low.c
+@@ -1592,6 +1592,10 @@ linux_stopped_data_address (void)
+ #define PT_TEXT_ADDR 49*4
+ #define PT_DATA_ADDR 50*4
+ #define PT_TEXT_END_ADDR  51*4
++#elif defined(BFIN)
++#define PT_TEXT_ADDR 220
++#define PT_TEXT_END_ADDR 224
++#define PT_DATA_ADDR 228
+ #endif
+ 
+ /* Under uClinux, programs are loaded at non-zero offsets, which we need
+--- gdb-6.6/gdb/gdbserver/Makefile.in
++++ gdb-6.6/gdb/gdbserver/Makefile.in
+@@ -119,9 +119,9 @@ SFILES=	$(srcdir)/gdbreplay.c $(srcdir)/
+ 	$(srcdir)/mem-break.c $(srcdir)/proc-service.c $(srcdir)/regcache.c \
+ 	$(srcdir)/remote-utils.c $(srcdir)/server.c $(srcdir)/target.c \
+ 	$(srcdir)/thread-db.c $(srcdir)/utils.c \
+-	$(srcdir)/linux-arm-low.c $(srcdir)/linux-cris-low.c \
+-	$(srcdir)/linux-crisv32-low.c $(srcdir)/linux-i386-low.c \
+-	$(srcdir)/i387-fp.c \
++	$(srcdir)/linux-arm-low.c $(srcdir)/linux-bfin-low.c \
++	$(srcdir)/linux-cris-low.c $(srcdir)/linux-crisv32-low.c \
++	$(srcdir)/linux-i386-low.c $(srcdir)/i387-fp.c \
+ 	$(srcdir)/linux-ia64-low.c $(srcdir)/linux-low.c \
+ 	$(srcdir)/linux-m32r-low.c \
+ 	$(srcdir)/linux-m68k-low.c $(srcdir)/linux-mips-low.c \
+@@ -207,6 +207,7 @@ clean:
+ 	rm -f reg-arm.c reg-i386.c reg-ia64.c reg-m32r.c reg-m68k.c reg-mips.c
+ 	rm -f reg-ppc.c reg-sh.c reg-spu.c reg-x86-64.c reg-i386-linux.c
+ 	rm -f reg-cris.c reg-crisv32.c reg-x86-64-linux.c
++	rm -f reg-bfin.c
+ 
+ maintainer-clean realclean distclean: clean
+ 	rm -f nm.h tm.h xm.h config.status config.h stamp-h config.log
+@@ -272,6 +273,7 @@ linux-low.o: linux-low.c $(linux_low_h) 
+ 
+ linux-arm-low.o: linux-arm-low.c $(linux_low_h) $(server_h) \
+ 	$(gdb_proc_service_h)
++linux-bfin-low.o: linux-bfin-low.c $(linux_low_h) $(server_h)
+ linux-cris-low.o: linux-cris-low.c $(linux_low_h) $(server_h)
+ linux-crisv32-low.o: linux-crisv32-low.c $(linux_low_h) $(server_h)
+ linux-i386-low.o: linux-i386-low.c $(linux_low_h) $(server_h) \
+@@ -294,6 +297,9 @@ spu-low.o: spu-low.c $(server_h)
+ reg-arm.o : reg-arm.c $(regdef_h)
+ reg-arm.c : $(srcdir)/../regformats/reg-arm.dat $(regdat_sh)
+ 	sh $(regdat_sh) $(srcdir)/../regformats/reg-arm.dat reg-arm.c
++reg-bfin.o : reg-bfin.c $(regdef_h)
++reg-bfin.c : $(srcdir)/../regformats/reg-bfin.dat $(regdat_sh)
++	sh $(regdat_sh) $(srcdir)/../regformats/reg-bfin.dat reg-bfin.c
+ reg-cris.o : reg-cris.c $(regdef_h)
+ reg-cris.c : $(srcdir)/../regformats/reg-cris.dat $(regdat_sh)
+ 	sh $(regdat_sh) $(srcdir)/../regformats/reg-cris.dat reg-cris.c
+--- gdb-6.6/gdb/regformats/reg-bfin.dat
++++ gdb-6.6/gdb/regformats/reg-bfin.dat
+@@ -0,0 +1,63 @@
++name:bfin
++expedite:pc,sp,fp
++32:r0
++32:r1
++32:r2
++32:r3
++32:r4
++32:r5
++32:r6
++32:r7
++32:p0
++32:p1
++32:p2
++32:p3
++32:p4
++32:p5
++32:sp
++32:fp
++32:i0
++32:i1
++32:i2
++32:i3
++32:m0
++32:m1
++32:m2
++32:m3
++32:b0
++32:b1
++32:b2
++32:b3
++32:l0
++32:l1
++32:l2
++32:l3
++32:a0x
++32:a0w
++32:a1x
++32:a1w
++32:astat
++32:rets 
++32:lc0
++32:lt0
++32:lb0
++32:lc1
++32:lt1
++32:lb1
++32:cycles
++32:cycles2
++32:usp
++32:seqstat
++32:syscfg
++32:reti
++32:retx
++32:retn
++32:rete
++32:pc
++32:cc
++32:text_addr
++32:text_end_addr
++32:data_addr
++32:fdpic_exec
++32:fdpic_interp
++32:ipend
toolchain/gdb/Config.in +4 -3
index b45de9a..f7347ad 100644
@@ -35,10 +35,9 @@ choice
 	config BR2_GDB_VERSION_6_6
 		bool "gdb 6.6"
 		depends on !BR2_avr32
-		depends on BR2_DEPRECATED
 
 	config BR2_GDB_VERSION_6_7_1
-		depends on !BR2_avr32
+		depends on !(BR2_avr32 || BR2_bfin)
 		bool "gdb 6.7.1"
 
 	config BR2_GDB_VERSION_6_7_1_AVR32_2_1_5
@@ -47,14 +46,16 @@ choice
 
 	config BR2_GDB_VERSION_6_8
 		bool "gdb 6.8"
-		depends on !BR2_avr32
+		depends on !(BR2_avr32 || BR2_bfin)
 
 	config BR2_GDB_VERSION_7_0_1
 		bool "gdb 7.0.1"
+		depends on !BR2_bfin
 		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE
 
 	config BR2_GDB_VERSION_7_1
 		bool "gdb 7.1"
+		depends on !BR2_bfin
 		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE
 
 endchoice
Signature · 1 line
1.7.4
#6 lore raw

PATCH 3/3 gdb: add support for Blackfin gdbserver

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Mike" == Mike Frysinger <[email protected]> writes:

Mike> This requires removing "deprecated" markings from gdb-6.6, but this isn't Mike> that big of a deal. That is the last version with Blackfin support at the Mike> moment and we're in the process of getting mainlined.

I've changed it to only undeprecate for bfin - Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#7 lore raw

PATCH 1/3 debugging: do not require no stripping

In reply to Mike Frysinger
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Mike" == Mike Frysinger <[email protected]> writes:

Mike> The stripping options operate on the final image and not the Mike> intermediate builds, so requiring stripping to be disabled just Mike> to enable debugging options doesn't make much sense. Especially Mike> when working with gdbserver: only the host needs the debugging Mike> information to be available. The board can run & debug perfectly Mike> fine without it.

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard