[PATCH 2/2] bsps/sparc: Add XtratuM BSP.

Christian Mauderer Christian.Mauderer at embedded-brains.de
Thu May 22 12:19:35 UTC 2014



Am 21.05.2014 15:54, schrieb Gedare Bloom:
> On Wed, May 21, 2014 at 4:04 AM, Christian Mauderer
> <Christian.Mauderer at embedded-brains.de> wrote:
>> First of all: Thanks for your comments. You will find answers below.
>>
>> Am 20.05.2014 16:58, schrieb Gedare Bloom:
>>> On Tue, May 20, 2014 at 5:16 AM, Christian Mauderer
>>> <christian.mauderer at embedded-brains.de> wrote:
>>>> From: Christian Mauderer <Christian.Mauderer at embedded-brains.de>
>>>>
>>>> ---
>>>>  c/src/lib/libbsp/shared/include/fatal.h            |   6 +-
>>>>  c/src/lib/libbsp/sparc/acinclude.m4                |   2 +
>>>>  c/src/lib/libbsp/sparc/shared/irq_asm.S            |  97 ++++++++++++++++
>>>>  c/src/lib/libbsp/sparc/shared/start/start.S        |  58 +++++++++-
>>>>  .../lib/libbsp/sparc/shared/startup/linkcmds.base  |  19 ++++
>>>>  c/src/lib/libbsp/sparc/xtratum/Makefile.am         | 119 ++++++++++++++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/README              |   8 ++
>>>>  c/src/lib/libbsp/sparc/xtratum/bsp_specs           |  17 +++
>>>>  .../sparc/xtratum/clock/clock-xtratum-exec.c       |  23 ++++
>>>>  .../libbsp/sparc/xtratum/clock/clock-xtratum-hw.c  |  21 ++++
>>>>  .../lib/libbsp/sparc/xtratum/clock/clock-xtratum.h | 103 +++++++++++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/configure.ac        |  33 ++++++
>>>>  .../libbsp/sparc/xtratum/console/console-config.c  |  27 +++++
>>>>  .../libbsp/sparc/xtratum/console/printk-support.c  |  28 +++++
>>>>  .../sparc/xtratum/console/xtratum-hyper-console.c  |  71 ++++++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/include/bsp.h       |  52 +++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/include/cache_.h    | 113 +++++++++++++++++++
>>>>  .../sparc/xtratum/include/clock-xtratum-exec.h     |  26 +++++
>>>>  c/src/lib/libbsp/sparc/xtratum/include/irq.h       |   2 +
>>>>  c/src/lib/libbsp/sparc/xtratum/include/tm27.h      |  30 +++++
>>>>  .../sparc/xtratum/include/xtratum-hyper-console.h  |  30 +++++
>>>>  c/src/lib/libbsp/sparc/xtratum/include/xtratum.h   |  87 +++++++++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/irq/irq.c           |  77 +++++++++++++
>>>>  .../libbsp/sparc/xtratum/make/custom/xtratum.cfg   |  55 +++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/preinstall.am       | 123 +++++++++++++++++++++
>>>>  .../libbsp/sparc/xtratum/startup/bsppredriver.c    |   7 ++
>>>>  c/src/lib/libbsp/sparc/xtratum/startup/bspreset.c  |  52 +++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/startup/bspsmp.c    | 104 +++++++++++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/startup/bspstart.c  |  22 ++++
>>>>  .../libbsp/sparc/xtratum/startup/example_xm_cf.xml |  66 +++++++++++
>>>>  .../lib/libbsp/sparc/xtratum/startup/isr-en-dis.S  |  50 +++++++++
>>>>  .../libbsp/sparc/xtratum/startup/linkcmds.xtratum  |  20 ++++
>>>>  c/src/lib/libbsp/sparc/xtratum/startup/psr.c       |  26 +++++
>>>>  c/src/lib/libbsp/sparc/xtratum/startup/setvec.c    |  61 ++++++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/startup/spurious.c  |  35 ++++++
>>>>  c/src/lib/libbsp/sparc/xtratum/startup/tbr.c       |  30 +++++
>>>>  c/src/lib/libbsp/sparc/xtratum/xm/xmhdr.c          |  36 ++++++
>>>>  cpukit/score/cpu/sparc/rtems/score/cpu.h           |  11 +-
>>>>  testsuites/smptests/smpfatal08/init.c              |   3 +-
>>>>  39 files changed, 1735 insertions(+), 15 deletions(-)
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/Makefile.am
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/README
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/bsp_specs
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/clock/clock-xtratum-exec.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/clock/clock-xtratum-hw.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/clock/clock-xtratum.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/configure.ac
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/console/console-config.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/console/printk-support.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/console/xtratum-hyper-console.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/include/bsp.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/include/cache_.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/include/clock-xtratum-exec.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/include/irq.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/include/tm27.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/include/xtratum-hyper-console.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/include/xtratum.h
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/irq/irq.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/make/custom/xtratum.cfg
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/preinstall.am
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/bsppredriver.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/bspreset.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/bspsmp.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/bspstart.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/example_xm_cf.xml
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/isr-en-dis.S
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/linkcmds.xtratum
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/psr.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/setvec.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/spurious.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/startup/tbr.c
>>>>  create mode 100644 c/src/lib/libbsp/sparc/xtratum/xm/xmhdr.c
>>>>
>>>> diff --git a/c/src/lib/libbsp/shared/include/fatal.h b/c/src/lib/libbsp/shared/include/fatal.h
>>>> index e928bba..8ca90bb 100644
>>>> --- a/c/src/lib/libbsp/shared/include/fatal.h
>>>> +++ b/c/src/lib/libbsp/shared/include/fatal.h
>>>> @@ -101,7 +101,11 @@ typedef enum {
>>>>    PPC_FATAL_EXCEPTION_INITIALIZATION = BSP_FATAL_CODE_BLOCK(7),
>>>>
>>>>    /* Libchip fatal codes */
>>>> -  DWMAC_FATAL_TOO_MANY_RBUFS_CONFIGURED = BSP_FATAL_CODE_BLOCK(8)
>>>> +  DWMAC_FATAL_TOO_MANY_RBUFS_CONFIGURED = BSP_FATAL_CODE_BLOCK(8),
>>>> +
>>>> +  /* XtratuM fatal codes */
>>>> +  XTRATUM_FATAL_CLOCK_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(9),
>>>> +  XTRATUM_FATAL_CPU_SMP_INITIALIZE
>>>>  } bsp_fatal_code;
>>>>
>>>>  RTEMS_COMPILER_NO_RETURN_ATTRIBUTE static inline void
>>>> diff --git a/c/src/lib/libbsp/sparc/acinclude.m4 b/c/src/lib/libbsp/sparc/acinclude.m4
>>>> index 4d40305..0e053fa 100644
>>>> --- a/c/src/lib/libbsp/sparc/acinclude.m4
>>>> +++ b/c/src/lib/libbsp/sparc/acinclude.m4
>>>> @@ -8,6 +8,8 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR],
>>>>      AC_CONFIG_SUBDIRS([leon2]);;
>>>>    leon3 )
>>>>      AC_CONFIG_SUBDIRS([leon3]);;
>>>> +  xtratum )
>>>> +    AC_CONFIG_SUBDIRS([xtratum]);;
>>>>    *)
>>>>      AC_MSG_ERROR([Invalid BSP]);;
>>>>    esac
>>>> diff --git a/c/src/lib/libbsp/sparc/shared/irq_asm.S b/c/src/lib/libbsp/sparc/shared/irq_asm.S
>>>> index bf2dca9..69522a2 100644
>>>> --- a/c/src/lib/libbsp/sparc/shared/irq_asm.S
>>>> +++ b/c/src/lib/libbsp/sparc/shared/irq_asm.S
>>>> @@ -23,6 +23,10 @@
>>>>  #include <rtems/score/percpu.h>
>>>>  #include <bspopts.h>
>>>>
>>>> +#ifdef RTEMS_PARAVIRT_XTRATUM
>>>> +#include <xm.h>
>>> What is this header file? I don't see it in the commit, is it part of
>>> the installed XtratuM?
>>>
>>
>> That is correct. It's part of XtratuM. Is there some preferred way of
>> marking such headers?
>>
> Not that I know of. We have discussed a similar issue with the POK
> paravirtualization project. The problem is to allow external code
> linking to RTEMS. The design should be considered carefully and
> probably discussed in a separate thread.
> 
> [...]
> 
>>>> diff --git a/c/src/lib/libbsp/sparc/xtratum/startup/spurious.c b/c/src/lib/libbsp/sparc/xtratum/startup/spurious.c
>>>> new file mode 100644
>>>> index 0000000..2d4428a
>>>> --- /dev/null
>>>> +++ b/c/src/lib/libbsp/sparc/xtratum/startup/spurious.c
>>>> @@ -0,0 +1,35 @@
>>>> +/*
>>>> + *  LEON Spurious Trap Handler
>>>> + *
>>>> + *  This is just enough of a trap handler to let us know what
>>>> + *  the likely source of the trap was.
>>>> + *
>>>> + *  Developed as part of the port of RTEMS to the LEON implementation
>>>> + *  of the SPARC by On-Line Applications Research Corporation (OAR)
>>>> + *  under contract to the European Space Agency (ESA).
>>>> + *
>>>> + *  COPYRIGHT (c) 1995. European Space Agency.
>>>> + *
>>>> + *  Modified for LEON3 BSP.
>>>> + *  COPYRIGHT (c) 2004.
>>>> + *  Gaisler Research.
>>>> + *
>>>> + *  This terms of the RTEMS license apply to this file.
>>>> + */
>>>> +
>>>> +#include <bsp.h>
>>>> +#include <rtems/bspIo.h>
>>>> +
>>>> +void _BSP_Exception_frame_print( const CPU_Exception_frame *frame )
>>>> +{
>>>> +  uint32_t trap;
>>>> +  uint32_t real_trap;
>>>> +  const CPU_Interrupt_frame *isf;
>>>> +
>>>> +  trap = frame->trap;
>>>> +  real_trap = SPARC_REAL_TRAP_NUMBER(trap);
>>>> +  isf = frame->isf;
>>>> +
>>>> +  printk( "Unexpected trap (0x%02x) at address 0x%08x\n", real_trap, isf->tpc);
>>>> +}
>>>> +
>>> I don't think this code will get called ever?
>>>
>> The _BSP_Exception_frame_print of the sparc gets called by the
>> _CPU_Exception_frame_print. This again is called by
>> rtems_exception_frame_print which is called i.E. in the
>> bsp_fatal_extension or in spfatal26-test.
>>
> OK. It should get a more suitable file name e.g.
> bspexceptionframeprint.c. I realize the other sparc BSPs implemented
> it in spurious.c, but this BSP does not have a spurious exception
> handler, so it doesn't make a lot of sense to have spurious.c.
> 

Noted. I'll change it as soon as the licensing issue is solved.

> Gedare
> 

-- 
--------------------------------------------
embedded brains GmbH
Christian Mauderer
Dornierstr. 4
D-82178 Puchheim
Germany
email: christian.mauderer at embedded-brains.de
Phone: +49-89-18 94 741 - 18
Fax:   +49-89-18 94 741 - 08
PGP: Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the devel mailing list