[PATCH] Fix GDB build on ArchLinux

2017-07-01 Thread andreas.koelbl
From: Andreas Kölbl 

Archlinux provides both, libguile v2.0 and v2.2. GDB states in
configuration its compatibility with both versions of libguile which is
false. The SCM_port interface of libguile was removed in v2.2 and
therefore breaks GDB as a user.

RTEMS does not use libguile and therefore it can be compiled without
support.

https://sourceware.org/bugzilla/show_bug.cgi?id=21104

Close #3054.
---
 source-builder/config/gdb-7-1.cfg | 1 +
 1 file changed, 1 insertion(+)

diff --git a/source-builder/config/gdb-7-1.cfg 
b/source-builder/config/gdb-7-1.cfg
index 21591b5..a045c3b 100644
--- a/source-builder/config/gdb-7-1.cfg
+++ b/source-builder/config/gdb-7-1.cfg
@@ -119,6 +119,7 @@ BuildRoot: %{_tmppath}/%{name}-root-%(%{__id_u} -n)
 %{?gdb-sim-options:%{gdb-sim-options}} \
 --without-zlib \
 --with-expat \
+--with-guile=no \
 %{!?without_python:%{with_python_option}} \
 --prefix=%{_prefix} --bindir=%{_bindir} \
 --exec-prefix=%{_exec_prefix} \
-- 
2.13.2

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

[PATCH 3/6] boot_card: Add attribute weak to override

2017-07-31 Thread andreas.koelbl
From: Andreas Kölbl 

If this is omitted, libtests, where this symbol gets overridden, fail to build.
Affected tests:
  sptimecounter01
  spinternalerror01
---
 c/src/lib/libbsp/shared/bootcard.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/c/src/lib/libbsp/shared/bootcard.c 
