Committed but no build. Thanks. On 8/31/2014 6:29 PM, Hesham ALMatary wrote: > score/cpu/or1k: Add two new assembly functions: _CPU_Context_validate > and _CPU_Context_volatile_clobber; their implementation follows > corresponding ARM functions. > --- > cpukit/score/cpu/or1k/Makefile.am | 2 + > cpukit/score/cpu/or1k/or1k-context-validate.S | 186 > +++++++++++++++++++++ > .../score/cpu/or1k/or1k-context-volatile-clobber.S | 35 ++++ > cpukit/score/cpu/or1k/preinstall.am | 6 +- > 4 files changed, 226 insertions(+), 3 deletions(-) > create mode 100644 cpukit/score/cpu/or1k/or1k-context-validate.S > create mode 100644 cpukit/score/cpu/or1k/or1k-context-volatile-clobber.S > > diff --git a/cpukit/score/cpu/or1k/Makefile.am > b/cpukit/score/cpu/or1k/Makefile.am > index cb96856..b9e00d3 100644 > --- a/cpukit/score/cpu/or1k/Makefile.am > +++ b/cpukit/score/cpu/or1k/Makefile.am > @@ -24,6 +24,8 @@ libscorecpu_a_SOURCES = > libscorecpu_a_SOURCES += cpu.c > libscorecpu_a_SOURCES += or1k-context-switch.S > libscorecpu_a_SOURCES += or1k-context-initialize.c > +libscorecpu_a_SOURCES += or1k-context-validate.S > +libscorecpu_a_SOURCES += or1k-context-volatile-clobber.S > libscorecpu_a_SOURCES += or1k-exception-default.c > libscorecpu_a_SOURCES += or1k-exception-frame-print.c > libscorecpu_a_SOURCES += or1k-exception-handler-low.S > diff --git a/cpukit/score/cpu/or1k/or1k-context-validate.S > b/cpukit/score/cpu/or1k/or1k-context-validate.S > new file mode 100644 > index 0000000..463cc77 > --- /dev/null > +++ b/cpukit/score/cpu/or1k/or1k-context-validate.S > @@ -0,0 +1,186 @@ > +/* > + * COPYRIGHT (c) 2014 Hesham ALMatary <heshamelmat...@gmail.com> > + * > + * 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. > + */ > + > +#ifdef HAVE_CONFIG_H > + #include "config.h" > +#endif > + > +#include <rtems/asm.h> > +#include <rtems/score/cpu.h> > + > +.section .text > + > +PUBLIC(_CPU_Context_validate) > +SYM(_CPU_Context_validate): > + > + l.addi r1, r1, -140 > + > + l.sw 8(r1), r2 > + l.sw 12(r1), r3 > + l.sw 16(r1), r4 > + l.sw 20(r1), r5 > + l.sw 24(r1), r6 > + l.sw 28(r1), r7 > + l.sw 32(r1), r8 > + l.sw 36(r1), r9 > + l.sw 40(r1), r10 > + l.sw 44(r1), r11 > + l.sw 48(r1), r12 > + l.sw 52(r1), r13 > + l.sw 56(r1), r14 > + l.sw 60(r1), r15 > + l.sw 64(r1), r16 > + l.sw 68(r1), r17 > + l.sw 72(r1), r18 > + l.sw 76(r1), r19 > + l.sw 80(r1), r20 > + l.sw 84(r1), r21 > + l.sw 88(r1), r22 > + l.sw 92(r1), r23 > + l.sw 96(r1), r24 > + l.sw 100(r1), r25 > + l.sw 104(r1), r26 > + l.sw 108(r1), r27 > + l.sw 112(r1), r28 > + l.sw 116(r1), r29 > + l.sw 120(r1), r30 > + l.sw 124(r1), r31 > + > + /* Fill */ > + > + /* r13 is used for temporary values */ > + l.add r13, r0, r0 > + > + /* r31 contains the stack pointer */ > + l.add r31, r1, r0 > + > +.macro fill_register reg > + l.addi r13, r13, 1 > + l.addi \reg, r13, 0 > +.endm > + > + fill_register r2 > + fill_register r3 > + fill_register r4 > + fill_register r5 > + fill_register r6 > + fill_register r7 > + fill_register r8 > + fill_register r9 > + fill_register r10 > + fill_register r11 > + fill_register r12 > + fill_register r13 > + fill_register r14 > + fill_register r15 > + fill_register r16 > + fill_register r17 > + fill_register r18 > + fill_register r19 > + fill_register r20 > + fill_register r21 > + fill_register r22 > + fill_register r23 > + fill_register r24 > + fill_register r25 > + fill_register r26 > + fill_register r27 > + fill_register r28 > + fill_register r29 > + fill_register r30 > + fill_register r31 > + > + /* Check */ > +check: > + > +.macro check_register reg > + l.addi r13, r13, 1 > + l.sfne \reg, r13 > + l.bf restore > + l.nop > +.endm > + > + l.sfne r31, r1 > + l.bf restore > + l.nop > + > + l.addi r13, r0, 0 > + > + check_register r2 > + check_register r3 > + check_register r4 > + check_register r5 > + check_register r6 > + check_register r7 > + check_register r8 > + check_register r9 > + check_register r10 > + check_register r11 > + check_register r12 > + check_register r13 > + check_register r14 > + check_register r15 > + check_register r16 > + check_register r17 > + check_register r18 > + check_register r19 > + check_register r20 > + check_register r21 > + check_register r22 > + check_register r23 > + check_register r24 > + check_register r25 > + check_register r26 > + check_register r27 > + check_register r28 > + check_register r29 > + check_register r30 > + check_register r31 > + > + l.j check > + l.nop > + > +/* Restore */ > +restore: > + > + l.lwz r2, 8(r1) > + l.lwz r3, 12(r1) > + l.lwz r4, 16(r1) > + l.lwz r5, 20(r1) > + l.lwz r6, 24(r1) > + l.lwz r7, 28(r1) > + l.lwz r8, 32(r1) > + l.lwz r9, 36(r1) > + l.lwz r10, 40(r1) > + l.lwz r11, 44(r1) > + l.lwz r12, 48(r1) > + l.lwz r13, 52(r1) > + l.lwz r14, 56(r1) > + l.lwz r15, 60(r1) > + l.lwz r16, 64(r1) > + l.lwz r17, 68(r1) > + l.lwz r18, 72(r1) > + l.lwz r19, 76(r1) > + l.lwz r20, 80(r1) > + l.lwz r21, 84(r1) > + l.lwz r22, 88(r1) > + l.lwz r23, 92(r1) > + l.lwz r24, 96(r1) > + l.lwz r25, 100(r1) > + l.lwz r26, 104(r1) > + l.lwz r27, 108(r1) > + l.lwz r28, 112(r1) > + l.lwz r29, 116(r1) > + l.lwz r30, 120(r1) > + l.lwz r31, 124(r1) > + > + l.addi r1, r1, 140 > + > + l.jr r9 > + l.nop > + > diff --git a/cpukit/score/cpu/or1k/or1k-context-volatile-clobber.S > b/cpukit/score/cpu/or1k/or1k-context-volatile-clobber.S > new file mode 100644 > index 0000000..304b769 > --- /dev/null > +++ b/cpukit/score/cpu/or1k/or1k-context-volatile-clobber.S > @@ -0,0 +1,35 @@ > +/* > + * COPYRIGHT (c) 2014 Hesham ALMatary <heshamelmat...@gmail.com> > + * > + * 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. > + */ > + > +#ifdef HAVE_CONFIG_H > + #include "config.h" > +#endif > + > +#include <rtems/asm.h> > + > +.section .text > + > +PUBLIC(_CPU_Context_volatile_clobber) > +SYM(_CPU_Context_volatile_clobber): > + > +.macro clobber_register reg > + l.addi r0, r0, -1 > + l.addi \reg, r0, 0 > +.endm > + > + clobber_register r3 > + clobber_register r4 > + clobber_register r5 > + clobber_register r6 > + clobber_register r7 > + clobber_register r8 > + clobber_register r13 > + clobber_register r31 > + > + l.jr r9 > + l.nop > diff --git a/cpukit/score/cpu/or1k/preinstall.am > b/cpukit/score/cpu/or1k/preinstall.am > index f4d7153..01cd68f 100644 > --- a/cpukit/score/cpu/or1k/preinstall.am > +++ b/cpukit/score/cpu/or1k/preinstall.am > @@ -5,14 +5,14 @@ $(srcdir)/preinstall.am: Makefile.am > $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am > endif > > -PREINSTALL_DIRS = > -DISTCLEANFILES += $(PREINSTALL_DIRS) > - > all-am: $(PREINSTALL_FILES) > > PREINSTALL_FILES = > CLEANFILES += $(PREINSTALL_FILES) > > +PREINSTALL_DIRS = > +DISTCLEANFILES += $(PREINSTALL_DIRS) > + > $(PROJECT_INCLUDE)/rtems/$(dirstamp): > @$(MKDIR_P) $(PROJECT_INCLUDE)/rtems > @: > $(PROJECT_INCLUDE)/rtems/$(dirstamp)
-- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel