[PATCH 2/2] bsps/sparc: Add XtratuM BSP.
Christian Mauderer
Christian.Mauderer at embedded-brains.de
Thu May 22 12:53:05 UTC 2014
I noted the licensing problems. I think that despite that it is
interesting to solve the other points.
Am 21.05.2014 16:15, schrieb Joel Sherrill:
>
> On 5/21/2014 8:54 AM, Gedare Bloom wrote:
>> 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.
> Rather than resetting this discussion, there is some below and a comment on
> the README and general use here.
>
> The README says there are two environment variables. Why not configure
> time parameters? I thought that was how the other paravirtualization work
> was doing it.
>
I used the environment variables to set some flags and add a
bsp-post-link in the cfg-file of the BSP (xtratum.cfg). As far as I
know, there is no easy solution to use configure time parameters in this
file. Please correct me if I'm wrong.
> And is there anyway to test this BSP on anything other than real hardware?
I didn't really try hard to use a simulator. So as far as I can tell, it
only runs on real hardware.
>
> Obviously, it can't be built without xtratum installed. But that is 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.
>>
>> [...]
> Agreed. But I don't see any practical solution to this other than to assume
> that the interface file is provided by the virtualization engine. They
> own it.
> If the virtualization software changes its interface, then the .h would
> naturally update that way.
>
> We also have the issue of any library code the virtualization engine
> needs the BSP/app to link with. We had concerns that it may not
> be in the right format.
>
> I may be cynical here but I think the only practical solution is to
> assume that the virtualization engine's .h along with .o/.a files
> the BSP must link with are externally provided. This means that
> the BSP must account for them being in an incompatible format
> and at least provide a manual procedure or script to deal with
> that once.
>
> Since xtratum is GPL v2, I assume that puts it in the same bucket
> as the Pok work. We may have issues with the code on different
> hosts but if they are helpful, hopefully this can be addressed
> and testing can be automated on the buildbot instance.
>
> If we end up with code for a closed source hypervisor, then we
> have a different set of problems to face.
>
>
>
>>>>> 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.
>>
>> Gedare
>> _______________________________________________
>> rtems-devel mailing list
>> rtems-devel at rtems.org
>> http://www.rtems.org/mailman/listinfo/rtems-devel
>
--
--------------------------------------------
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