b/c/src/lib/libbsp/shared/bootcard.c
index 3e243d2569..6e5df99f1e 100644
--- a/c/src/lib/libbsp/shared/bootcard.c
+++ b/c/src/lib/libbsp/shared/bootcard.c
@@ -61,7 +61,8 @@ RTEMS_SYSINIT_ITEM(
  *  the system while maximizing shared code and keeping BSP code in C
  *  as much as possible.
  */
-void boot_card(
+
+__attribute__((weak)) void boot_card(
   const char *cmdline
 )
 {
-- 
2.13.3

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

[PATCH 2/6] jetson-tk1: Add start.S

2017-07-31 Thread andreas.koelbl
From: Andreas Kölbl 

This own implementation allows for modifications like passing a cmdline
parameter.
---
 c/src/lib/libbsp/arm/jetson-tk1/Makefile.am   |   3 +-
 c/src/lib/libbsp/arm/jetson-tk1/configure.ac  |   3 +
 c/src/lib/libbsp/arm/jetson-tk1/start/start.S | 456 ++
 3 files changed, 461 insertions(+), 1 deletion(-)
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/start/start.S

diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am 
b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
index 4316e67957..9fc1695cba 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
+++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
@@ -50,7 +50,7 @@ include_bsp_HEADERS += include/mmu.h
 
 noinst_LIBRARIES = libbspstart.a
 
-libbspstart_a_SOURCES = ../shared/start/start.S
+libbspstart_a_SOURCES = start/start.S
 
 project_lib_DATA = start.$(OBJEXT)
 
@@ -79,6 +79,7 @@ libbsp_a_SOURCES += ../../shared/sbrk.c
 libbsp_a_SOURCES += ../../shared/src/stackalloc.c
 libbsp_a_SOURCES += ../shared/startup/bsp-start-memcpy.S
 libbsp_a_SOURCES += ../shared/arm-cp15-set-ttb-entries.c
+libbsp_a_SOURCES += ../shared/startup/bsp-start-in-hyp-support.S
 
 # Cache
 libbsp_a_SOURCES += ../../../libcpu/shared/src/cache_manager.c
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/configure.ac 
b/c/src/lib/libbsp/arm/jetson-tk1/configure.ac
index 7d4dce3008..18e9ed 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/configure.ac
+++ b/c/src/lib/libbsp/arm/jetson-tk1/configure.ac
@@ -21,6 +21,9 @@ use])
 RTEMS_BSPOPTS_SET([TEGRA_BASE],[*],[0x8000])
 RTEMS_BSPOPTS_HELP([TEGRA_BASE],[Base load address])
 
+RTEMS_BSPOPTS_SET([BSP_START_IN_HYP_SUPPORT],[*],[1])
+RTEMS_BSPOPTS_HELP([BSP_START_IN_HYP_SUPPORT], [Support start of BSP in ARM 
HYP mode])
+
 AC_DEFUN([TEGRA_LINKCMD],[
 AC_ARG_VAR([$1],[$2; default $3])dnl
 [$1]=[$]{[$1]:-[$3]}
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/start/start.S 
b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S
new file mode 100644
index 00..bb984189ba
--- /dev/null
+++ b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S
@@ -0,0 +1,456 @@
+/**
+ * @file
+ *
+ * @brief Boot and system start code.
+ */
+
+/*
+ * Copyright (c) 2008, 2016 embedded brains GmbH.  All rights reserved.
+ *
+ * Authors:
+ *   Andreas Kölbl
+ *   OTH Regensburg
+ *   Seybothstraße 2
+ *   93053 Regensburg
+ *
+ *   embedded brains GmbH
+ *   Dornierstr. 4
+ *   82178 Puchheim
+ *   Germany
+ *   
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include 
+#include   
+#include 
+   
+#include 
+#include 
+#include 
+
+   /* External symbols */
+   .extern bsp_reset
+   .extern boot_card
+   .extern bsp_start_hook_0
+   .extern bsp_start_hook_1
+   .extern bsp_stack_irq_end
+   .extern bsp_stack_fiq_end
+   .extern bsp_stack_abt_end
+   .extern bsp_stack_und_end
+   .extern bsp_stack_svc_end
+#ifdef RTEMS_SMP
+   .extern bsp_stack_all_size
+#endif
+   .extern _ARMV4_Exception_undef_default
+   .extern _ARMV4_Exception_swi_default
+   .extern _ARMV4_Exception_data_abort_default
+   .extern _ARMV4_Exception_pref_abort_default
+   .extern _ARMV4_Exception_reserved_default
+   .extern _ARMV4_Exception_interrupt
+   .extern _ARMV4_Exception_fiq_default
+   .extern _ARMV7M_Exception_default
+
+#ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION
+   .extern bsp_start_init_registers_core
+   .extern bsp_start_init_registers_banked_fiq
+   .extern bsp_start_init_registers_vfp
+#endif
+
+#ifdef BSP_START_IN_HYP_SUPPORT
+   .extern bsp_start_arm_drop_hyp_mode
+   .globl  bsp_start_hyp_vector_table_begin
+#endif
+
+   /* Global symbols */
+   .globl  _start
+   .globl  bsp_start_vector_table_begin
+   .globl  bsp_start_vector_table_end
+   .globl  bsp_start_vector_table_size
+   .globl  bsp_vector_table_size
+   .globl  bsp_start_hook_0_done
+
+   .section".bsp_start_text", "ax"
+
+#if defined(ARM_MULTILIB_ARCH_V4)
+
+   .arm
+
+/*
+ * This is the exception vector table and the pointers to the default
+ * exceptions handlers.
+ */
+
+bsp_start_vector_table_begin:
+
+   ldr pc, handler_addr_reset
+   ldr pc, handler_addr_undef
+   ldr pc, handler_addr_swi
+   ldr pc, handler_addr_prefetch
+   ldr pc, handler_addr_abort
+
+   /* Program signature checked by boot loader */
+   .word   0xb8a06f58
+
+   ldr pc, handler_addr_irq
+   ldr pc, handler_addr_fiq
+
+handler_addr_reset:
+
+#ifdef BSP_START_RESET_VECTOR
+   .word   BSP_START_RESET_VECTOR
+#else
+   .word   _start
+#endif
+
+handler_addr_undef:
+
+   .word   _ARMV4_Exception_undef_default
+
+handler_addr_swi:
+
+   .word   _ARMV4_Exception_swi_default
+
+handler_addr_prefetch:
+
+   .word   _ARMV4_Exception_pref_abort_default
+
+ha

[PATCH 5/6] cmdline: Add boot_cpu parser

2017-07-31 Thread andreas.koelbl
From: Andreas Kölbl 

This adds the boot cpu to get parsed via cmdline on address 0x83FF8000 (by
default). This allows the shared arm-gic-irq driver to only redirect irqs to the
boot cpu. Running into a hypervisor, irq redirecting to different, not available
cpus, may crash RTEMS.
---
 c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h   | 9 -
 c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in | 4 ++--
 c/src/lib/libbsp/arm/shared/arm-gic-irq.c   | 6 +-
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h 
b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h
index d50bfaaed0..e02d24dd7e 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h
+++ b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h
@@ -11,7 +11,14 @@
 #define LIBBSP_ARM_JETSONTK1_CMDLINE_H
 
 #include 
+#define bsp_mmu_size 0x4000
+#define bsp_cmdline_size 0x4000
 
-#define BSP_CMDLINE_LOCATION (TEGRA_BASE + MEMORY_SIZE - 0x4000)
+#ifndef ASM
+uint8_t bsp_get_boot_cpu(void);
+#endif
+
+#define BSP_CMDLINE_LOCATION (TEGRA_BASE + MEMORY_SIZE - bsp_mmu_size - \
+bsp_cmdline_size)
 
 #endif /* LIBBSP_ARM_JETSONTK1_CMDLINE_H */
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in 
b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in
index ddc19c5097..468ec42c63 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in
+++ b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in
@@ -1,5 +1,5 @@
-bsp_mmu_size = 16k;
-bsp_cmdline_size = 16k;
+bsp_mmu_size = DEFINED (bsp_mmu_size) ? bsp_mmu_size : 16k;
+bsp_cmdline_size = DEFINED (bsp_cmdline_size) ? bsp_cmdline_size : 16k;
 
 MEMORY {
   RAM (AIW) : ORIGIN = @TEGRA_BASE@, LENGTH = @MEMORY_SIZE@ - 
bsp_mmu_size - bsp_cmdline_size
diff --git a/c/src/lib/libbsp/arm/shared/arm-gic-irq.c 
b/c/src/lib/libbsp/arm/shared/arm-gic-irq.c
index 5a4a998bfb..b006bb4f7a 100644
--- a/c/src/lib/libbsp/arm/shared/arm-gic-irq.c
+++ b/c/src/lib/libbsp/arm/shared/arm-gic-irq.c
@@ -15,6 +15,7 @@
 #include 
 
 #include 
+#include 
 
 #include 
 
@@ -78,6 +79,9 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
   volatile gic_dist *dist = ARM_GIC_DIST;
   uint32_t id_count = get_id_count(dist);
   uint32_t id;
+  uint8_t boot_cpu;
+
+  boot_cpu = bsp_get_boot_cpu();
 
   arm_cp15_set_exception_handler(
 ARM_EXCEPTION_IRQ,
@@ -89,7 +93,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
   }
 
   for (id = 32; id < id_count; ++id) {
-gic_id_set_targets(dist, id, 0x01);
+gic_id_set_targets(dist, id, 1 << boot_cpu);
   }
 
   cpuif->iccpmr = GIC_CPUIF_ICCPMR_PRIORITY(0xff);
-- 
2.13.3

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

[PATCH 6/6] gpio: Add tegra124 gpio support

2017-07-31 Thread andreas.koelbl
From: Andreas Kölbl 

Implements the interface definded in libbsp/shared for Tegra124 processors.

bsp specific: The bank parameter has to include the port specified by the
  tegra124 address map
  In order to set a pin either in input or output mode requires an
  additional pointer of type uint32_t passing the pinmux port of the
  bank
---
 c/src/lib/libbsp/arm/jetson-tk1/Makefile.am|   5 +
 c/src/lib/libbsp/arm/jetson-tk1/README |   3 +
 .../lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c | 271 +
 c/src/lib/libbsp/arm/jetson-tk1/include/bsp.h  |   4 +
 .../libbsp/arm/jetson-tk1/include/tegra124-gpio.h  |  61 +
 .../arm/jetson-tk1/startup/mm_config_table.c   |  14 ++
 6 files changed, 358 insertions(+)
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/tegra124-gpio.h

diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am 
b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
index 37d2ca267e..4ec5c81b14 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
+++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
@@ -44,6 +44,7 @@ include_bsp_HEADERS += include/cmdline.h
 include_bsp_HEADERS += include/irq.h
 include_bsp_HEADERS += include/memory.h
 include_bsp_HEADERS += include/mmu.h
+include_bsp_HEADERS += include/tegra124-gpio.h
 
 ###
 # Data   #
@@ -107,6 +108,10 @@ libbsp_a_SOURCES += ../../shared/src/irq-legacy.c
 libbsp_a_SOURCES += ../../shared/src/irq-server.c
 libbsp_a_SOURCES += ../../shared/src/irq-shell.c
 
+# GPIO
+libbsp_a_SOURCES += ../../shared/gpio.c
+libbsp_a_SOURCES += gpio/tegra124-gpio.c
+
 # Restart
 libbsp_a_SOURCES += startup/bspreset.c
 
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/README 
b/c/src/lib/libbsp/arm/jetson-tk1/README
index 13821c7082..50022cf30c 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/README
+++ b/c/src/lib/libbsp/arm/jetson-tk1/README
@@ -4,6 +4,7 @@ This BSP currently supports the following devices:
   - Console using UART-D on DB9 connector and UART-A on the J3A2 Pin header
   - Clock using the ARM internal CP15 timer
   - Benchmark timer using the Nvidia Generic Timer TimerUS
+  - GPIOs
 
 Checkout the options described in include/bspopts.h.in in order to configure
 the second console or let the consoles operate interrupt driven.
@@ -12,6 +13,7 @@ Currently, following IRQs are used:
   If configured NS8250_CONSOLE_USE_INTERRUPTS=1)
 - 122
 - 68
+  - 119 for the GPIO_6 bank (PU0 - PU6)
 
 Also allow the following memory regions:
   - UARTA 0x40@0x70006000
@@ -19,3 +21,4 @@ Also allow the following memory regions:
   - Nvidia Timers 0x1000@0x60005000
   - RAM 64MB@0x9000
   - PINMUX AUX 0x1000@0x70003000
+  - GPIO 0x1000@0x6000d000
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c 
b/c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c
new file mode 100644
index 00..da35b6dfe0
--- /dev/null
+++ b/c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c
@@ -0,0 +1,271 @@
+/*
+ * Copyright (c) OTH Regensburg, 2017
+ *   Author: Andreas Kölbl
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+#define GPIO_CNF 0x00
+#define GPIO_OE 0x10
+#define GPIO_OUT 0x20
+#define GPIO_IN 0x30
+#define GPIO_INT_STA 0x40
+#define GPIO_INT_ENB 0x50
+#define GPIO_INT_LVL 0x60
+#define GPIO_INT_CLR 0x70
+
+#define GPIO_MSK_CNF 0x80
+#define GPIO_MSK_OE 0x90
+#define GPIO_MSK_OUT 0xa0
+#define GPIO_MSK_INT_STA 0xc0
+#define GPIO_MSK_INT_ENB 0xd0
+#define GPIO_MSK_INT_LVL 0xe0
+
+/*
+ * To achieve a performant and compatible implementation the bank parameter has
+ * also to include the gpio port address, Tegra K1 TRM, p. 278
+ */
+
+static inline void tegra_gpio_write(
+  uintptr_t gpio_reg,
+  uint32_t  bank,
+  uint32_t  value
+)
+{
+  mmio_write( GPIO_BASE + gpio_reg + bank, value );
+}
+
+static uint32_t tegra_gpio_read(
+  uintptr_t gpio_reg,
+  uint32_t  bank
+)
+{
+  return mmio_read( GPIO_BASE + gpio_reg + bank );
+}
+
+static inline void pinmux_write(
+  uint32_t  pinmux_reg,
+  uint32_t  pin,
+  tegra_pinmux_property property
+)
+{
+  mmio_write( PINMUX_AUX + pinmux_reg + 4 * pin, property );
+}
+
+static inline uint32_t pinmux_read(
+  uint32_t pinmux_reg,
+  uint32_t pin
+)
+{
+  return mmio_read( PINMUX_AUX + pinmux_reg + 4 * pin );
+}
+
+static inline void gpio_set_level(
+  uint32_t bank,
+  uint32_t pin,
+  rtems_gpio_interrupt sens
+)
+{
+  uint32_t value;
+
+  value = tegra_gpio_read( GPIO_INT_LVL, bank );
+
+  value &= ~( ( 1 << pin ) | ( ( 1 << 8 ) << pin ) | ( ( 1 << 16 ) << pin ) );
+
+  if ( sens != NONE ) {
+value |= 

[PATCH 1/6] Add Jetson-TK1 board support

2017-07-31 Thread andreas.koelbl
From: Andreas Kölbl 

Peripheral device drivers:
  - RTEMS Timercounter API using the ARM Generic Timer.
  - Benchmark RTEMS with the Nvidia TMRUS
  Console:
- 8250 UART based driver
- Devices UART-A and UART-D (Default: UART-D, UART-A is turned off)
- Interrupt driven or polled (Default: Polled)
---
Instructions to run RTEMS using this BSP in the Jailhouse hypervisor
will be provided later.

 c/src/lib/libbsp/arm/acinclude.m4  |   2 +
 c/src/lib/libbsp/arm/jetson-tk1/Makefile.am| 134 ++
 c/src/lib/libbsp/arm/jetson-tk1/README |  21 ++
 c/src/lib/libbsp/arm/jetson-tk1/TODO   |   3 +
 c/src/lib/libbsp/arm/jetson-tk1/bsp_specs  |  13 +
 c/src/lib/libbsp/arm/jetson-tk1/clock/car.c| 117 +
 c/src/lib/libbsp/arm/jetson-tk1/clock/clockdrv.c   | 138 ++
 c/src/lib/libbsp/arm/jetson-tk1/configure.ac   |  39 +++
 c/src/lib/libbsp/arm/jetson-tk1/console/console.c  | 291 +
 .../libbsp/arm/jetson-tk1/console/debug-console.c  |  50 
 c/src/lib/libbsp/arm/jetson-tk1/include/bsp.h  |  25 ++
 c/src/lib/libbsp/arm/jetson-tk1/include/car.h  |  30 +++
 c/src/lib/libbsp/arm/jetson-tk1/include/console.h  |  32 +++
 c/src/lib/libbsp/arm/jetson-tk1/include/irq.h  |  25 ++
 c/src/lib/libbsp/arm/jetson-tk1/include/memory.h   |  31 +++
 c/src/lib/libbsp/arm/jetson-tk1/include/mmu.h  |  42 +++
 .../arm/jetson-tk1/make/custom/jetson-tk1.cfg  |  16 ++
 c/src/lib/libbsp/arm/jetson-tk1/misc/timer.c   |  64 +
 c/src/lib/libbsp/arm/jetson-tk1/startup/bspreset.c |  19 ++
 c/src/lib/libbsp/arm/jetson-tk1/startup/bspstart.c |  16 ++
 .../libbsp/arm/jetson-tk1/startup/bspstarthooks.c  |  59 +
 .../lib/libbsp/arm/jetson-tk1/startup/linkcmds.in  |  39 +++
 .../arm/jetson-tk1/startup/mm_config_table.c   |  56 
 23 files changed, 1262 insertions(+)
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/README
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/TODO
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/bsp_specs
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/clock/car.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/clock/clockdrv.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/configure.ac
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/console/console.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/console/debug-console.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/bsp.h
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/car.h
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/console.h
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/irq.h
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/memory.h
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/mmu.h
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/make/custom/jetson-tk1.cfg
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/misc/timer.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/bspreset.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/bspstart.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/bspstarthooks.c
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/mm_config_table.c

diff --git a/c/src/lib/libbsp/arm/acinclude.m4 
b/c/src/lib/libbsp/arm/acinclude.m4
index f5ca105eca..26f743a95e 100644
--- a/c/src/lib/libbsp/arm/acinclude.m4
+++ b/c/src/lib/libbsp/arm/acinclude.m4
@@ -18,6 +18,8 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR],
 AC_CONFIG_SUBDIRS([gdbarmsim]);;
   gumstix )
 AC_CONFIG_SUBDIRS([gumstix]);;
+  jetson-tk1 )
+AC_CONFIG_SUBDIRS([jetson-tk1]);;
   lm3s69xx )
 AC_CONFIG_SUBDIRS([lm3s69xx]);;
   lpc176x )
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am 
b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
new file mode 100644
index 00..4316e67957
--- /dev/null
+++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
@@ -0,0 +1,134 @@
+ACLOCAL_AMFLAGS = -I ../../../../aclocal
+
+include $(top_srcdir)/../../../../automake/compile.am
+
+include_bspdir = $(includedir)/bsp
+include_libcpudir = $(includedir)/libcpu
+
+dist_project_lib_DATA = bsp_specs
+
+###
+# Header #
+###
+
+include_HEADERS = include/bsp.h
+include_HEADERS += ../realview-pbx-a9/include/tm27.h
+
+nodist_include_HEADERS = ../../shared/include/coverhd.h include/bspopts.h
+nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
+
+include_libcpu_HEADERS =  ../../../libcpu/arm/shared/include/arm-cp15.h
+
+include_bsp_HEADERS =
+include_bsp_HEADERS += ../../../libbsp/shared/include/mm.h
+include_bsp_HEADERS += ../../shared/include/irq-generic.h
+include_bs

[PATCH 4/6] cmdline: Add cmdline support

2017-07-31 Thread andreas.koelbl
From: Andreas Kölbl 

---
 c/src/lib/libbsp/arm/jetson-tk1/Makefile.am|  2 ++
 c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h  | 17 ++
 c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c | 38 ++
 c/src/lib/libbsp/arm/jetson-tk1/start/start.S  |  6 +++-
 .../lib/libbsp/arm/jetson-tk1/startup/linkcmds.in  |  4 ++-
 5 files changed, 65 insertions(+), 2 deletions(-)
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h
 create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c

diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am 
b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
index 9fc1695cba..37d2ca267e 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
+++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am
@@ -40,6 +40,7 @@ include_bsp_HEADERS += 
../shared/armv467ar-basic-cache/cache_.h
 
 include_bsp_HEADERS += include/car.h
 include_bsp_HEADERS += include/console.h
+include_bsp_HEADERS += include/cmdline.h
 include_bsp_HEADERS += include/irq.h
 include_bsp_HEADERS += include/memory.h
 include_bsp_HEADERS += include/mmu.h
@@ -123,6 +124,7 @@ libbsp_a_SOURCES += startup/mm_config_table.c
 libbsp_a_SOURCES += ../shared/mminit.c
 
 # misc
+libbsp_a_SOURCES += misc/cmdline.c
 libbsp_a_SOURCES += misc/timer.c
 
 ###
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h 
b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h
new file mode 100644
index 00..d50bfaaed0
--- /dev/null
+++ b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) OTH Regensburg, 2017
+ *   Author: Andreas Kölbl
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef LIBBSP_ARM_JETSONTK1_CMDLINE_H
+#define LIBBSP_ARM_JETSONTK1_CMDLINE_H
+
+#include 
+
+#define BSP_CMDLINE_LOCATION (TEGRA_BASE + MEMORY_SIZE - 0x4000)
+
+#endif /* LIBBSP_ARM_JETSONTK1_CMDLINE_H */
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c 
b/c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c
new file mode 100644
index 00..fae2769ef4
--- /dev/null
+++ b/c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) OTH Regensburg, 2017
+ *   Author: Andreas Kölbl
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+#define ARM_MAX_CPU_COUNT 4
+
+#define DEFAULT_BOOT_CPU (1 << 0)
+
+uint8_t bsp_get_boot_cpu( void ) {
+  char boot_cpu_str[32];
+  char c;
+
+  if ( rtems_bsp_cmdline_get_param_rhs("boot_cpu", boot_cpu_str,
+ sizeof(boot_cpu_str)) == NULL ) {
+printk("No boot cpu argument provided %x\n", BSP_CMDLINE_LOCATION);
+
+return DEFAULT_BOOT_CPU;
+  }
+
+  c = boot_cpu_str[0];
+  if ( (c >= '0') && (c < '0' + ARM_MAX_CPU_COUNT) ) {
+return c - '0';
+  }
+
+  printk("Warning: Invalid boot CPU '%c'\n", c == 0 ? '?' : c);
+
+  return DEFAULT_BOOT_CPU;
+}
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/start/start.S 
b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S
index bb984189ba..af9107188f 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/start/start.S
+++ b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S
@@ -30,6 +30,7 @@

 #include 
 #include 
+#include 
 #include 
 
/* External symbols */
@@ -363,7 +364,7 @@ bsp_vector_table_copy_done:
bl  bsp_start_hook_1
 
/* Branch to boot card */
-   mov r0, #0
+   ldr r0, bsp_cmdline_location
bl  boot_card
 
 twiddle:
@@ -373,6 +374,9 @@ twiddle:
 
b   twiddle
 
+bsp_cmdline_location:
+   .word BSP_CMDLINE_LOCATION
+
 #elif defined(ARM_MULTILIB_ARCH_V7M)
 
 #include 
diff --git a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in 
b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in
index f37a62faed..ddc19c5097 100644
--- a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in
+++ b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in
@@ -1,7 +1,9 @@
 bsp_mmu_size = 16k;
+bsp_cmdline_size = 16k;
 
 MEMORY {
-  RAM (AIW) : ORIGIN = @TEGRA_BASE@, LENGTH = @MEMORY_SIZE@ - 
bsp_mmu_size
+  RAM (AIW) : ORIGIN = @TEGRA_BASE@, LENGTH = @MEMORY_SIZE@ - 
bsp_mmu_size - bsp_cmdline_size
+  CMD (AR)  : ORIGIN = @TEGRA_BASE@ + @MEMORY_SIZE@ - bsp_mmu_size - 
bsp_cmdline_size, LENGTH = bsp_cmdline_size
   RAM_MMU (AIW) : ORIGIN = @TEGRA_BASE@ + @MEMORY_SIZE@ - bsp_mmu_size, 
LENGTH = bsp_mmu_size
 }
 
-- 
2.13.3

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel