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.maude...@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.maude...@embedded-brains.de> wrote: >>>>> From: Christian Mauderer <christian.maude...@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@rtems.org >> http://www.rtems.org/mailman/listinfo/rtems-devel > -- -------------------------------------------- embedded brains GmbH Christian Mauderer Dornierstr. 4 D-82178 Puchheim Germany email: christian.maude...@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. _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel