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. > > 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.
[...] >>> 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