diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-09-13 06:19:05 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-10-04 08:02:28 +0200 |
commit | 242887bc5698ac84261625013cc39112d2ce38eb (patch) | |
tree | 45ae83c2e2aa28fcfdb4a8a62f04c7b0504f8e31 /cpukit/score/cpu/sparc/sparc-access.S | |
parent | bsps/mips: Remove unused command line defines (diff) | |
download | rtems-242887bc5698ac84261625013cc39112d2ce38eb.tar.bz2 |
Rename files to make them unique within cpukit
This allows to build librtemscpu.a in one rush in the future.
Diffstat (limited to 'cpukit/score/cpu/sparc/sparc-access.S')
-rw-r--r-- | cpukit/score/cpu/sparc/sparc-access.S | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/cpukit/score/cpu/sparc/sparc-access.S b/cpukit/score/cpu/sparc/sparc-access.S new file mode 100644 index 0000000000..9397cb815b --- /dev/null +++ b/cpukit/score/cpu/sparc/sparc-access.S @@ -0,0 +1,109 @@ +/* + * Optimized access routines for SPARC. + * + * Note the difference between byteorder.h (inlined functions) and access.S + * where the functions will be declared in the library archive librtemscpu.a. + * Function names starting with _ are in library and can be referenced by + * function pointers. + * + * _ldN, _stN standard machine endianess access (SPARC: big-endian) + * _ld_beN, _st_beN forced big-endian + * _ld_leN, _st_leN forced little-endian (defined in access_le.C) + * + * This file is written in assembly because the big-endian functions maps to + * machine dependant access methods, i.e. same function has two names. + * + * COPYRIGHT (c) 2011 + * Aeroflex Gaisler. + * + * 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. + */ + +#include <rtems/asm.h> + + .align 4 + .section ".text" + PUBLIC(_ld8) + PUBLIC(_ld16) + PUBLIC(_ld32) + PUBLIC(_ld64) + PUBLIC(_st8) + PUBLIC(_st16) + PUBLIC(_st32) + PUBLIC(_st64) + PUBLIC(_ld_be16) + PUBLIC(_ld_be32) + PUBLIC(_ld_be64) + PUBLIC(_st_be16) + PUBLIC(_st_be32) + PUBLIC(_st_be64) + +SYM(_ld8): + retl + ldub [%o0], %o0 + +SYM(_ld_be16): +SYM(_ld16): + retl + lduh [%o0], %o0 + +SYM(_ld_be32): +SYM(_ld32): + retl + ld [%o0], %o0 + +SYM(_ld_be64): +SYM(_ld64): + retl + ldd [%o0], %o0 + +#if defined(__FIX_LEON3FT_B2BST) + +SYM(_st8): + stub %o1, [%o0] + retl + nop + +SYM(_st_be16): +SYM(_st16): + stuh %o1, [%o0] + retl + nop + +SYM(_st_be32): +SYM(_st32): + st %o1, [%o0] + retl + nop + +SYM(_st_be64): +SYM(_st64): + std %o1, [%o0] + retl + nop + +#else + +SYM(_st8): + retl + stb %o1, [%o0] + +SYM(_st_be16): +SYM(_st16): + retl + sth %o1, [%o0] + +SYM(_st_be32): +SYM(_st32): + retl + st %o1, [%o0] + +SYM(_st_be64): +SYM(_st64): + mov %o2, %o3 + mov %o1, %o2 + retl + std %o2, [%o0] +#endif |