summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-07-03 07:46:24 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-07-05 18:05:25 +0200
commit401b237f9349362b40e3c08f7fd8db38fc51c5d4 (patch)
tree39802344a64c2f9febe86b01bc21b8459567f276 /cpukit
parentbsps/powerpc: Remove obsolete BSPs (diff)
downloadrtems-401b237f9349362b40e3c08f7fd8db38fc51c5d4.tar.bz2
epiphany: Remove support for this target
Due to an unmaintained toolchain (internal errors in GCC, no FSF GDB integration) the Epiphany architecture was obsoleted in RTEMS 5.1. Update #3941.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/Makefile.am13
-rw-r--r--cpukit/aclocal/check-networking.m44
-rw-r--r--cpukit/configure.ac1
-rw-r--r--cpukit/score/cpu/epiphany/cpu.c87
-rw-r--r--cpukit/score/cpu/epiphany/epiphany-context-initialize.c66
-rw-r--r--cpukit/score/cpu/epiphany/epiphany-context-switch.S215
-rw-r--r--cpukit/score/cpu/epiphany/epiphany-exception-handler.S304
-rw-r--r--cpukit/score/cpu/epiphany/headers.am8
-rw-r--r--cpukit/score/cpu/epiphany/include/rtems/asm.h120
-rw-r--r--cpukit/score/cpu/epiphany/include/rtems/score/cpu.h614
-rw-r--r--cpukit/score/cpu/epiphany/include/rtems/score/cpu_asm.h74
-rw-r--r--cpukit/score/cpu/epiphany/include/rtems/score/cpuatomic.h14
-rw-r--r--cpukit/score/cpu/epiphany/include/rtems/score/cpuimpl.h67
-rw-r--r--cpukit/score/cpu/epiphany/include/rtems/score/epiphany-utility.h180
-rw-r--r--cpukit/score/cpu/epiphany/include/rtems/score/epiphany.h64
-rw-r--r--cpukit/score/cpu/epiphany/setjmp.S69
16 files changed, 0 insertions, 1900 deletions
diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
index 51f38c84c7..abf18d176f 100644
--- a/cpukit/Makefile.am
+++ b/cpukit/Makefile.am
@@ -1591,19 +1591,6 @@ librtemscpu_a_SOURCES += score/cpu/no_cpu/cpucounterread.c
endif
-if CPU_EPIPHANY
-
-include $(srcdir)/score/cpu/epiphany/headers.am
-
-librtemscpu_a_SOURCES += score/cpu/epiphany/cpu.c
-librtemscpu_a_SOURCES += score/cpu/epiphany/epiphany-context-initialize.c
-librtemscpu_a_SOURCES += score/cpu/epiphany/epiphany-context-switch.S
-librtemscpu_a_SOURCES += score/cpu/epiphany/epiphany-exception-handler.S
-librtemscpu_a_SOURCES += score/cpu/epiphany/setjmp.S
-librtemscpu_a_SOURCES += score/cpu/no_cpu/cpucounterfrequency.c
-
-endif
-
if CPU_I386
include $(srcdir)/score/cpu/i386/headers.am
diff --git a/cpukit/aclocal/check-networking.m4 b/cpukit/aclocal/check-networking.m4
index 38bc844468..7f38875dc6 100644
--- a/cpukit/aclocal/check-networking.m4
+++ b/cpukit/aclocal/check-networking.m4
@@ -9,10 +9,6 @@ AC_CACHE_CHECK([whether CPU supports networking],
rtems_cv_HAS_NETWORKING,
[dnl
case "$host" in
- # do not have address space to hold BSD TCP/IP stack
- epiphany*)
- rtems_cv_HAS_NETWORKING="no"
- ;;
# Newer architecture ports that should only use new TCP/IP stack
x86_64*)
rtems_cv_HAS_NETWORKING="no"
diff --git a/cpukit/configure.ac b/cpukit/configure.ac
index 34b94a047c..16213d977c 100644
--- a/cpukit/configure.ac
+++ b/cpukit/configure.ac
@@ -359,7 +359,6 @@ AC_MSG_RESULT([$HAVE_LIBDRVMGR])
AM_CONDITIONAL([CPU_ARM],[test $RTEMS_CPU = "arm"])
AM_CONDITIONAL([CPU_BFIN],[test $RTEMS_CPU = "bfin"])
-AM_CONDITIONAL([CPU_EPIPHANY],[test $RTEMS_CPU = "epiphany"])
AM_CONDITIONAL([CPU_I386],[test $RTEMS_CPU = "i386"])
AM_CONDITIONAL([CPU_LM32],[test $RTEMS_CPU = "lm32"])
AM_CONDITIONAL([CPU_M68K],[test $RTEMS_CPU = "m68k"])
diff --git a/cpukit/score/cpu/epiphany/cpu.c b/cpukit/score/cpu/epiphany/cpu.c
deleted file mode 100644
index d025d92a6e..0000000000
--- a/cpukit/score/cpu/epiphany/cpu.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Epiphany CPU Dependent Source
- *
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- * COPYRIGHT (c) 1989-1999.
- * On-Line Applications Research Corporation (OAR).
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <rtems/score/cpu.h>
-
-void _init(void);
-void _fini(void);
-
-void _init(void)
-{
-}
-
-void _fini(void)
-{
-}
-
-void _CPU_Exception_frame_print (const CPU_Exception_frame *ctx)
-{
- /* Do nothing */
-}
-/**
- * @brief Performs processor dependent initialization.
- */
-void _CPU_Initialize(void)
-{
- /* Do nothing */
-}
-
-void _CPU_ISR_Set_level(uint32_t level)
-{
- /* Do nothing */
-}
-
-uint32_t _CPU_ISR_Get_level( void )
-{
- /* Do nothing */
- return 0;
-}
-
-CPU_Counter_ticks _CPU_Counter_read( void )
-{
- static CPU_Counter_ticks counter;
-
- CPU_Counter_ticks snapshot;
-
- snapshot = counter;
- counter = snapshot + 1;
-
- return snapshot;
-}
-
-void *_CPU_Thread_Idle_body( uintptr_t ignored )
-{
- do {
- __asm__ __volatile__ ("idle");
- } while (1);
-
- return NULL;
-}
diff --git a/cpukit/score/cpu/epiphany/epiphany-context-initialize.c b/cpukit/score/cpu/epiphany/epiphany-context-initialize.c
deleted file mode 100644
index c43d502029..0000000000
--- a/cpukit/score/cpu/epiphany/epiphany-context-initialize.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- * COPYRIGHT (c) 1989-2006.
- * On-Line Applications Research Corporation (OAR).
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-
-#include <rtems/score/cpu.h>
-#include <rtems/score/interr.h>
-
-void _CPU_Context_Initialize(
- Context_Control *context,
- void *stack_area_begin,
- size_t stack_area_size,
- uint32_t new_level,
- void (*entry_point)( void ),
- bool is_fp,
- void *tls_area
-)
-{
- uintptr_t stack = ((uintptr_t) stack_area_begin);
- uint32_t sr, iret;
-
- /* Account for red-zone */
- uintptr_t stack_high = stack + stack_area_size - EPIPHANY_GCC_RED_ZONE_SIZE;
-
- asm volatile ("movfs %0, status \n" : "=r" (sr):);
- asm volatile ("movfs %0, iret \n" : "=r" (iret):);
-
- memset(context, 0, sizeof(*context));
-
- context->r[11] = stack_high;
- context->r[13] = stack_high;
- context->r[14] = (uintptr_t) entry_point;
- context->status = sr;
- context->iret = iret;
-}
diff --git a/cpukit/score/cpu/epiphany/epiphany-context-switch.S b/cpukit/score/cpu/epiphany/epiphany-context-switch.S
deleted file mode 100644
index 8c530651c3..0000000000
--- a/cpukit/score/cpu/epiphany/epiphany-context-switch.S
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Epiphany CPU Dependent Source
- *
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/asm.h>
-
-.section .text,"ax"
-.align 4
-
-PUBLIC(_CPU_Context_switch)
-PUBLIC(_CPU_Context_restore)
-PUBLIC(_CPU_Context_restore_fp)
-PUBLIC(_CPU_Context_save_fp)
-
-SYM(_CPU_Context_switch):
- /* Disable interrupts and store all registers */
- gid
-
- str r0, [r0]
- str r1, [r0,1]
- str r2, [r0,2]
- str r3, [r0,3]
- str r4, [r0,4]
- str r5, [r0,5]
- str r6, [r0,6]
- str r7, [r0,7]
- str r8, [r0,8]
- str r9, [r0,9]
- str r10, [r0,10]
- str fp, [r0,11]
- str r12, [r0,12]
- str sp, [r0,13]
- str lr, [r0,14]
- str r15, [r0,15]
- str r16, [r0,16]
- str r17, [r0,17]
- str r18, [r0,18]
- str r19, [r0,19]
- str r20, [r0,20]
- str r21, [r0,21]
- str r22, [r0,22]
- str r23, [r0,23]
- str r24, [r0,24]
- str r25, [r0,25]
- str r26, [r0,26]
- str r27, [r0,27]
- str r28, [r0,28]
- str r29, [r0,29]
- str r30, [r0,30]
- str r31, [r0,31]
- str r32, [r0,32]
- str r33, [r0,33]
- str r34, [r0,34]
- str r35, [r0,35]
- str r36, [r0,36]
- str r37, [r0,37]
- str r38, [r0,38]
- str r39, [r0,39]
- str r40, [r0,40]
- str r41, [r0,41]
- str r42, [r0,42]
- str r43, [r0,43]
- str r44, [r0,44]
- str r45, [r0,45]
- str r46, [r0,46]
- str r47, [r0,47]
- str r48, [r0,48]
- str r49, [r0,49]
- str r50, [r0,50]
- str r51, [r0,51]
- str r52, [r0,52]
- str r53, [r0,53]
- str r54, [r0,54]
- str r55, [r0,55]
- str r56, [r0,56]
- str r57, [r0,57]
- str r58, [r0,58]
- str r59, [r0,59]
- str r60, [r0,60]
- str r61, [r0,61]
- str r62, [r0,62]
- str r63, [r0,63]
-
- /* Store status register */
- movfs r27, status
- str r27, [r0,64]
-
- /* Store config register */
- movfs r27, config
- str r27, [r0,65]
-
- /* Store interrupt return address register */
- movfs r27, iret
- str r27, [r0,66]
-
-.Lrestore:
-
- /* r1 contains buffer address, skip it */
- ldr r2, [r1,2]
- ldr r3, [r1,3]
- ldr r4, [r1,4]
- ldr r5, [r1,5]
- ldr r6, [r1,6]
- ldr r7, [r1,7]
- ldr r8, [r1,8]
- ldr r9, [r1,9]
- ldr r10, [r1,10]
- ldr fp, [r1,11]
- ldr r12, [r1,12]
- ldr sp, [r1,13]
- ldr lr, [r1,14]
- ldr r15, [r1,15]
- ldr r16, [r1,16]
- ldr r17, [r1,17]
- ldr r18, [r1,18]
- ldr r19, [r1,19]
- ldr r20, [r1,20]
- ldr r21, [r1,21]
- ldr r22, [r1,22]
- ldr r23, [r1,23]
- ldr r24, [r1,24]
- ldr r25, [r1,25]
- ldr r26, [r1,26]
- ldr r27, [r1,27]
- ldr r32, [r1,32]
- ldr r33, [r1,33]
- ldr r34, [r1,34]
- ldr r35, [r1,35]
- ldr r36, [r1,36]
- ldr r37, [r1,37]
- ldr r38, [r1,38]
- ldr r39, [r1,39]
- ldr r40, [r1,40]
- ldr r41, [r1,41]
- ldr r42, [r1,42]
- ldr r43, [r1,43]
- ldr r44, [r1,44]
- ldr r45, [r1,45]
- ldr r46, [r1,46]
- ldr r47, [r1,47]
- ldr r48, [r1,48]
- ldr r49, [r1,49]
- ldr r50, [r1,50]
- ldr r51, [r1,51]
- ldr r52, [r1,52]
- ldr r53, [r1,53]
- ldr r54, [r1,54]
- ldr r55, [r1,55]
- ldr r56, [r1,56]
- ldr r57, [r1,57]
- ldr r58, [r1,58]
- ldr r59, [r1,59]
- ldr r60, [r1,60]
- ldr r61, [r1,61]
- ldr r62, [r1,62]
- ldr r63, [r1,63]
-
- /* Load status register */
- ldr r0, [r1,64]
- movts status, r0
-
- /* Load config register */
- ldr r0, [r1,65]
- movts config, r0
-
- /* Load interrupt return address register */
- ldr r0,[r1,66]
- movts iret, r0
-
- ldr r0,[r1]
- ldr r1,[r1,1]
-
- /* Enable interrupts and return */
- gie
- jr lr
-
-SYM(_CPU_Context_restore):
- mov r1, r0
- b .Lrestore
- nop
-
-/* No FP support for Epiphany yet */
-SYM(_CPU_Context_restore_fp):
- nop
-
- SYM(_CPU_Context_save_fp):
- nop
diff --git a/cpukit/score/cpu/epiphany/epiphany-exception-handler.S b/cpukit/score/cpu/epiphany/epiphany-exception-handler.S
deleted file mode 100644
index f4fd1d1ff9..0000000000
--- a/cpukit/score/cpu/epiphany/epiphany-exception-handler.S
+++ /dev/null
@@ -1,304 +0,0 @@
-/**
- * @file
- *
- * @addtogroup RTEMSScoreCPU
- *
- * @brief Epiphany exception support implementation.
- */
-
-/*
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/score/cpu.h>
-
-#include <rtems/asm.h>
-#include <rtems/score/percpu.h>
-
-EXTERN(bsp_start_vector_table_begin)
-EXTERN(_Thread_Dispatch)
-PUBLIC(_ISR_Handler)
-
-.section .text, "ax"
-.align 4
-TYPE_FUNC(_ISR_Handler)
-SYM(_ISR_Handler):
- /* Reserve space for CPU_Exception_frame */
- sub sp, sp, #(CPU_EXCEPTION_FRAME_SIZE)
-
- str r0, [sp]
- str r1, [sp,1]
- str r2, [sp,2]
- str r3, [sp,3]
- str r4, [sp,4]
- str r5, [sp,5]
- str r6, [sp,6]
- str r7, [sp,7]
- str r8, [sp,8]
- str r9, [sp,9]
- str r10, [sp,10]
- str fp, [sp,11]
- str r12, [sp,12]
-
- /* Save interrupted task stack pointer */
- add r1, sp, #(CPU_EXCEPTION_FRAME_SIZE + 8)
- str r1,[sp,13]
-
- str lr, [sp,14]
- str r15, [sp,15]
- str r16, [sp,16]
- str r17, [sp,17]
- str r18, [sp,18]
- str r19, [sp,19]
- str r20, [sp,20]
- str r21, [sp,21]
- str r22, [sp,22]
- str r23, [sp,23]
- str r24, [sp,24]
- str r25, [sp,25]
- str r26, [sp,26]
- str r27, [sp,27]
- str r28, [sp,28]
- str r29, [sp,29]
- str r30, [sp,30]
- str r31, [sp,31]
- str r32, [sp,32]
- str r33, [sp,33]
- str r34, [sp,34]
- str r35, [sp,35]
- str r36, [sp,36]
- str r37, [sp,37]
- str r38, [sp,38]
- str r39, [sp,39]
- str r40, [sp,40]
- str r41, [sp,41]
- str r42, [sp,42]
- str r43, [sp,43]
- str r44, [sp,44]
- str r45, [sp,45]
- str r46, [sp,46]
- str r47, [sp,47]
- str r48, [sp,48]
- str r49, [sp,49]
- str r50, [sp,50]
- str r51, [sp,51]
- str r52, [sp,52]
- str r53, [sp,53]
- str r54, [sp,54]
- str r55, [sp,55]
- str r56, [sp,56]
- str r57, [sp,57]
- str r58, [sp,58]
- str r59, [sp,59]
- str r60, [sp,60]
- str r61, [sp,61]
- /* r62 and r63 are saved from start.S interrupt entry
- * and hold vector number and _ISR_Handler address repsectively.
- */
-
- /* Save status register */
- movfs r1,status
- str r1, [sp,62]
-
- /* Save config register */
- movfs r1,config
- str r1, [sp,63]
-
- /* Save interrupt return address register */
- movfs r1,iret
- str r1, [sp,64]
-
- mov r33, %low(_Per_CPU_Information)
- movt r33, %high(_Per_CPU_Information)
-
- add r6, r33, #(PER_CPU_ISR_NEST_LEVEL)
- add r8, r33, #(PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL)
-
- /* Increment nesting level and disable thread dispatch */
- ldr r5, [r6]
- ldr r7, [r8]
- add r5, r5, #1
- add r7, r7, #1
- str r5, [r6]
- str r7, [r8]
-
- /* Keep sp (Exception frame address) in r32 - Callee saved */
- mov r32, sp
-
- /* Keep _Per_CPU_Information address in r33 - Callee saved */
- mov r33, r18
-
- /* Call the exception handler from vector table.
- * First function arg for C handler is vector number,
- * and the second is a pointer to exception frame.
- */
- mov r0, r62
- mov r1, sp
-
- mov r27, r62
- lsl r27, r27, #2
- mov r26, %low(bsp_start_vector_table_begin)
- movt r15, #0
- add r27, r27, r26
- ldr r27, [r27]
-
- /* Do not switch stacks if we are in a nested interrupt. At
- * this point r5 should be holding ISR_NEST_LEVEL value.
- */
- sub r37, r5, #1
- bgtu jump_to_c_handler
-
- /* Switch to RTEMS dedicated interrupt stack */
- add sp, r18, #(PER_CPU_INTERRUPT_STACK_HIGH)
- ldr sp, [sp]
-
-jump_to_c_handler:
- jalr r27
-
- /* Switch back to the interrupted task stack */
- mov sp, r32
-
- /* Get the address of _Per_CPU_Information */
- mov r18, r33
-
- /* Decrement nesting level and enable multitasking */
- add r6, r18, #(PER_CPU_ISR_NEST_LEVEL)
- add r8, r18, #(PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL)
-
- ldr r5, [r6]
- ldr r7, [r8]
- sub r5, r5, #1
- sub r7, r7, #1
- str r5, [r6]
- str r7, [r8]
-
- /* Check if _ISR_Nest_level > 0 */
- sub r37, r5, #0
- bgtu exception_frame_restore
-
- /* Check if _Thread_Dispatch_disable_level > 0 */
- sub r37, r7, #0
- bgtu exception_frame_restore
-
- /* Check if dispatch needed */
- add r31, r18, #(PER_CPU_DISPATCH_NEEDED)
- ldr r31, [r31]
-
- sub r35, r31, #0
- beq exception_frame_restore
-
- mov r35, %low(_Thread_Dispatch)
- movt r35, %high(_Thread_Dispatch)
- jalr r35
-
-exception_frame_restore:
-
- ldr r1, [sp,1]
- ldr r2, [sp,2]
- ldr r3, [sp,3]
- ldr r4, [sp,4]
- ldr r5, [sp,5]
- ldr r6, [sp,6]
- ldr r7, [sp,7]
- ldr r8, [sp,8]
- ldr r9, [sp,9]
- ldr r10, [sp,10]
- ldr fp, [sp,11]
- ldr r12, [sp,12]
- ldr lr, [sp,14]
- ldr r15, [sp,15]
- ldr r16, [sp,16]
- ldr r17, [sp,17]
- ldr r18, [sp,18]
- ldr r19, [sp,19]
- ldr r20, [sp,20]
- ldr r21, [sp,21]
- ldr r22, [sp,22]
- ldr r23, [sp,23]
- ldr r24, [sp,24]
- ldr r25, [sp,25]
- ldr r26, [sp,26]
- ldr r27, [sp,27]
- ldr r28, [sp,28]
- ldr r29, [sp,29]
- ldr r30, [sp,30]
- ldr r31, [sp,31]
- ldr r32, [sp,32]
- ldr r34, [sp,34]
- ldr r36, [sp,36]
- ldr r38, [sp,38]
- ldr r39, [sp,39]
- ldr r40, [sp,40]
- ldr r41, [sp,41]
- ldr r42, [sp,42]
- ldr r43, [sp,43]
- ldr r44, [sp,44]
- ldr r45, [sp,45]
- ldr r46, [sp,46]
- ldr r47, [sp,47]
- ldr r48, [sp,48]
- ldr r49, [sp,49]
- ldr r50, [sp,50]
- ldr r51, [sp,51]
- ldr r52, [sp,52]
- ldr r53, [sp,53]
- ldr r54, [sp,54]
- ldr r55, [sp,55]
- ldr r56, [sp,56]
- ldr r57, [sp,57]
- ldr r58, [sp,58]
- ldr r59, [sp,59]
- ldr r60, [sp,60]
- ldr r61, [sp,61]
-
- /* Restore status register */
- ldr r0,[sp,62]
- movts status, r0
-
- /* Restore config register */
- ldr r0, [sp,63]
- movts config, r0
-
- /* Restore interrupt return address register */
- ldr r0, [sp,64]
- movts iret, r0
-
- ldr r0,[sp]
-
- /* Restore interrupted task's stack pointer */
- ldr sp, [sp,13]
-
- /* r62 and r63 are saved from start.S interrupt entry
- * and hold vector number and _ISR_Handler address repsectively.
- */
- ldr r62, [sp, -8]
- ldr r63, [sp, -4]
-
- /* return from interrupt */
- rti
diff --git a/cpukit/score/cpu/epiphany/headers.am b/cpukit/score/cpu/epiphany/headers.am
deleted file mode 100644
index d5ba2394d9..0000000000
--- a/cpukit/score/cpu/epiphany/headers.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## This file was generated by "./boostrap -H".
-include_rtems_HEADERS += score/cpu/epiphany/include/rtems/asm.h
-include_rtems_score_HEADERS += score/cpu/epiphany/include/rtems/score/cpu.h
-include_rtems_score_HEADERS += score/cpu/epiphany/include/rtems/score/cpu_asm.h
-include_rtems_score_HEADERS += score/cpu/epiphany/include/rtems/score/cpuatomic.h
-include_rtems_score_HEADERS += score/cpu/epiphany/include/rtems/score/cpuimpl.h
-include_rtems_score_HEADERS += score/cpu/epiphany/include/rtems/score/epiphany-utility.h
-include_rtems_score_HEADERS += score/cpu/epiphany/include/rtems/score/epiphany.h
diff --git a/cpukit/score/cpu/epiphany/include/rtems/asm.h b/cpukit/score/cpu/epiphany/include/rtems/asm.h
deleted file mode 100644
index 219ed81846..0000000000
--- a/cpukit/score/cpu/epiphany/include/rtems/asm.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * @file
- *
- * This include file attempts to address the problems
- * caused by incompatible flavors of assemblers and
- * toolsets. It primarily addresses variations in the
- * use of leading underscores on symbols and the requirement
- * that register names be preceded by a %.
- */
-
-/*
- * NOTE: The spacing in the use of these macros
- * is critical to them working as advertised.
- *
- * This file is based on similar code found in newlib available
- * from ftp.cygnus.com. The file which was used had no copyright
- * notice. This file is freely distributable as long as the source
- * of the file is noted. This file is:
- *
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- *
- * COPYRIGHT (c) 1994-1997.
- * On-Line Applications Research Corporation (OAR).
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef __EPIPHANY_ASM_H
-#define __EPIPHANY_ASM_H
-
-/*
- * Indicate we are in an assembly file and get the basic CPU definitions.
- */
-
-#ifndef ASM
-#define ASM
-#endif
-#include <rtems/score/cpuopts.h>
-#include <rtems/score/epiphany.h>
-
-/*
- * Recent versions of GNU cpp define variables which indicate the
- * need for underscores and percents. If not using GNU cpp or
- * the version does not support this, then you will obviously
- * have to define these as appropriate.
- */
-
-#ifndef __USER_LABEL_PREFIX__
-#define __USER_LABEL_PREFIX__ _
-#endif
-
-#ifndef __REGISTER_PREFIX__
-#define __REGISTER_PREFIX__
-#endif
-
-/* ANSI concatenation macros. */
-
-#define CONCAT1(a, b) CONCAT2(a, b)
-#define CONCAT2(a, b) a ## b
-
-/* Use the right prefix for global labels. */
-
-#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
-
-/* Use the right prefix for registers. */
-
-#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
-
-/*
- * define macros for all of the registers on this CPU
- *
- * EXAMPLE: #define d0 REG (d0)
- */
-
-/*
- * Define macros to handle section beginning and ends.
- */
-#define BEGIN_CODE_DCL .text
-#define END_CODE_DCL
-#define BEGIN_DATA_DCL .data
-#define END_DATA_DCL
-#define BEGIN_CODE .text
-#define END_CODE
-#define BEGIN_DATA
-#define END_DATA
-#define BEGIN_BSS
-#define END_BSS
-#define END
-
-/*
- * Following must be tailor for a particular flavor of the C compiler.
- * They may need to put underscores in front of the symbols.
- */
-
-#define PUBLIC(sym) .global SYM (sym)
-#define EXTERN(sym) .extern SYM (sym)
-#define TYPE_FUNC(sym) .type SYM (sym), %function
-
-#endif
diff --git a/cpukit/score/cpu/epiphany/include/rtems/score/cpu.h b/cpukit/score/cpu/epiphany/include/rtems/score/cpu.h
deleted file mode 100644
index 70a9790606..0000000000
--- a/cpukit/score/cpu/epiphany/include/rtems/score/cpu.h
+++ /dev/null
@@ -1,614 +0,0 @@
-/**
- * @file
- */
-
-/*
- *
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- * COPYRIGHT (c) 1989-1999.
- * On-Line Applications Research Corporation (OAR).
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _EPIPHANY_CPU_H
-#define _EPIPHANY_CPU_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtems/score/basedefs.h>
-#include <rtems/score/epiphany.h> /* pick up machine definitions */
-#ifndef ASM
-#include <rtems/bspIo.h>
-#include <stdint.h>
-#include <stdio.h> /* for printk */
-#endif
-
-/**
- * @addtogroup RTEMSScoreCPUEpiphany
- */
-/**@{**/
-
-/* conditional compilation parameters */
-
-/*
- * Does the RTEMS invoke the user's ISR with the vector number and
- * a pointer to the saved interrupt frame (1) or just the vector
- * number (0)?
- *
- */
-
-#define CPU_ISR_PASSES_FRAME_POINTER TRUE
-
-#define CPU_HARDWARE_FP FALSE
-
-#define CPU_SOFTWARE_FP FALSE
-
-#define CPU_ALL_TASKS_ARE_FP FALSE
-
-#define CPU_IDLE_TASK_IS_FP FALSE
-
-#define CPU_USE_DEFERRED_FP_SWITCH FALSE
-
-#define CPU_ENABLE_ROBUST_THREAD_DISPATCH FALSE
-
-/*
- * Does the stack grow up (toward higher addresses) or down
- * (toward lower addresses)?
- *
- * If TRUE, then the grows upward.
- * If FALSE, then the grows toward smaller addresses.
- *
- */
-
-#define CPU_STACK_GROWS_UP FALSE
-
-/* FIXME: Is this the right value? */
-#define CPU_CACHE_LINE_BYTES 64
-
-#define CPU_STRUCTURE_ALIGNMENT RTEMS_ALIGNED( CPU_CACHE_LINE_BYTES )
-
-/*
- * The following defines the number of bits actually used in the
- * interrupt field of the task mode. How those bits map to the
- * CPU interrupt levels is defined by the routine _CPU_ISR_Set_level().
- *
- */
-
-#define CPU_MODES_INTERRUPT_MASK 0x00000001
-
-/*
- * Processor defined structures required for cpukit/score.
- */
-
-/*
- * Contexts
- *
- * Generally there are 2 types of context to save.
- * 1. Interrupt registers to save
- * 2. Task level registers to save
- *
- * This means we have the following 3 context items:
- * 1. task level context stuff:: Context_Control
- * 2. floating point task stuff:: Context_Control_fp
- * 3. special interrupt level context :: Context_Control_interrupt
- *
- * On some processors, it is cost-effective to save only the callee
- * preserved registers during a task context switch. This means
- * that the ISR code needs to save those registers which do not
- * persist across function calls. It is not mandatory to make this
- * distinctions between the caller/callee saves registers for the
- * purpose of minimizing context saved during task switch and on interrupts.
- * If the cost of saving extra registers is minimal, simplicity is the
- * choice. Save the same context on interrupt entry as for tasks in
- * this case.
- *
- * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then
- * care should be used in designing the context area.
- *
- * On some CPUs with hardware floating point support, the Context_Control_fp
- * structure will not be used or it simply consist of an array of a
- * fixed number of bytes. This is done when the floating point context
- * is dumped by a "FP save context" type instruction and the format
- * is not really defined by the CPU. In this case, there is no need
- * to figure out the exact format -- only the size. Of course, although
- * this is enough information for RTEMS, it is probably not enough for
- * a debugger such as gdb. But that is another problem.
- *
- *
- */
-#ifndef ASM
-
-typedef struct {
- uint32_t r[64];
-
- uint32_t status;
- uint32_t config;
- uint32_t iret;
-
-#ifdef RTEMS_SMP
- /**
- * @brief On SMP configurations the thread context must contain a boolean
- * indicator to signal if this context is executing on a processor.
- *
- * This field must be updated during a context switch. The context switch
- * to the heir must wait until the heir context indicates that it is no
- * longer executing on a processor. The context switch must also check if
- * a thread dispatch is necessary to honor updates of the heir thread for
- * this processor. This indicator must be updated using an atomic test and
- * set operation to ensure that at most one processor uses the heir
- * context at the same time.
- *
- * @code
- * void _CPU_Context_switch(
- * Context_Control *executing,
- * Context_Control *heir
- * )
- * {
- * save( executing );
- *
- * executing->is_executing = false;
- * memory_barrier();
- *
- * if ( test_and_set( &heir->is_executing ) ) {
- * do {
- * Per_CPU_Control *cpu_self = _Per_CPU_Get_snapshot();
- *
- * if ( cpu_self->dispatch_necessary ) {
- * heir = _Thread_Get_heir_and_make_it_executing( cpu_self );
- * }
- * } while ( test_and_set( &heir->is_executing ) );
- * }
- *
- * restore( heir );
- * }
- * @endcode
- */
- volatile bool is_executing;
-#endif
-} Context_Control;
-
-#define _CPU_Context_Get_SP( _context ) \
- (_context)->r[13]
-
-typedef Context_Control CPU_Interrupt_frame;
-
-/*
- * Amount of extra stack (above minimum stack size) required by
- * MPCI receive server thread. Remember that in a multiprocessor
- * system this thread must exist and be able to process all directives.
- *
- */
-
-#define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0
-
-/*
- * Should be large enough to run all RTEMS tests. This insures
- * that a "reasonable" small application should not have any problems.
- *
- */
-
-#define CPU_STACK_MINIMUM_SIZE 4096
-
-/*
- * CPU's worst alignment requirement for data types on a byte boundary. This
- * alignment does not take into account the requirements for the stack.
- *
- */
-
-#define CPU_ALIGNMENT 8
-
-/*
- * This is defined if the port has a special way to report the ISR nesting
- * level. Most ports maintain the variable _ISR_Nest_level.
- */
-#define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE
-
-/*
- * This number corresponds to the byte alignment requirement for the
- * heap handler. This alignment requirement may be stricter than that
- * for the data types alignment specified by CPU_ALIGNMENT. It is
- * common for the heap to follow the same alignment requirement as
- * CPU_ALIGNMENT. If the CPU_ALIGNMENT is strict enough for the heap,
- * then this should be set to CPU_ALIGNMENT.
- *
- * NOTE: This does not have to be a power of 2 although it should be
- * a multiple of 2 greater than or equal to 2. The requirement
- * to be a multiple of 2 is because the heap uses the least
- * significant field of the front and back flags to indicate
- * that a block is in use or free. So you do not want any odd
- * length blocks really putting length data in that bit.
- *
- * On byte oriented architectures, CPU_HEAP_ALIGNMENT normally will
- * have to be greater or equal to than CPU_ALIGNMENT to ensure that
- * elements allocated from the heap meet all restrictions.
- *
- */
-
-#define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT
-
-/*
- * This number corresponds to the byte alignment requirement for the
- * stack. This alignment requirement may be stricter than that for the
- * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT
- * is strict enough for the stack, then this should be set to 0.
- *
- * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT.
- *
- */
-
-#define CPU_STACK_ALIGNMENT 8
-
-#define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES
-
-/* ISR handler macros */
-
-/*
- * Support routine to initialize the RTEMS vector table after it is allocated.
- *
- * NO_CPU Specific Information:
- *
- * XXX document implementation including references if appropriate
- */
-
-#define _CPU_Initialize_vectors()
-
-/*
- * Disable all interrupts for an RTEMS critical section. The previous
- * level is returned in _level.
- *
- */
-
-static inline uint32_t epiphany_interrupt_disable( void )
-{
- uint32_t sr;
- __asm__ __volatile__ ("movfs %[sr], status \n" : [sr] "=r" (sr):);
- __asm__ __volatile__("gid \n");
- return sr;
-}
-
-static inline void epiphany_interrupt_enable(uint32_t level)
-{
- __asm__ __volatile__("gie \n");
- __asm__ __volatile__ ("movts status, %[level] \n" :: [level] "r" (level):);
-}
-
-#define _CPU_ISR_Disable( _level ) \
- _level = epiphany_interrupt_disable()
-
-/*
- * Enable interrupts to the previous level (returned by _CPU_ISR_Disable).
- * This indicates the end of an RTEMS critical section. The parameter
- * _level is not modified.
- *
- */
-
-#define _CPU_ISR_Enable( _level ) \
- epiphany_interrupt_enable( _level )
-
-/*
- * This temporarily restores the interrupt to _level before immediately
- * disabling them again. This is used to divide long RTEMS critical
- * sections into two or more parts. The parameter _level is not
- * modified.
- *
- */
-
-#define _CPU_ISR_Flash( _level ) \
- do{ \
- if ( (_level & 0x2) != 0 ) \
- _CPU_ISR_Enable( _level ); \
- epiphany_interrupt_disable(); \
- } while(0)
-
-RTEMS_INLINE_ROUTINE bool _CPU_ISR_Is_enabled( uint32_t level )
-{
- return ( level & 0x2 ) != 0;
-}
-
-/*
- * Map interrupt level in task mode onto the hardware that the CPU
- * actually provides. Currently, interrupt levels which do not
- * map onto the CPU in a generic fashion are undefined. Someday,
- * it would be nice if these were "mapped" by the application
- * via a callout. For example, m68k has 8 levels 0 - 7, levels
- * 8 - 255 would be available for bsp/application specific meaning.
- * This could be used to manage a programmable interrupt controller
- * via the rtems_task_mode directive.
- *
- * The get routine usually must be implemented as a subroutine.
- *
- */
-
-void _CPU_ISR_Set_level( uint32_t level );
-
-uint32_t _CPU_ISR_Get_level( void );
-
-/* end of ISR handler macros */
-
-/* Context handler macros */
-
-/*
- * Initialize the context to a state suitable for starting a
- * task after a context restore operation. Generally, this
- * involves:
- *
- * - setting a starting address
- * - preparing the stack
- * - preparing the stack and frame pointers
- * - setting the proper interrupt level in the context
- * - initializing the floating point context
- *
- * This routine generally does not set any unnecessary register
- * in the context. The state of the "general data" registers is
- * undefined at task start time.
- *
- * NOTE: This is_fp parameter is TRUE if the thread is to be a floating
- * point thread. This is typically only used on CPUs where the
- * FPU may be easily disabled by software such as on the SPARC
- * where the PSR contains an enable FPU bit.
- *
- */
-
-/**
- * @brief Account for GCC red-zone
- *
- * The following macro is used when initializing task's stack
- * to account for GCC red-zone.
- */
-
-#define EPIPHANY_GCC_RED_ZONE_SIZE 128
-
-/**
- * @brief Initializes the CPU context.
- *
- * The following steps are performed:
- * - setting a starting address
- * - preparing the stack
- * - preparing the stack and frame pointers
- * - setting the proper interrupt level in the context
- *
- * @param[in] context points to the context area
- * @param[in] stack_area_begin is the low address of the allocated stack area
- * @param[in] stack_area_size is the size of the stack area in bytes
- * @param[in] new_level is the interrupt level for the task
- * @param[in] entry_point is the task's entry point
- * @param[in] is_fp is set to @c true if the task is a floating point task
- * @param[in] tls_area is the thread-local storage (TLS) area
- */
-void _CPU_Context_Initialize(
- Context_Control *context,
- void *stack_area_begin,
- size_t stack_area_size,
- uint32_t new_level,
- void (*entry_point)( void ),
- bool is_fp,
- void *tls_area
-);
-
-/*
- * This routine is responsible for somehow restarting the currently
- * executing task. If you are lucky, then all that is necessary
- * is restoring the context. Otherwise, there will need to be
- * a special assembly routine which does something special in this
- * case. Context_Restore should work most of the time. It will
- * not work if restarting self conflicts with the stack frame
- * assumptions of restoring a context.
- *
- */
-
-#define _CPU_Context_Restart_self( _the_context ) \
- _CPU_Context_restore( (_the_context) )
-
-/* end of Context handler macros */
-
-/* Fatal Error manager macros */
-
-/*
- * This routine copies _error into a known place -- typically a stack
- * location or a register, optionally disables interrupts, and
- * halts/stops the CPU.
- *
- */
-
-#include <inttypes.h>
-
-#define _CPU_Fatal_halt(_source, _error ) \
- printk("Fatal Error %d.%" PRIu32 " Halted\n",_source, _error); \
- asm("trap 3" :: "r" (_error)); \
- for(;;)
-
-/* end of Fatal Error manager macros */
-
-#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
-
-#define CPU_USE_LIBC_INIT_FINI_ARRAY FALSE
-
-#endif /* ASM */
-
-/**
- * Size of a pointer.
- *
- * This must be an integer literal that can be used by the assembler. This
- * value will be used to calculate offsets of structure members. These
- * offsets will be used in assembler code.
- */
-#define CPU_SIZEOF_POINTER 4
-#define CPU_EXCEPTION_FRAME_SIZE 260
-
-#define CPU_MAXIMUM_PROCESSORS 32
-
-#ifndef ASM
-
-typedef struct {
- uint32_t r[62];
- uint32_t status;
- uint32_t config;
- uint32_t iret;
-} CPU_Exception_frame;
-
-/**
- * @brief Prints the exception frame via printk().
- *
- * @see rtems_fatal() and RTEMS_FATAL_SOURCE_EXCEPTION.
- */
-void _CPU_Exception_frame_print( const CPU_Exception_frame *frame );
-
-
-/* end of Priority handler macros */
-
-/* functions */
-
-/*
- * _CPU_Initialize
- *
- * This routine performs CPU dependent initialization.
- *
- */
-
-void _CPU_Initialize(
- void
-);
-
-void *_CPU_Thread_Idle_body( uintptr_t ignored );
-
-/*
- * _CPU_Context_switch
- *
- * This routine switches from the run context to the heir context.
- *
- * epiphany Specific Information:
- *
- * Please see the comments in the .c file for a description of how
- * this function works. There are several things to be aware of.
- */
-
-void _CPU_Context_switch(
- Context_Control *run,
- Context_Control *heir
-);
-
-/*
- * _CPU_Context_restore
- *
- * This routine is generally used only to restart self in an
- * efficient manner. It may simply be a label in _CPU_Context_switch.
- *
- * NOTE: May be unnecessary to reload some registers.
- *
- */
-
-void _CPU_Context_restore(
- Context_Control *new_context
-) RTEMS_NO_RETURN;
-
-/*
- * _CPU_Context_save_fp
- *
- * This routine saves the floating point context passed to it.
- *
- */
-
-void _CPU_Context_save_fp(
- void **fp_context_ptr
-);
-
-/*
- * _CPU_Context_restore_fp
- *
- * This routine restores the floating point context passed to it.
- *
- */
-
-void _CPU_Context_restore_fp(
- void **fp_context_ptr
-);
-
-/* The following routine swaps the endian format of an unsigned int.
- * It must be static because it is referenced indirectly.
- *
- * This version will work on any processor, but if there is a better
- * way for your CPU PLEASE use it. The most common way to do this is to:
- *
- * swap least significant two bytes with 16-bit rotate
- * swap upper and lower 16-bits
- * swap most significant two bytes with 16-bit rotate
- *
- * Some CPUs have special instructions which swap a 32-bit quantity in
- * a single instruction (e.g. i486). It is probably best to avoid
- * an "endian swapping control bit" in the CPU. One good reason is
- * that interrupts would probably have to be disabled to insure that
- * an interrupt does not try to access the same "chunk" with the wrong
- * endian. Another good reason is that on some CPUs, the endian bit
- * endianness for ALL fetches -- both code and data -- so the code
- * will be fetched incorrectly.
- *
- */
-
-static inline unsigned int CPU_swap_u32(
- unsigned int value
-)
-{
- uint32_t byte1, byte2, byte3, byte4, swapped;
-
- byte4 = (value >> 24) & 0xff;
- byte3 = (value >> 16) & 0xff;
- byte2 = (value >> 8) & 0xff;
- byte1 = value & 0xff;
-
- swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
- return( swapped );
-}
-
-#define CPU_swap_u16( value ) \
- (((value&0xff) << 8) | ((value >> 8)&0xff))
-
-typedef uint32_t CPU_Counter_ticks;
-
-uint32_t _CPU_Counter_frequency( void );
-
-CPU_Counter_ticks _CPU_Counter_read( void );
-
-static inline CPU_Counter_ticks _CPU_Counter_difference(
- CPU_Counter_ticks second,
- CPU_Counter_ticks first
-)
-{
- return second - first;
-}
-
-/** Type that can store a 32-bit integer or a pointer. */
-typedef uintptr_t CPU_Uint32ptr;
-
-#endif /* ASM */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**@}*/
diff --git a/cpukit/score/cpu/epiphany/include/rtems/score/cpu_asm.h b/cpukit/score/cpu/epiphany/include/rtems/score/cpu_asm.h
deleted file mode 100644
index cc091fa909..0000000000
--- a/cpukit/score/cpu/epiphany/include/rtems/score/cpu_asm.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * @file
- *
- * @brief Epiphany Assembly File
- *
- * Very loose template for an include file for the cpu_asm.? file
- * if it is implemented as a ".S" file (preprocessed by cpp) instead
- * of a ".s" file (preprocessed by gm4 or gasp).
- */
-
-/*
- * COPYRIGHT (c) 1989-1999.
- * On-Line Applications Research Corporation (OAR).
- *
- * 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.
- *
- */
-
-#ifndef _RTEMS_SCORE_CPU_ASM_H
-#define _RTEMS_SCORE_CPU_ASM_H
-
-/* pull in the generated offsets */
-
-/*
-#include <rtems/score/offsets.h>
-*/
-
-/*
- * Hardware General Registers
- */
-
-/* put something here */
-
-/*
- * Hardware Floating Point Registers
- */
-
-/* put something here */
-
-/*
- * Hardware Control Registers
- */
-
-/* put something here */
-
-/*
- * Calling Convention
- */
-
-/* put something here */
-
-/*
- * Temporary registers
- */
-
-/* put something here */
-
-/*
- * Floating Point Registers - SW Conventions
- */
-
-/* put something here */
-
-/*
- * Temporary floating point registers
- */
-
-/* put something here */
-
-#endif
-
-/* end of file */
diff --git a/cpukit/score/cpu/epiphany/include/rtems/score/cpuatomic.h b/cpukit/score/cpu/epiphany/include/rtems/score/cpuatomic.h
deleted file mode 100644
index 598ee76b20..0000000000
--- a/cpukit/score/cpu/epiphany/include/rtems/score/cpuatomic.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * COPYRIGHT (c) 2012-2013 Deng Hengyi.
- *
- * 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.
- */
-
-#ifndef _RTEMS_SCORE_ATOMIC_CPU_H
-#define _RTEMS_SCORE_ATOMIC_CPU_H
-
-#include <rtems/score/cpustdatomic.h>
-
-#endif /* _RTEMS_SCORE_ATOMIC_CPU_H */
diff --git a/cpukit/score/cpu/epiphany/include/rtems/score/cpuimpl.h b/cpukit/score/cpu/epiphany/include/rtems/score/cpuimpl.h
deleted file mode 100644
index 967b4911ee..0000000000
--- a/cpukit/score/cpu/epiphany/include/rtems/score/cpuimpl.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * @file
- *
- * @brief CPU Port Implementation API
- */
-
-/*
- * Copyright (c) 2013 embedded brains GmbH
- *
- * 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.
- */
-
-#ifndef _RTEMS_SCORE_CPUIMPL_H
-#define _RTEMS_SCORE_CPUIMPL_H
-
-#include <rtems/score/cpu.h>
-
-/**
- * @defgroup RTEMSScoreCPUEpiphany Epiphany
- *
- * @ingroup RTEMSScoreCPU
- *
- * @brief Epiphany Architecture Support.
- */
-/**@{**/
-
-#define CPU_PER_CPU_CONTROL_SIZE 0
-
-#ifndef ASM
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-RTEMS_INLINE_ROUTINE void _CPU_Context_volatile_clobber( uintptr_t pattern )
-{
- /* TODO */
-}
-
-RTEMS_INLINE_ROUTINE void _CPU_Context_validate( uintptr_t pattern )
-{
- while (1) {
- /* TODO */
- }
-}
-
-RTEMS_INLINE_ROUTINE void _CPU_Instruction_illegal( void )
-{
- __asm__ volatile ( ".word 0" );
-}
-
-RTEMS_INLINE_ROUTINE void _CPU_Instruction_no_operation( void )
-{
- __asm__ volatile ( "nop" );
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ASM */
-
-/**@}*/
-
-#endif /* _RTEMS_SCORE_CPUIMPL_H */
diff --git a/cpukit/score/cpu/epiphany/include/rtems/score/epiphany-utility.h b/cpukit/score/cpu/epiphany/include/rtems/score/epiphany-utility.h
deleted file mode 100644
index 10426dc94d..0000000000
--- a/cpukit/score/cpu/epiphany/include/rtems/score/epiphany-utility.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * @file
- *
- * @addtogroup RTEMSScoreCPU
- *
- * @brief This include file contains macros pertaining to the
- * Epiphany processor family.
- */
-
-/*
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _EPIPHANY_UTILITY_H
-#define _EPIPHANY_UTILITY_H
-
-/* eCore IRQs */
-typedef enum
-{
- START,
- SW_EXCEPTION,
- MEM_FAULT,
- TIMER0,
- TIMER1,
- SMP_MESSAGE,
- DMA0,
- DMA1,
- SER,
-} EPIPHANY_IRQ_PER_CORE_T;
-
-/* Per-core IO mapped register addresses
- * @see Epiphany architecture reference.
- */
-#define EPIPHANY_PER_CORE_REG_CONFIG 0xF0400
-#define EPIPHANY_PER_CORE_REG_STATUS 0xF0404
-#define EPIPHANY_PER_CORE_REG_PC 0xF0408
-#define EPIPHANY_PER_CORE_REG_DEBUGSTATUS 0xF040C
-#define EPIPHANY_PER_CORE_REG_LC 0xF0414
-#define EPIPHANY_PER_CORE_REG_LS 0xF0418
-#define EPIPHANY_PER_CORE_REG_LE 0xF041C
-#define EPIPHANY_PER_CORE_REG_IRET 0xF0420
-#define EPIPHANY_PER_CORE_REG_IMASK 0xF0424
-#define EPIPHANY_PER_CORE_REG_ILAT 0xF0428
-#define EPIPHANY_PER_CORE_REG_ILATST 0xF042C
-#define EPIPHANY_PER_CORE_REG_ILATCL 0xF0430
-#define EPIPHANY_PER_CORE_REG_IPEND 0xF0434
-#define EPIPHANY_PER_CORE_REG_FSTATUS 0xF0440
-#define EPIPHANY_PER_CORE_REG_DEBUGCMD 0xF0448
-#define EPIPHANY_PER_CORE_REG_RESETCORE 0xF070C
-
-/* Event timer registers */
-#define EPIPHANY_PER_CORE_REG_CTIMER0 0xF0438
-#define EPIPHANY_PER_CORE_REG_CTIMER1 0xF043C
-
-/* Processor control registers */
-#define EPIPHANY_PER_CORE_REG_MEMSTATUS 0xF0604
-#define EPIPHANY_PER_CORE_REG_MEMPROTECT 0xF0608
-
-/* DMA Registers */
-#define EPIPHANY_PER_CORE_REG_DMA0CONFIG 0xF0500
-#define EPIPHANY_PER_CORE_REG_DMA0STRIDE 0xF0504
-#define EPIPHANY_PER_CORE_REG_DMA0COUNT 0xF0508
-#define EPIPHANY_PER_CORE_REG_DMA0SRCADDR 0xF050C
-#define EPIPHANY_PER_CORE_REG_DMA0DSTADDR 0xF0510
-#define EPIPHANY_PER_CORE_REG_DMA0AUTO0 0xF0514
-#define EPIPHANY_PER_CORE_REG_DMA0AUTO1 0xF0518
-#define EPIPHANY_PER_CORE_REG_DMA0STATUS 0xF051C
-#define EPIPHANY_PER_CORE_REG_DMA1CONFIG 0xF0520
-#define EPIPHANY_PER_CORE_REG_DMA1STRIDE 0xF0524
-#define EPIPHANY_PER_CORE_REG_DMA1COUNT 0xF0528
-#define EPIPHANY_PER_CORE_REG_DMA1SRCADDR 0xF052C
-#define EPIPHANY_PER_CORE_REG_DMA1DSTADDR 0xF0530
-#define EPIPHANY_PER_CORE_REG_DMA1AUTO0 0xF0534
-#define EPIPHANY_PER_CORE_REG_DMA1AUTO1 0xF0538
-#define EPIPHANY_PER_CORE_REG_DMA1STATUS 0xF053C
-
-/* Mesh Node Control Registers */
-#define EPIPHANY_PER_CORE_REG_MESHCONFIG 0xF0700
-#define EPIPHANY_PER_CORE_REG_COREID 0xF0704
-#define EPIPHANY_PER_CORE_REG_MULTICAST 0xF0708
-#define EPIPHANY_PER_CORE_REG_CMESHROUTE 0xF0710
-#define EPIPHANY_PER_CORE_REG_XMESHROUTE 0xF0714
-#define EPIPHANY_PER_CORE_REG_RMESHROUTE 0xF0718
-
-/* This macros constructs an address space of epiphany cores
- * from their IDs.
- */
-#define EPIPHANY_COREID_TO_MSB_ADDR(id) (id) << 20
-
-/* Construct a complete/absolute IO mapped address register from
- * core ID and register name
- */
-#define EPIPHANY_GET_REG_ABSOLUTE_ADDR(coreid, reg) \
- (EPIPHANY_COREID_TO_MSB_ADDR(coreid) | (reg))
-
-#define EPIPHANY_REG(reg) (uint32_t *) (reg)
-
-/* Read register with its absolute address */
-static inline uint32_t read_epiphany_reg(volatile uint32_t reg_addr)
-{
- return *(EPIPHANY_REG(reg_addr));
-}
-
-/* Write register with its abolute address */
-static inline void write_epiphany_reg(volatile uint32_t reg_addr, uint32_t val)
-{
- *(EPIPHANY_REG(reg_addr)) = val;
-}
-
-/* Epiphany uses 12 bits for defining core IDs, while RTEMS uses
- * linear IDs. The following function converts RTEMS linear IDs to
- * Epiphany corresponding ones
- */
-static const uint32_t map[16] =
-{
- 0x808, 0x809, 0x80A, 0x80B,
- 0x848, 0x849, 0x84A, 0x84B,
- 0x888, 0x889, 0x88A, 0x88B,
- 0x8C8, 0x8C9, 0x8CA, 0x8CB
-};
-
-static inline uint32_t rtems_coreid_to_epiphany_map(uint32_t rtems_id)
-{
- return map[rtems_id];
-}
-
-/* Epiphany uses 12 bits for defining core IDs, while RTEMS uses
- * linear IDs. The following function is used to map Epiphany IDs to
- * RTEMS linear IDs.
- */
-static inline uint32_t epiphany_coreid_to_rtems_map(uint32_t epiphany_id)
-{
- register uint32_t coreid asm ("r17") = epiphany_id;
-
- /* Mapping from Epiphany IDs to 0-16 IDs macro */
- __asm__ __volatile__(" \
- movfs r17, coreid \
- mov r19, #0x003 \
- mov r20, #0x0F0 \
- and r19, r17, r19 \
- and r20, r17, r20 \
- lsr r20, r20, #4 \
- add r17, r19, r20 \
- ");
-
- /* coreid or r17 now holds the rtems core id */
- return coreid;
-}
-
-static inline uint32_t _Epiphany_Get_current_processor(void)
-{
- uint32_t coreid;
-
- asm volatile ("movfs %0, coreid" : "=r" (coreid): );
-
- return epiphany_coreid_to_rtems_map(coreid);
-}
-#endif /* _EPIPHANY_UTILITY_H */
diff --git a/cpukit/score/cpu/epiphany/include/rtems/score/epiphany.h b/cpukit/score/cpu/epiphany/include/rtems/score/epiphany.h
deleted file mode 100644
index 3eeddec421..0000000000
--- a/cpukit/score/cpu/epiphany/include/rtems/score/epiphany.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file
- */
-
-/*
- * Copyright (c) 2015 University of York.
- * Hesham ALMatary <hmka501@york.ac.uk>
- *
- * COPYRIGHT (c) 1989-1999, 2010.
- * On-Line Applications Research Corporation (OAR).
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _RTEMS_SCORE_EPIPHANY_H
-#define _RTEMS_SCORE_EPIPHANY_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This file contains the information required to build
- * RTEMS for a particular member of the Epiphany family.
- * It does this by setting variables to indicate which
- * implementation dependent features are present in a particular
- * member of the family.
- *
- * This is a good place to list all the known CPU models
- * that this port supports and which RTEMS CPU model they correspond
- * to.
- */
-
- /*
- * Define the name of the CPU family and specific model.
- */
-
-#define CPU_NAME "EPIPHANY"
-#define CPU_MODEL_NAME "EPIPHANY"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTEMS_SCORE_EPIPHANY_H */
diff --git a/cpukit/score/cpu/epiphany/setjmp.S b/cpukit/score/cpu/epiphany/setjmp.S
deleted file mode 100644
index b981ee51e2..0000000000
--- a/cpukit/score/cpu/epiphany/setjmp.S
+++ /dev/null
@@ -1,69 +0,0 @@
-/* setjmp and longjmp
-
- Copyright (c) 2011, Adapteva, Inc.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of Adapteva nor the names of its contributors may be
- used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE. */
-
- .file "setjmp.S"
- .section .text
- .align 4
- .global _setjmp
- .type _setjmp, %function
-_setjmp:
- strd lr,[r0]
- strd r4,[r0,1]
- strd r6,[r0,2]
- strd r8,[r0,3]
- strd r10,[r0,4]
- strd r32,[r0,5]
- strd r34,[r0,6]
- strd r36,[r0,7]
- strd r38,[r0,8]
- str sp,[r0,18]
- mov r0,#0
- rts
- .size _setjmp, .-_setjmp
- .global setjmp
- .set setjmp, _setjmp
-
- .global _longjmp
-_longjmp:
- ldrd lr,[r0] ; return address / r15
- ldrd r4,[r0,1]
- ldrd r6,[r0,2]
- ldrd r8,[r0,3]
- ldrd r10,[r0,4]
- ldrd r32,[r0,5]
- ldrd r34,[r0,6]
- ldrd r36,[r0,7]
- ldrd r38,[r0,8]
- ldr sp,[r0,18]
- sub r1,r1,0
- mov r0,#1
- movne r0,r1
- jr lr
- .size _longjmp, .-_longjmp
- .global longjmp
- .set longjmp, _longjmp