Hi,
On Tue, Mar 15, 2011 at 06:59:29PM +0100, Stephan Linz wrote:
> This is support for Xilinx MicroBlaze processors. MicroBlaze
> is a soft core processor designed for Xilinx FPGAs. With this
> new architecture ptxdist have to handle dynamic platform
> configurations exported by Xilinx design tools.
>
> Some essential changes and extensions inside a few ptxdist core
> scripts were made to merge external platform configurations into
> the ptxdist platform configuration. That is very important since
> the resulting build process have to know about the real CPU
> features like hardware multiplier, barrel shifter or similar high
> performance accelerators.
>
> So ptxdist knows about this specialty, parse the new platform
> directory "xlbsp" and use the content for its own platform
> configuration. The content of the new platform directory "xlbsp"
> comes from Xilinx design tools and have to be:
> * auto-config.in (Linux Kernel 2.4 configuration)
> * Kconfig.auto (Linux Kernel 2.6 configuration)
> * xilinx.dts (Linux Kernel 2.6 configuration)
> * config.mk (U-Boot configuration)
> * xparameters.h (U-Boot configuration)
>
> Signed-off-by: Stephan Linz <[email protected]>
> ---
> platforms/architecture.in | 9 ++
> platforms/kernel.in | 9 ++-
> platforms/microblaze.in | 36 +++++++++
> platforms/xlbsp_softcpu.in | 25 ++++++
> rules/post/ptxd_make_xilinx_bsp.make | 41 ++++++++++
> rules/pre/Machine.make | 68 +++++++++++++++++
> rules/pre/Rules.make | 4 +-
> scripts/lib/ptxd_lib_00-init.sh | 3 +
> scripts/lib/ptxd_make_00-init.sh | 5 +
> scripts/lib/ptxd_make_xilinx_bsp.sh | 136
> ++++++++++++++++++++++++++++++++++
> 10 files changed, 333 insertions(+), 3 deletions(-)
> create mode 100644 platforms/microblaze.in
> create mode 100644 platforms/xlbsp_softcpu.in
> create mode 100644 rules/post/ptxd_make_xilinx_bsp.make
> create mode 100644 rules/pre/Machine.make
> create mode 100644 scripts/lib/ptxd_make_xilinx_bsp.sh
>
> diff --git a/platforms/architecture.in b/platforms/architecture.in
> index 5a623cb..3b8436b 100644
> --- a/platforms/architecture.in
> +++ b/platforms/architecture.in
> @@ -69,6 +69,13 @@ choice
> help
> This is support for the SPARC architecture.
>
> + config ARCH_MICROBLAZE
> + bool "microblaze "
> + select HAS_MMU
> + select ARCH_SUPPORTS_ENDIAN_BIG
> + help
> + This is support for the Xilinx MicroBlaze architecture (with
> MMU).
> +
> config ARCH_MIPS
> bool "mips "
> select HAS_MMU
> @@ -302,6 +309,7 @@ config ARCH_STRING
> default "m68k" if ARCH_M68K
> default "ppc" if ARCH_PPC
> default "sparc" if ARCH_SPARC
> + default "microblaze" if ARCH_MICROBLAZE
> default "mips" if ARCH_MIPS
> default "cris" if ARCH_CRIS
> default "parisc" if ARCH_PARISC
> @@ -309,6 +317,7 @@ config ARCH_STRING
>
> #
> ----------------------------------------------------------------------------
>
> +source "generated/microblaze_options.in"
> source "generated/architecture_options.in"
>
> endmenu
> diff --git a/platforms/kernel.in b/platforms/kernel.in
> index 476bdde..0d8702e 100644
> --- a/platforms/kernel.in
> +++ b/platforms/kernel.in
> @@ -83,6 +83,7 @@ config KERNEL_ARCH_STRING
> default "blackfin" if ARCH_BLACKFIN
> default "m68k" if ARCH_M68K
> default "sparc" if ARCH_SPARC
> + default "microblaze" if ARCH_MICROBLAZE
> default "mips" if ARCH_MIPS
> default "mips" if ARCH_MIPSEL
> default "cris" if ARCH_CRIS
> @@ -142,11 +143,16 @@ choice
> help
> This is the target to get the kernel image as an raw
> uncompressed
> binary file.
> +
> +if KERNEL_ARCH_POWERPC || ARCH_MICROBLAZE
> +
> config KERNEL_IMAGE_SIMPLE
> bool
> prompt "simpleImage"
> help
> Create a simple Image with embedded DTB
> +endif
Maybe some kernel expert can comment on this?
mkl: what do you think?
> +
> endchoice
>
> if KERNEL_IMAGE_SIMPLE
> @@ -182,7 +188,8 @@ config KERNEL_IMAGE
> default "vmImage" if KERNEL_IMAGE_VM
> default "vmlinux" if KERNEL_IMAGE_VMLINUX
> default "Image" if KERNEL_IMAGE_RAW
> - default "simpleImage.${PTXCONF_KERNEL_IMAGE_SIMPLE_TARGET}.elf" if
> KERNEL_IMAGE_SIMPLE
> + default "simpleImage.${PTXCONF_KERNEL_IMAGE_SIMPLE_TARGET}.elf" if
> KERNEL_IMAGE_SIMPLE && KERNEL_ARCH_POWERPC
> + default "simpleImage.${PTXCONF_KERNEL_IMAGE_SIMPLE_TARGET}" if
> KERNEL_IMAGE_SIMPLE && ARCH_MICROBLAZE
>
> config KERNEL_XZ
> prompt "build xz-utils hosttool"
> diff --git a/platforms/microblaze.in b/platforms/microblaze.in
> new file mode 100644
> index 0000000..e5c9793
> --- /dev/null
> +++ b/platforms/microblaze.in
> @@ -0,0 +1,36 @@
> +## SECTION=microblaze_options
> +
> +menu "microblaze options "
> +depends on ARCH_MICROBLAZE
> +
> +config ARCH_MICROBLAZE_HAVE_XLBSP
> + prompt "Xilinx BSP (TPOS)"
> + bool
> + default y
> + help
> + The Xilinx BSP (shortly "xlbsp") is part of a specific OSELAS.BSP()
> + and consits of different automatically generated files from the
> + Xilinx FPGA design. All files for the xlbsp have to be copied from
> + Xilinx FPGA design project into the OSELAS.BSP() platforms directory
> + ${PTXDIST_PLATFORMCONFIGDIR}/platforms/xlbsp. Then make a link in
> + OSELAS.BSP() platforms directory:
> +
> + xlbsp_softcpu.in -> xlbsp/Kconfig.auto
> +
> + You have to copy all auto generated files from Xilinx BSP "Third
> + Party OS (TPOS)" to xlbsp in your OSELAS.BSP(). To get TPOS you have
> + to include the EDK user repository from MB-Ref into your Xilinx FPGA
> + design flow.
> +
> + See: http://gitorious.org/mbref/mbref
> + or: http://www.li-pro.de/xilinx_mb/mbref/start
> +
> +if ARCH_MICROBLAZE_HAVE_XLBSP
> +
> +menu "SoftCPU features"
> +source "generated/xlbsp_softcpu.in"
> +endmenu
> +
> +endif
> +
> +endmenu
> diff --git a/platforms/xlbsp_softcpu.in b/platforms/xlbsp_softcpu.in
> new file mode 100644
> index 0000000..a8f6b96
> --- /dev/null
> +++ b/platforms/xlbsp_softcpu.in
> @@ -0,0 +1,25 @@
> +## SECTION=xlbsp_softcpu
> +
> +comment "------------------------------------"
> +comment "Xilinx BSP Configuration"
> +comment "------------------------------------"
> +comment ""
> +comment "Do you missing configuration?"
> +comment ""
> +comment "You need the file 'Kconfig.auto'"
> +comment "from your Xilinx BSP directory."
> +comment ""
> +comment "Copy this file into the Xilinx BSP"
> +comment "configuration path, normaly at:"
> +comment "'${PTXDIST_WORKSPACE}/platforms/xlbsp' or"
> +comment "'${PTXDIST_PLATFORMCONFIGDIR}/platforms/xlbsp'."
> +comment ""
> +comment "HINT: In some cases, the 'SECTION'"
> +comment "comment in Kconfig.auto is missing."
> +comment "This leads to the same error. If so"
> +comment "adding the comment line on top of"
> +comment "the file Kconfig.auto:"
> +comment ""
> +comment "## SECTION=xlbsp_softcpu"
> +comment ""
> +comment "------------------------------------"
> diff --git a/rules/post/ptxd_make_xilinx_bsp.make
> b/rules/post/ptxd_make_xilinx_bsp.make
> new file mode 100644
> index 0000000..325714e
> --- /dev/null
> +++ b/rules/post/ptxd_make_xilinx_bsp.make
> @@ -0,0 +1,41 @@
> +# -*-makefile-*-
> +#
> +# Copyright (C) 2011 by Stephan Linz <[email protected]>
> +#
> +# See CREDITS for details about who has contributed to this project.
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +ifeq ($(PTXCONF_ARCH_MICROBLAZE),y)
I think you misunderstood my comment on this:
"ifeq ($(PTXCONF_FOO),y)" and "ifdef PTXCONF_FOO" is the same for bool
options and "ifdef" is usually what you want for tristate.
And "ifdef PTXCONF_FOO" is more readable and used everywhere else.
> +
> +ifeq ($(PTXCONF_ARCH_MICROBLAZE_HAVE_XLBSP),y)
> +$(STATEDIR)/u-boot.prepare: $(STATEDIR)/u-boot.xlbsp
> +endif
> +
> +ifeq ($(PTXCONF_ARCH_MICROBLAZE_HAVE_XLBSP),y)
> +$(STATEDIR)/kernel.prepare: $(STATEDIR)/kernel.xlbsp
> +endif
> +
> +ifeq ($(PTXCONF_KERNEL_IMAGE_SIMPLE),y)
> +SEL_ROOTFS-$(PTXCONF_IMAGE_KERNEL) += $(IMAGEDIR)/linuximage.ub
> +endif
> +
> +$(IMAGEDIR)/linuximage.ub: $(KERNEL_IMAGE_PATH_y).ub $(IMAGEDIR)/linuximage
> + @echo -n "Creating '$(notdir $(@))' from '$(notdir $(<))'..."
> + @install -m 644 "$(<)" "$(@)"
> + @echo "done."
Hmmm, so "make" must be called with $(KERNEL_IMAGE) but you actually use
$(KERNEL_IMAGE).ub, right?
> +
> +endif
> +
> +$(STATEDIR)/%.xlbsp: $(STATEDIR)/%.extract
> + @$(call targetinfo)
> + @$(call xilinx/bsp, $(PTX_MAP_TO_PACKAGE_$(*)),
> $($(PTX_MAP_TO_PACKAGE_$(*))_DIR))
> + @$(call touch)
> +
> +xilinx/bsp = \
> + $(call world/env, $(1)) \
> + ptxd_make_xilinx_bsp
xilinx/bsp is called with 2 arguments but only uses one?
> +
> +# vim: syntax=make
> diff --git a/rules/pre/Machine.make b/rules/pre/Machine.make
> new file mode 100644
> index 0000000..e6c9601
> --- /dev/null
> +++ b/rules/pre/Machine.make
> @@ -0,0 +1,68 @@
> +# -*-makefile-*-
> +#
> +# This file contains global machine/cpu dependent definitions.
> +#
> +# Copyright (C) 2011 by Stephan Linz <[email protected]>
> +#
> +# See CREDITS for details about who has contributed to this project.
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +#
> ----------------------------------------------------------------------------
> +# Machine & CPU Defines (mainly SoftCPU)
> +#
> ----------------------------------------------------------------------------
> +
> +#
> +# Xilinx MicroBlaze, SoftCPU inside a FPGA
> +#
> +ifeq ($(PTXCONF_ARCH_MICROBLAZE),y)
> +
> + # Use defines by Xilinx BSP (borrowed from Linux kernel)
> + ifeq ($(PTXCONF_ARCH_MICROBLAZE_HAVE_XLBSP),y)
> +
> + # What CPU vesion are we building for, and crack it open
> + # as major.minor.rev
> + CPU_VER := $(shell echo $(PTXCONF_XILINX_MICROBLAZE0_HW_VER))
> + CPU_MAJOR := $(shell echo $(CPU_VER) | cut -d '.' -f 1)
> + CPU_MINOR := $(shell echo $(CPU_VER) | cut -d '.' -f 2)
> + CPU_REV := $(shell echo $(CPU_VER) | cut -d '.' -f 3)
> +
> + export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
> +
> + # Use cpu-related PTXCONF_ vars to set compile options.
> + # The various PTXCONF_XILINX cpu features options are integers 0/1/2...
> + # rather than bools y/n
> +
> + # Work out HW multiplier support. This is icky.
> + # 1. Spartan2 has no HW multipliers.
> + # 2. MicroBlaze v3.x always uses them, except in Spartan 2
> + # 3. All other FPGa/CPU ver combos, we can trust the PTXCONF_ settings
> + ifeq (,$(findstring spartan2,$(PTXCONF_XILINX_MICROBLAZE0_FAMILY)))
are there really multiple matches or could you use:
ifeq ($(call remove_quotes,$(PTXCONF_XILINX_MICROBLAZE0_FAMILY)),)
> + ifeq ($(CPU_MAJOR),3)
> + CPUFLAGS-1 += -mno-xl-soft-mul
> + else
> + # USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul
> support.
> + CPUFLAGS-$(subst 1,,$(PTXCONF_XILINX_MICROBLAZE0_USE_HW_MUL)) +=
> -mxl-multiply-high
> + CPUFLAGS-$(PTXCONF_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
> + endif
> + endif
> + CPUFLAGS-$(PTXCONF_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
> + CPUFLAGS-$(PTXCONF_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
> + CPUFLAGS-$(PTXCONF_XILINX_MICROBLAZE0_USE_PCMP_INSTR) +=
> -mxl-pattern-compare
> +
> + ifeq ($(PTXCONF_HAS_HARDFLOAT),y)
> + CPUFLAGS-$(PTXCONF_XILINX_MICROBLAZE0_USE_FPU) += -mhard-float
> + CPUFLAGS-$(PTXCONF_XILINX_MICROBLAZE0_USE_FPU) += -mxl-float-convert
> + CPUFLAGS-$(PTXCONF_XILINX_MICROBLAZE0_USE_FPU) += -mxl-float-sqrt
> + endif
> +
> + CPUFLAGS-1 += -mcpu=v$(CPU_VER)
> +
> + CPUFLAGS := $(CPUFLAGS-1) $(CPUFLAGS-2)
> +
> + endif # PTXCONF_ARCH_MICROBLAZE_HAVE_XLBSP
> +
> +endif # PTXCONF_ARCH_MICROBLAZE
> +
> diff --git a/rules/pre/Rules.make b/rules/pre/Rules.make
> index c531a50..85babcd 100644
> --- a/rules/pre/Rules.make
> +++ b/rules/pre/Rules.make
> @@ -38,8 +38,8 @@ CROSS_PATH :=
> $(PTXDIST_SYSROOT_CROSS)/bin:$(PTXDIST_SYSROOT_CROSS)/sbin:$$PATH
> #
> # Environment variables for the compiler
> #
> -CROSS_CFLAGS := $(PTXCONF_TARGET_EXTRA_CFLAGS)
> -CROSS_CXXFLAGS := $(PTXCONF_TARGET_EXTRA_CXXFLAGS)
> +CROSS_CFLAGS := $(CPUFLAGS) $(PTXCONF_TARGET_EXTRA_CFLAGS)
> +CROSS_CXXFLAGS := $(CPUFLAGS)
> $(PTXCONF_TARGET_EXTRA_CXXFLAGS)
> CROSS_CPPFLAGS := $(strip
> $(PTXCONF_TARGET_EXTRA_CPPFLAGS) $(PTXDIST_CROSS_CPPFLAGS))
> CROSS_LDFLAGS := $(strip
> $(PTXCONF_TARGET_EXTRA_LDFLAGS) $(PTXDIST_CROSS_LDFLAGS))
I think you should be able to add $(CPUFLAGS) to $(PTXDIST_CROSS_CPPFLAGS)
in Machine.make instead of modifying Rules.make.
>
> diff --git a/scripts/lib/ptxd_lib_00-init.sh b/scripts/lib/ptxd_lib_00-init.sh
> index 02a48e7..524f30a 100644
> --- a/scripts/lib/ptxd_lib_00-init.sh
> +++ b/scripts/lib/ptxd_lib_00-init.sh
> @@ -101,6 +101,9 @@ ptxd_init_ptxdist_path() {
> PTXDIST_PATH_PLATFORMS="${PTXDIST_PATH//://platforms:}"
> export PTXDIST_PATH_PLATFORMS
>
> + PTXDIST_PATH_PLATFORMS_XLBSP="${PTXDIST_PATH_PLATFORMS//://xlbsp:}"
> + export PTXDIST_PATH_PLATFORMS_XLBSP
> +
> ptxd_init_ptxdist_path_sysroot
> }
>
> diff --git a/scripts/lib/ptxd_make_00-init.sh
> b/scripts/lib/ptxd_make_00-init.sh
> index b74e47a..526dbae 100644
> --- a/scripts/lib/ptxd_make_00-init.sh
> +++ b/scripts/lib/ptxd_make_00-init.sh
> @@ -32,6 +32,11 @@ ptxd_init_arch() {
> ipkg_arch=arm
> ;;
> esac
> + ;;
> +
> + microblaze)
> + ipkg_arch=mb
> + ;;
> esac
>
> PTXDIST_IPKG_ARCH_STRING="${ipkg_arch}"
> diff --git a/scripts/lib/ptxd_make_xilinx_bsp.sh
> b/scripts/lib/ptxd_make_xilinx_bsp.sh
> new file mode 100644
> index 0000000..4e53a8b
> --- /dev/null
> +++ b/scripts/lib/ptxd_make_xilinx_bsp.sh
> @@ -0,0 +1,136 @@
> +#!/bin/bash
> +#
> +# Copyright (C) 2011 by Stephan Linz <[email protected]>
> +#
> +# See CREDITS for details about who has contributed to this project.
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +#
> +# apply Xilinx BSP for U-Boot
> +#
> +ptxd_make_xilinx_bsp_apply_uboot()
> +{
> + local ptx_xlbsp_uboot_cfg="$(ptxd_get_ptxconf PTXCONF_U_BOOT_CONFIG)"
> + local pkg_xlbsp_uboot_files="${pkg_xlbsp_dir}/config.mk \
> + ${pkg_xlbsp_dir}/xparameters.h"
> + local pkg_xlbsp_uboot_file
> + local ptx_xlbsp_uboot_dir
> +
> + # find ptx_xlbsp_uboot_dir
> + if ! ptxd_get_path
> "${pkg_build_dir}/board/xilinx/${ptx_xlbsp_uboot_cfg%%_config}"; then
> + echo "xlbsp: ${pkg_xlbsp_apply}: no board path found"
> + return
> + fi
> + ptx_xlbsp_uboot_dir="${ptxd_reply}"
> +
> + # apply files (remove old, link new)
> + echo "xlbsp: ${pkg_xlbsp_apply}: board '$(ptxd_print_path
> "${ptx_xlbsp_uboot_dir:-<none>}")'"
> + pushd "${ptx_xlbsp_uboot_dir}" > /dev/null &&
> + for pkg_xlbsp_uboot_file in ${pkg_xlbsp_uboot_files}; do
> + echo "xlbsp: ${pkg_xlbsp_apply}: rm/ln '$(ptxd_print_path
> "${pkg_xlbsp_uboot_file:-<none>}")'"
> +
> + local pkg_uboot_file="$(basename "${pkg_xlbsp_uboot_file}")" &&
> + rm -f ${pkg_uboot_file} &&
> + ln -s ${pkg_xlbsp_uboot_file} ${pkg_uboot_file}
I think, with "ln -sf ..." you can avoid the "rm"
> +
> + done &&
> + popd > /dev/null
> +}
> +export -f ptxd_make_xilinx_bsp_apply_uboot
> +
> +#
> +# apply Xilinx BSP for Linux kernel 2.6
> +#
> +ptxd_make_xilinx_bsp_apply_kernel()
> +{
> + local ptx_xlbsp_kernel_arch="$(ptxd_get_ptxconf
> PTXCONF_KERNEL_ARCH_STRING)"
> + local pkg_xlbsp_kernel24_files="${pkg_xlbsp_dir}/auto-config.in"
> + local pkg_xlbsp_kernel26_files="${pkg_xlbsp_dir}/Kconfig.auto"
> + local ptx_xlbsp_kernel_platform
> + local pkg_xlbsp_kernel_files
> + local pkg_xlbsp_kernel_file
> + local ptx_xlbsp_kernel_dir
> +
> + # files and platform to use per version
> + case "${pkg_pkg}" in
> + linux-24*|linux-2.4*)
> + pkg_xlbsp_kernel_files=${pkg_xlbsp_kernel24_files};
> + ptx_xlbsp_kernel_platform="uclinux-auto";
> + ;;
> + linux-26*|linux-2.6*)
> + pkg_xlbsp_kernel_files=${pkg_xlbsp_kernel26_files};
> + ptx_xlbsp_kernel_platform="generic";
> + ;;
> + *)
> + echo "xlbsp: ${pkg_xlbsp_apply}: unsupported kernel version:
> ${pkg_pkg##linux-}"
> + return
> + ;;
> + esac
Hmm, the rest of this function looks just like uboot. Maybe it can be
shared?
> +
> + # find ptx_xlbsp_kernel_dir
> + if ! ptxd_get_path
> "${pkg_build_dir}/arch/${ptx_xlbsp_kernel_arch}/platform/${ptx_xlbsp_kernel_platform}";
> then
> + echo "xlbsp: ${pkg_xlbsp_apply}: no board path found"
> + return
> + fi
> + ptx_xlbsp_kernel_dir="${ptxd_reply}"
> +
> + # apply files (remove old, link new)
> + echo "xlbsp: ${pkg_xlbsp_apply}: board '$(ptxd_print_path
> "${ptx_xlbsp_kernel_dir:-<none>}")'"
> + pushd "${ptx_xlbsp_kernel_dir}" > /dev/null &&
> + for pkg_xlbsp_kernel_file in ${pkg_xlbsp_kernel_files}; do
> + echo "xlbsp: ${pkg_xlbsp_apply}: rm/ln '$(ptxd_print_path
> "${pkg_xlbsp_kernel_file:-<none>}")'"
> +
> + local pkg_kernel_file="$(basename "${pkg_xlbsp_kernel_file}")" &&
> + rm -f ${pkg_kernel_file} &&
> + ln -s ${pkg_xlbsp_kernel_file} ${pkg_kernel_file}
> +
> + done &&
> + popd > /dev/null
> +}
> +export -f ptxd_make_xilinx_bsp_apply_kernel
> +
> +#
> +# generic apply Xilinx BSP function
> +#
> +ptxd_make_xilinx_bsp_apply()
> +{
> + local pkg_xlbsp_dir
> + local pkg_xlbsp_apply
> +
> + ptxd_in_path PTXDIST_PATH_PLATFORMS_XLBSP || return
> + pkg_xlbsp_dir="${ptxd_reply}"
> +
> + # files to use per package
> + case "${pkg_pkg}" in
> + u-boot*)
> + pkg_xlbsp_apply="uboot";
> + ;;
> + linux*)
> + pkg_xlbsp_apply="kernel";
> + ;;
*)
error handling
;;
this should fail for any other package
> + esac || return
> +
> + echo "pkg_xlbsp_dir: '$(ptxd_print_path "${pkg_xlbsp_dir:-<none>}")'"
> + echo "pkg_build_dir: '$(ptxd_print_path "${pkg_build_dir:-<none>}")'"
> + echo
> +
> + # apply Xilinx BSP per package if files are available
> + if [ -n "${pkg_xlbsp_apply}" ]; then
> + echo "xlbsp: ${pkg_xlbsp_apply}: apply '$(ptxd_print_path
> "${pkg_xlbsp_dir:-<none>}")'"
> + "ptxd_make_xilinx_bsp_apply_${pkg_xlbsp_apply}" || return
> + echo -e "xlbsp: ${pkg_xlbsp_apply}: done\n"
> + fi
> +}
> +export -f ptxd_make_xilinx_bsp_apply
> +
> +#
> +# copy and adjust per package
> +#
> +ptxd_make_xilinx_bsp() {
> + ptxd_make_world_init || return
> + ptxd_make_xilinx_bsp_apply
> +}
> +export -f ptxd_make_xilinx_bsp
no need for a separate function here, imho.
Michael
> --
> 1.6.0.4
>
>
> --
> ptxdist mailing list
> [email protected]
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
--
ptxdist mailing list
[email protected]