diff options
Diffstat (limited to 'ports/sysdeps')
82 files changed, 0 insertions, 3186 deletions
diff --git a/ports/sysdeps/am33/Implies b/ports/sysdeps/am33/Implies deleted file mode 100644 index 780c4e2467..0000000000 --- a/ports/sysdeps/am33/Implies +++ /dev/null @@ -1,3 +0,0 @@ -wordsize-32 -ieee754/flt-32 -ieee754/dbl-64 diff --git a/ports/sysdeps/am33/__longjmp.S b/ports/sysdeps/am33/__longjmp.S deleted file mode 100644 index aea25a1899..0000000000 --- a/ports/sysdeps/am33/__longjmp.S +++ /dev/null @@ -1,60 +0,0 @@ -/* longjmp for AM33. - Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ASM -#define _SETJMP_H -#include <bits/setjmp.h> -#include <asm-syntax.h> - -ENTRY (__longjmp) - mov d0,a0 - mov (8,a0),d2 - mov d2,mdr - mov (0,a0),d2 - mov (4,a0),d3 - mov (12,a0),a2 - mov (16,a0),a3 - mov (20,a0),a1 - mov a1,sp - add 24,a0 - mov (a0+),r4 - mov (a0+),r5 - mov (a0+),r6 - mov (a0+),r7 -#ifdef __AM33_2__ - fmov (a0+),fs4 - fmov (a0+),fs5 - fmov (a0+),fs6 - fmov (a0+),fs7 - fmov (a0+),fs8 - fmov (a0+),fs9 - fmov (a0+),fs10 - fmov (a0+),fs11 - fmov (a0+),fs12 - fmov (a0+),fs13 - fmov (a0+),fs14 - fmov (a0+),fs15 - fmov (a0+),fs16 - fmov (a0+),fs17 - fmov (a0+),fs18 - fmov (a0+),fs19 -#endif - mov d1,d0 - retf [],0 -END (__longjmp) diff --git a/ports/sysdeps/am33/atomicity.h b/ports/sysdeps/am33/atomicity.h deleted file mode 100644 index f3d1496186..0000000000 --- a/ports/sysdeps/am33/atomicity.h +++ /dev/null @@ -1,87 +0,0 @@ -/* Low-level functions for atomic operations. AM33 version. - Copyright 1999-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../sparc/sparc32/atomicity.h - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _ATOMICITY_H -#define _ATOMICITY_H 1 - -#include <inttypes.h> -#include <stdint.h> - -#define __acquire_lock(lock) \ - __asm__ __volatile__("1: bset %1, (%0)\n\t" \ - " beq 1b" \ - : : "a" (&(lock)), "d" (1) \ - : "memory") - -#define __release_lock(lock) lock = 0 - -static int -__attribute__ ((unused)) -exchange_and_add (volatile uint32_t *mem, int val) -{ - static unsigned char lock; - int result; - - __acquire_lock (lock); - - result = *mem; - *mem += val; - - __release_lock (lock); - - return result; -} - -static void -__attribute__ ((unused)) -atomic_add (volatile uint32_t *mem, int val) -{ - static unsigned char lock; - - __acquire_lock (lock); - - *mem += val; - - __release_lock (lock); -} - -static int -__attribute__ ((unused)) -compare_and_swap (volatile long int *p, long int oldval, long int newval) -{ - static unsigned char lock; - int ret; - - __acquire_lock (lock); - - if (*p != oldval) - ret = 0; - else - { - *p = newval; - ret = 1; - } - - __release_lock (lock); - - return ret; -} - -#endif /* atomicity.h */ diff --git a/ports/sysdeps/am33/bits/endian.h b/ports/sysdeps/am33/bits/endian.h deleted file mode 100644 index 7423f09570..0000000000 --- a/ports/sysdeps/am33/bits/endian.h +++ /dev/null @@ -1,7 +0,0 @@ -/* AM33 is little-endian. */ - -#ifndef _ENDIAN_H -# error "Never use <bits/endian.h> directly; include <endian.h> instead." -#endif - -#define __BYTE_ORDER __LITTLE_ENDIAN diff --git a/ports/sysdeps/am33/bits/setjmp.h b/ports/sysdeps/am33/bits/setjmp.h deleted file mode 100644 index 46754ff4d1..0000000000 --- a/ports/sysdeps/am33/bits/setjmp.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* Define the machine-dependent type `jmp_buf'. AM33 version. */ - -#ifndef _SETJMP_H -# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." -#endif - -#ifndef _ASM -typedef int __jmp_buf[26]; -#endif diff --git a/ports/sysdeps/am33/bsd-_setjmp.S b/ports/sysdeps/am33/bsd-_setjmp.S deleted file mode 100644 index 9bbfcbbba7..0000000000 --- a/ports/sysdeps/am33/bsd-_setjmp.S +++ /dev/null @@ -1 +0,0 @@ -/* _setjmp is in setjmp.S */ diff --git a/ports/sysdeps/am33/bsd-setjmp.S b/ports/sysdeps/am33/bsd-setjmp.S deleted file mode 100644 index b6b239e67d..0000000000 --- a/ports/sysdeps/am33/bsd-setjmp.S +++ /dev/null @@ -1 +0,0 @@ -/* setjmp is in setjmp.S */ diff --git a/ports/sysdeps/am33/dl-machine.h b/ports/sysdeps/am33/dl-machine.h deleted file mode 100644 index 10e6e4662b..0000000000 --- a/ports/sysdeps/am33/dl-machine.h +++ /dev/null @@ -1,478 +0,0 @@ -/* Machine-dependent ELF dynamic relocation inline functions. AM33 version. - Copyright (C) 1995-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef dl_machine_h -#define dl_machine_h - -#define ELF_MACHINE_NAME "mn10300" - -#include <sys/param.h> - -/* Return nonzero iff ELF header is compatible with the running host. */ -static inline int __attribute__ ((unused)) -elf_machine_matches_host (const Elf32_Ehdr *ehdr) -{ - return ehdr->e_machine == EM_MN10300; -} - - -/* Return the link-time address of _DYNAMIC. Conveniently, this is the - first element of the GOT. This must be inlined in a function which - uses global data. */ -static inline Elf32_Addr __attribute__ ((unused)) -elf_machine_dynamic (void) -{ - register Elf32_Addr *got asm ("a2"); - return *got; -} - - -/* Return the run-time load address of the shared object. */ -static inline Elf32_Addr __attribute__ ((unused)) -elf_machine_load_address (void) -{ - register Elf32_Addr gotaddr asm ("a2"); - Elf32_Addr off, gotval; - - asm ("mov _dl_start@GOTOFF,%0" : "=r" (off)); - asm ("mov (_dl_start@GOT,%1),%0" : "=r" (gotval) : "r" (gotaddr)); - - return off + gotaddr - gotval; -} - -#ifndef PROF -/* We add a declaration of this function here so that in dl-runtime.c - the ELF_MACHINE_RUNTIME_TRAMPOLINE macro really can pass the parameters - in registers. - - We cannot use this scheme for profiling because the _mcount call - destroys the passed register information. */ -static ElfW(Addr) fixup (struct link_map *l, ElfW(Word) reloc_offset) - __attribute__ ((unused)); -static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset, - ElfW(Addr) retaddr) - __attribute__ ((unused)); -#endif - -/* Set up the loaded object described by L so its unrelocated PLT - entries will jump to the on-demand fixup code in dl-runtime.c. */ - -static inline int __attribute__ ((unused)) -elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) -{ - Elf32_Addr *got; - extern void _dl_runtime_resolve (Elf32_Word) attribute_hidden; - extern void _dl_runtime_profile (Elf32_Word) attribute_hidden; - - if (l->l_info[DT_JMPREL] && lazy) - { - /* The GOT entries for functions in the PLT have not yet been filled - in. Their initial contents will arrange when called to push an - offset into the .rel.plt section, push _GLOBAL_OFFSET_TABLE_[1], - and then jump to _GLOBAL_OFFSET_TABLE[2]. */ - got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]); - got[1] = (Elf32_Addr) l; /* Identify this shared object. */ - - /* The got[2] entry contains the address of a function which gets - called to get the address of a so far unresolved function and - jump to it. The profiling extension of the dynamic linker allows - to intercept the calls to collect information. In this case we - don't store the address in the GOT so that all future calls also - end in this function. */ - if (__builtin_expect (profile, 0)) - { - got[2] = (Elf32_Addr) &_dl_runtime_profile; - - if (_dl_name_match_p (GLRO(dl_profile), l)) - /* This is the object we are looking for. Say that we really - want profiling and the timers are started. */ - GL(dl_profile_map) = l; - } - else - /* This function will get called to fix up the GOT entry indicated by - the offset on the stack, and then jump to the resolved address. */ - got[2] = (Elf32_Addr) &_dl_runtime_resolve; - } - - return lazy; -} - -/* This code is used in dl-runtime.c to call the `fixup' function - and then redirect to the address it returns. */ -#ifndef PROF -# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ - .text\n\ - .globl _dl_runtime_resolve\n\ - .type _dl_runtime_resolve, @function\n\ -_dl_runtime_resolve:\n\ - add -12,sp # Preserve registers otherwise clobbered.\n\ - mov d1,(20,sp)\n\ - mov d0,(16,sp)\n\ - mov r1,d0\n\ - mov r0,d1\n\ - call fixup,[],0 # Call resolver.\n\ - mov d0,a0\n\ - mov (12,sp),d1 # Copy return address back to mdr,\n\ - mov d1,mdr # in case the callee returns with retf\n\ - mov (16,sp),d0 # Get register content back.\n\ - mov (20,sp),d1\n\ - add 12,sp\n\ - jmp (a0)\n\ - .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ -\n\ - .globl _dl_runtime_profile\n\ - .type _dl_runtime_profile, @function\n\ -_dl_runtime_profile:\n\ - add -12,sp # Preserve registers otherwise clobbered.\n\ - mov d1,(20,sp)\n\ - mov d0,(16,sp)\n\ - mov r1,d0\n\ - mov r0,d1\n\ - call profile_fixup,[],0 # Call resolver.\n\ - mov d0,a0\n\ - mov (12,sp),d1 # Copy return address back to mdr,\n\ - mov d1,mdr # in case the callee returns with retf\n\ - mov (16,sp),d0 # Get register content back.\n\ - mov (20,sp),d1\n\ - add 12,sp\n\ - jmp (a0)\n\ - .size _dl_runtime_profile, .-_dl_runtime_profile\n\ - .previous\n\ -"); -#else -# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\n\ - .text\n\ - .globl _dl_runtime_resolve\n\ - .globl _dl_runtime_profile\n\ - .type _dl_runtime_resolve, @function\n\ - .type _dl_runtime_profile, @function\n\ -_dl_runtime_resolve:\n\ -_dl_runtime_profile:\n\ - add -12,sp # Preserve registers otherwise clobbered.\n\ - mov d1,(20,sp)\n\ - mov d0,(16,sp)\n\ - mov r1,d0\n\ - mov r0,d1\n\ - call profile_fixup,[],0 # Call resolver.\n\ - mov d0,a0\n\ - mov (12,sp),d1 # Copy return address back to mdr,\n\ - mov d1,mdr # in case the callee returns with retf\n\ - mov (16,sp),d0 # Get register content back.\n\ - mov (20,sp),d1\n\ - add 12,sp\n\ - jmp (a0)\n\ - .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ - .size _dl_runtime_profile, .-_dl_runtime_profile\n\ - .previous\n\ -"); -#endif - -/* Mask identifying addresses reserved for the user program, - where the dynamic linker should not map anything. */ -#define ELF_MACHINE_USER_ADDRESS_MASK 0xf8000000UL - -/* Initial entry point code for the dynamic linker. - The C function `_dl_start' is the real entry point; - its return value is the user program's entry point. */ -#define RTLD_START asm ("\n\ - .text\n\ -.globl _start\n\ -.globl _dl_start_user\n\ -_start:\n\ - mov 0,a3 # Mark the top of the stack\n\ - mov sp,a1\n\ - add -20,sp # Prepare for function call\n\ - mov a1,d0\n\ - call _dl_start,[],0\n\ -_dl_start_user:\n\ - # Save the user entry point address in d2.\n\ - mov d0,d2\n\ - # Point a2 at the GOT.\n\ -0: mov pc,a2\n\ - add _GLOBAL_OFFSET_TABLE_ - (0b-.),a2\n\ - # Store the highest stack address\n\ - mov (__libc_stack_end@GOT,a2),a0\n\ - mov a1,(a0)\n\ - # See if we were run as a command with the executable file\n\ - # name as an extra leading argument.\n\ - mov (_dl_skip_args@GOT,a2),a0\n\ - mov (a0),d0\n\ - # Pop the original argument count.\n\ - mov (20,sp),d3\n\ - # Subtract _dl_skip_args from it.\n\ - sub d0,d3\n\ - # Adjust the stack pointer to skip _dl_skip_args words.\n\ - asl2 d0\n\ - mov sp,a0\n\ - add d0,a0\n\ - mov a0,sp\n\ - # Push argc back on the stack.\n\ - mov d3,(20,sp)\n\ - # The special initializer gets called with the stack just\n\ - # as the application's entry point will see it; it can\n\ - # switch stacks if it moves these contents over.\n\ -" RTLD_START_SPECIAL_INIT "\n\ - # Load the parameters again.\n\ - # (d0, d1, (12,sp), (16,sp)) = (_dl_loaded, argc, argv, envp)\n\ - add 24,a0\n\ - mov a0,(12,sp) # a0 is 24+sp\n\ - mov d3,d1 # d3 contained argc\n\ - inc d3\n\ - asl2 d3 # d3 is now (argc+1)*4,\n\ - add d3,a0 # the offset between argv and envp\n\ - mov a0,(16,sp)\n\ - mov (_rtld_local@GOTOFF,a2),d0\n\ - # Call the function to run the initializers.\n\ - call _dl_init@PLT,[],0\n\ - # Pass our finalizer function to the user in d0, as per ELF ABI.\n\ - mov (_dl_fini@GOT,a2),d0\n\ - add 20,sp\n\ - # Jump to the user's entry point.\n\ - mov d2,a1\n\ - jmp (a1)\n\ - .previous\n\ -"); - -#ifndef RTLD_START_SPECIAL_INIT -#define RTLD_START_SPECIAL_INIT /* nothing */ -#endif - -/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so - PLT entries should not be allowed to define the value. - ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one - of the main executable's symbols, as for a COPY reloc. */ -#define elf_machine_type_class(type) \ - ((((type) == R_MN10300_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) \ - | (((type) == R_MN10300_COPY) * ELF_RTYPE_CLASS_COPY)) - -/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ -#define ELF_MACHINE_JMP_SLOT R_MN10300_JMP_SLOT - -static inline Elf32_Addr -elf_machine_fixup_plt (struct link_map *map, lookup_t t, - const Elf32_Rela *reloc, - Elf32_Addr *reloc_addr, Elf32_Addr value) -{ - return *reloc_addr = value; -} - -/* Return the final value of a plt relocation. */ -static inline Elf32_Addr -elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc, - Elf32_Addr value) -{ - return value + reloc->r_addend; -} - -#endif /* !dl_machine_h */ - -#ifdef RESOLVE - -/* The mn10300 never uses Elf32_Rel relocations. */ -#define ELF_MACHINE_NO_REL 1 - -/* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - -static inline void -elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg, int skip_ifunc) -{ - const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); - Elf32_Addr value, *reloc_addr; - - /* Make sure we drop any previous alignment assumptions. */ - asm ("" : "=r" (reloc_addr) : "0" (reloc_addr_arg)); - -#define COPY_UNALIGNED_WORD(sw, tw, align) \ - { \ - unsigned long *__sl = (void*)&(sw), *__tl = (void*)&(tw); \ - unsigned short *__ss = (void*)&(sw), *__ts = (void*)&(tw); \ - unsigned char *__sc = (void*)&(sw), *__tc = (void*)&(tw); \ - switch ((align)) \ - { \ - case 0: \ - *__tl = *__sl; \ - break; \ - case 2: \ - *__ts++ = *__ss++; \ - *__ts = *__ss; \ - break; \ - default: \ - *__tc++ = *__sc++; \ - *__tc++ = *__sc++; \ - *__tc++ = *__sc++; \ - *__tc = *__sc; \ - break; \ - } \ - } - -#define COPY_UNALIGNED_HALFWORD(sw, tw, align) \ - { \ - unsigned short *__ss = (void*)&(sw), *__ts = (void*)&(tw); \ - unsigned char *__sc = (void*)&(sw), *__tc = (void*)&(tw); \ - switch ((align)) \ - { \ - case 0: \ - *__ts = *__ss; \ - break; \ - default: \ - *__tc++ = *__sc++; \ - *__tc = *__sc; \ - break; \ - } \ - } - -#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC - if (__builtin_expect (r_type == R_MN10300_RELATIVE, 0)) - { -# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC - /* This is defined in rtld.c, but nowhere in the static libc.a; - make the reference weak so static programs can still link. - This declaration cannot be done when compiling rtld.c (i.e. - #ifdef RTLD_BOOTSTRAP) because rtld.c contains the common - defn for _dl_rtld_map, which is incompatible with a weak decl - in the same file. */ - weak_extern (_dl_rtld_map); - if (map != &_dl_rtld_map) /* Already done in rtld itself. */ -# endif - { - COPY_UNALIGNED_WORD (*reloc_addr, value, (int) reloc_addr & 3); - value += map->l_addr; - COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3); - } - } -# ifndef RTLD_BOOTSTRAP - else if (__builtin_expect (r_type == R_MN10300_NONE, 0)) - return; -# endif - else -#endif - { -#ifndef RTLD_BOOTSTRAP - const Elf32_Sym *const refsym = sym; -#endif - - value = RESOLVE (&sym, version, ELF32_R_TYPE (reloc->r_info)); - if (sym) - value += sym->st_value; - value += reloc->r_addend; /* Assume copy relocs have zero addend. */ - - switch (r_type) - { -#ifndef RTLD_BOOTSTRAP - case R_MN10300_COPY: - if (sym == NULL) - /* This can happen in trace mode if an object could not be - found. */ - break; - if (sym->st_size > refsym->st_size - || (GLRO(dl_verbose) && sym->st_size < refsym->st_size)) - { - extern char **_dl_argv; - const char *strtab; - - strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]); - _dl_error_printf ("\ -%s: Symbol `%s' has different size in shared object, consider re-linking\n", - _dl_argv[0] ?: "<program name unknown>", - strtab + refsym->st_name); - } - memcpy (reloc_addr, (void *) value, MIN (sym->st_size, - refsym->st_size)); - break; -#endif - case R_MN10300_GLOB_DAT: - case R_MN10300_JMP_SLOT: - /* These addresses are always aligned. */ - *reloc_addr = value; - break; - case R_MN10300_32: - COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3); - break; -#ifndef RTLD_BOOTSTRAP - case R_MN10300_16: - COPY_UNALIGNED_HALFWORD (value, *reloc_addr, (int) reloc_addr & 1); - break; - case R_MN10300_8: - *(char *) reloc_addr = value; - break; - case R_MN10300_PCREL32: - value -= (Elf32_Addr) reloc_addr; - COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3); - break; - case R_MN10300_PCREL16: - value -= (Elf32_Addr) reloc_addr; - COPY_UNALIGNED_HALFWORD (value, *reloc_addr, (int) reloc_addr & 1); - break; - case R_MN10300_PCREL8: - value -= (Elf32_Addr) reloc_addr; - *(char *) reloc_addr = (value - (Elf32_Addr) reloc_addr); - break; -#endif - case R_MN10300_NONE: /* Alright, Wilbur. */ - break; -#if !defined RTLD_BOOTSTRAP || defined _NDEBUG - default: - _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 0); - break; -#endif - } - - } -} - -static inline void -elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) -{ - Elf32_Addr value, *reloc_addr; - - asm ("" : "=r" (reloc_addr) : "0" (reloc_addr_arg)); - - COPY_UNALIGNED_WORD (*reloc_addr, value, (int)reloc_addr & 3); - value += l_addr; - COPY_UNALIGNED_WORD (value, *reloc_addr, (int)reloc_addr & 3); -} - -static inline void -elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc, - int skip_ifunc) -{ - unsigned long int const r_type = ELF32_R_TYPE (reloc->r_info); - - /* Check for unexpected PLT reloc type. */ - if (__builtin_expect (r_type, R_MN10300_JMP_SLOT) == R_MN10300_JMP_SLOT) - { - Elf32_Addr* const reloc_addr = (void *)(l_addr + reloc->r_offset); - Elf32_Addr value; - - /* Perform a RELATIVE reloc on the .got entry that transfers - to the .plt. */ - COPY_UNALIGNED_WORD (*reloc_addr, value, (int)reloc_addr & 3); - value += l_addr; - COPY_UNALIGNED_WORD (value, *reloc_addr, (int)reloc_addr & 3); - } - else if (__builtin_expect (r_type, R_MN10300_NONE) != R_MN10300_NONE) - _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 1); - -} - -#endif /* RESOLVE */ diff --git a/ports/sysdeps/am33/elf/start.S b/ports/sysdeps/am33/elf/start.S deleted file mode 100644 index 265ad215c8..0000000000 --- a/ports/sysdeps/am33/elf/start.S +++ /dev/null @@ -1,78 +0,0 @@ -/* Startup code compliant to the ELF MN10300 ABI. - Copyright (C) 1995-2014 Free Software Foundation, Inc. - Contributed by Alexandre Oliva <aoliva@redhat.com> - Based on ../../i386/elf/start.S. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* This is the canonical entry point, usually the first thing in the text - segment. The SVR4/i386 ABI (pages 3-31, 3-32) says that when the entry - point runs, most registers' values are unspecified, except for: - - a0 Contains a function pointer to be registered with `atexit'. - This is how the dynamic linker arranges to have DT_FINI - functions called for shared libraries that have been loaded - before this code runs. - - sp The stack contains the arguments and environment: - (4,sp) argc - (8,sp) argv[0] - ... - (4*(argc+1),sp) NULL - (4*(argc+2),sp) envp[0] - ... - NULL -*/ - - .text - .globl _start - .type _start,@function -_start: - /* Extract the arguments as encoded on the stack and set up - the arguments for `main': argc, argv. envp will be determined - later in __libc_start_main. */ - mov sp,a3 - add -32,sp - - mov a3,(28,sp) /* stack_end. */ - mov d0,(24,sp) /* rtld_fini. */ - mov _fini, d3 - mov d3,(20,sp) /* fini. */ - mov _init, d2 - mov d2,(16,sp) /* init. */ - inc4 a3 - mov a3,(12,sp) /* argv. */ - - /* Set the initial frame pointer as 0, so that the bottom of - the stack is clearly marked. */ - mov 0,a3 - - mov (32,sp), d1 /* argc. */ - mov main, d0 /* main. */ - - /* Call the user's main function, and exit with its value. - But let the libc call main. */ - call __libc_start_main,[],0 - - call abort,[],0 /* Crash if somehow `exit' does return. */ - -/* Define a symbol for the first piece of initialized data. */ - .data - .globl __data_start -__data_start: - .long 0 - .weak data_start - data_start = __data_start diff --git a/ports/sysdeps/am33/fpu/bits/fenv.h b/ports/sysdeps/am33/fpu/bits/fenv.h deleted file mode 100644 index e4a396dd0b..0000000000 --- a/ports/sysdeps/am33/fpu/bits/fenv.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on the corresponding file in the mips port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _FENV_H -# error "Never use <bits/fenv.h> directly; include <fenv.h> instead." -#endif - - -/* Define bits representing the exception. We use the EF bit - positions of the appropriate bits in the FPCR register. */ -enum - { - FE_INEXACT = -#define FE_INEXACT 0x01 - FE_INEXACT, - FE_UNDERFLOW = -#define FE_UNDERFLOW 0x02 - FE_UNDERFLOW, - FE_OVERFLOW = -#define FE_OVERFLOW 0x04 - FE_OVERFLOW, - FE_DIVBYZERO = -#define FE_DIVBYZERO 0x08 - FE_DIVBYZERO, - FE_INVALID = -#define FE_INVALID 0x10 - FE_INVALID, - }; - -#define FE_ALL_EXCEPT \ - (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID) - -/* The AM33/2.0 FPU supports only Round to nearest. Bits 3<<16 are - reserved to represent other rounding modes. */ -enum - { - FE_TONEAREST = -#define FE_TONEAREST 0x00000 - FE_TONEAREST, - }; - - -/* Type representing exception flags. */ -typedef unsigned int fexcept_t; - - -/* Type representing floating-point environment. */ -typedef unsigned int fenv_t; - -/* If the default argument is used we use this value. */ -#define FE_DFL_ENV ((__const fenv_t *) -1) - -#ifdef __USE_GNU -/* Floating-point environment where none of the exception is masked. */ -# define FE_NOMASK_ENV ((__const fenv_t *) -2) -#endif diff --git a/ports/sysdeps/am33/fpu/fclrexcpt.c b/ports/sysdeps/am33/fpu/fclrexcpt.c deleted file mode 100644 index 12bda643fe..0000000000 --- a/ports/sysdeps/am33/fpu/fclrexcpt.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Clear given exceptions in current floating-point environment. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fenv_libc.h> -#include <fpu_control.h> -#include <shlib-compat.h> - -int -__feclearexcept (int excepts) -{ - fpu_control_t cw; - - /* Mask out unsupported bits/exceptions. */ - excepts &= FE_ALL_EXCEPT; - - /* Read the complete control word. */ - _FPU_GETCW (cw); - - /* Clear exception flag bits and cause bits. EF bits are cleared by - assigning 1 to them (and there's no way to set them); other bits - are copied normally. */ - - cw &= ~((excepts << CAUSE_SHIFT) | FE_ALL_EXCEPT); - cw |= excepts; - - /* Put the new data in effect. */ - _FPU_SETFCW (cw); - - /* Success. */ - return 0; -} - -libm_hidden_ver (__feclearexcept, feclearexcept) -versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2); diff --git a/ports/sysdeps/am33/fpu/fedisblxcpt.c b/ports/sysdeps/am33/fpu/fedisblxcpt.c deleted file mode 100644 index 5273d9023f..0000000000 --- a/ports/sysdeps/am33/fpu/fedisblxcpt.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Disable floating-point exceptions. - Copyright (C) 2000-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fenv_libc.h> -#include <fpu_control.h> - -int -fedisableexcept (int excepts) -{ - fpu_control_t new_exc, old_exc; - - /* Get the current control word. */ - _FPU_GETCW (new_exc); - - old_exc = (new_exc & ENABLE_MASK) >> ENABLE_SHIFT; - - excepts &= FE_ALL_EXCEPT; - - new_exc &= ~(excepts << ENABLE_SHIFT); - _FPU_SETCW (new_exc); - - return old_exc; -} diff --git a/ports/sysdeps/am33/fpu/feenablxcpt.c b/ports/sysdeps/am33/fpu/feenablxcpt.c deleted file mode 100644 index ae4808a458..0000000000 --- a/ports/sysdeps/am33/fpu/feenablxcpt.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Enable floating-point exceptions. - Copyright (C) 2000-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fenv_libc.h> -#include <fpu_control.h> - -int -feenableexcept (int excepts) -{ - fpu_control_t new_exc, old_exc; - - /* Get the current control word. */ - _FPU_GETCW (new_exc); - - old_exc = (new_exc & ENABLE_MASK) >> ENABLE_SHIFT; - - excepts &= FE_ALL_EXCEPT; - - new_exc |= excepts << ENABLE_SHIFT; - _FPU_SETCW (new_exc); - - return old_exc; -} diff --git a/ports/sysdeps/am33/fpu/fegetenv.c b/ports/sysdeps/am33/fpu/fegetenv.c deleted file mode 100644 index 87853bad18..0000000000 --- a/ports/sysdeps/am33/fpu/fegetenv.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Store current floating-point environment. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fpu_control.h> -#include <shlib-compat.h> - -int -__fegetenv (fenv_t *envp) -{ - _FPU_GETCW (*envp); - - /* Success. */ - return 0; -} - -versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/ports/sysdeps/am33/fpu/fegetexcept.c b/ports/sysdeps/am33/fpu/fegetexcept.c deleted file mode 100644 index 01f7c0caa6..0000000000 --- a/ports/sysdeps/am33/fpu/fegetexcept.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Get enabled floating-point exceptions. - Copyright (C) 2000-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fenv_libc.h> -#include <fpu_control.h> - -int -fegetexcept (void) -{ - unsigned int exc; - - /* Get the current control word. */ - _FPU_GETCW (exc); - - return (exc & ENABLE_MASK) >> ENABLE_SHIFT; -} diff --git a/ports/sysdeps/am33/fpu/fegetround.c b/ports/sysdeps/am33/fpu/fegetround.c deleted file mode 100644 index d946d9b6e8..0000000000 --- a/ports/sysdeps/am33/fpu/fegetround.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Return current rounding direction. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fenv_libc.h> -#include <fpu_control.h> - -int -fegetround (void) -{ - int cw; - - /* Get control word. */ - _FPU_GETCW (cw); - - return (cw & ROUND_MASK); -} -libm_hidden_def (fegetround) diff --git a/ports/sysdeps/am33/fpu/feholdexcpt.c b/ports/sysdeps/am33/fpu/feholdexcpt.c deleted file mode 100644 index 1e662d0eec..0000000000 --- a/ports/sysdeps/am33/fpu/feholdexcpt.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Store current floating-point environment and clear exceptions. - Copyright (C) 2000-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fpu_control.h> - -int -feholdexcept (fenv_t *envp) -{ - fpu_control_t cw; - - /* Save the current state. */ - _FPU_GETCW (cw); - *envp = cw; - - /* Clear all exception enable bits and flags. */ - cw &= ~(_FPU_MASK_V|_FPU_MASK_Z|_FPU_MASK_O|_FPU_MASK_U|_FPU_MASK_I); - _FPU_SETFCW (cw); - - return 0; -} diff --git a/ports/sysdeps/am33/fpu/fenv_libc.h b/ports/sysdeps/am33/fpu/fenv_libc.h deleted file mode 100644 index ee19a04eb2..0000000000 --- a/ports/sysdeps/am33/fpu/fenv_libc.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2000-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on the corresponding file in the mips port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _FENV_LIBC_H -#define _FENV_LIBC_H 1 - -/* Mask for enabling exceptions and for the CAUSE bits. */ -#define ENABLE_MASK 0x003E0U -#define CAUSE_MASK 0x07C00U -#define ROUND_MASK 0x30000U - -/* Shift for FE_* flags to get up to the ENABLE bits and the CAUSE bits. */ -#define ENABLE_SHIFT 5 -#define CAUSE_SHIFT 10 - -#endif /* _FENV_LIBC_H */ diff --git a/ports/sysdeps/am33/fpu/fesetenv.c b/ports/sysdeps/am33/fpu/fesetenv.c deleted file mode 100644 index 7a09cfb0dc..0000000000 --- a/ports/sysdeps/am33/fpu/fesetenv.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Install given floating-point environment. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fpu_control.h> -#include <shlib-compat.h> - -int -__fesetenv (const fenv_t *envp) -{ - fpu_control_t cw; - - /* We want to clear all EF bits for the default end IEEE. */ - - if (envp == FE_DFL_ENV) - _FPU_SETFCW (_FPU_DEFAULT|FE_ALL_EXCEPT); - else if (envp == FE_NOMASK_ENV) - _FPU_SETFCW (_FPU_IEEE|FE_ALL_EXCEPT); - else - { - fpu_control_t temp; - - _FPU_GETCW (temp); - cw = *envp; - - /* If EF bits are cleared and the user requests them to be set, - we have to fail, because there's no way to do it. */ - if (~temp & cw & FE_ALL_EXCEPT) - return -1; - - /* We clear EF bits by storing a 1 in them, so flip the - FE_ALL_EXCEPT bits. */ - cw = (cw & ~FE_ALL_EXCEPT) | (~cw & FE_ALL_EXCEPT); - _FPU_SETFCW (cw); - } - - /* Success. */ - return 0; -} - -libm_hidden_ver (__fesetenv, fesetenv) -versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2); diff --git a/ports/sysdeps/am33/fpu/fesetround.c b/ports/sysdeps/am33/fpu/fesetround.c deleted file mode 100644 index 882e7dc576..0000000000 --- a/ports/sysdeps/am33/fpu/fesetround.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Set current rounding direction. - Copyright (C) 2004-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> - -int -fesetround (int round) -{ - /* The only supported rounding mode is to-nearest. Just check - whether we're switching to it. */ - return (round != FE_TONEAREST); -} diff --git a/ports/sysdeps/am33/fpu/feupdateenv.c b/ports/sysdeps/am33/fpu/feupdateenv.c deleted file mode 100644 index 11f9ef8116..0000000000 --- a/ports/sysdeps/am33/fpu/feupdateenv.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Install given floating-point environment and raise exceptions. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fpu_control.h> -#include <shlib-compat.h> - -int -__feupdateenv (const fenv_t *envp) -{ - int temp; - - /* Save current exceptions. */ - _FPU_GETCW (temp); - temp &= FE_ALL_EXCEPT; - - /* Install new environment. */ - fesetenv (envp); - - /* Raise the safed exception. Incidently for us the implementation - defined format of the values in objects of type fexcept_t is the - same as the ones specified using the FE_* constants. */ - feraiseexcept (temp); - - /* Success. */ - return 0; -} - -versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2); diff --git a/ports/sysdeps/am33/fpu/fgetexcptflg.c b/ports/sysdeps/am33/fpu/fgetexcptflg.c deleted file mode 100644 index 8b09e9797d..0000000000 --- a/ports/sysdeps/am33/fpu/fgetexcptflg.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Store current representation for exceptions. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fpu_control.h> -#include <shlib-compat.h> - -int -__fegetexceptflag (fexcept_t *flagp, int excepts) -{ - fexcept_t temp; - - /* Get the current exceptions. */ - _FPU_GETCW (temp); - - /* We only save the relevant bits here. In particular, care has to be - taken with the CAUSE bits, as an inadvertent restore later on could - generate unexpected exceptions. */ - - *flagp = temp & excepts & FE_ALL_EXCEPT; - - /* Success. */ - return 0; -} - -versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2); diff --git a/ports/sysdeps/am33/fpu/fpu_control.h b/ports/sysdeps/am33/fpu/fpu_control.h deleted file mode 100644 index 8b1715f3fd..0000000000 --- a/ports/sysdeps/am33/fpu/fpu_control.h +++ /dev/null @@ -1,73 +0,0 @@ -/* FPU control word bits. AM33/2.0 version. - Copyright (C) 1996-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on the corresponding file in the mips port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _FPU_CONTROL_H -#define _FPU_CONTROL_H - -/* AM33/2.0 FPU floating point control register bits. - * - * 31-22 -> reserved - * 21-18 -> floating-point condition codes (L, G, E, U) - * 17-16 -> rounding modes (00 is to-nearest; other values are reserved - * 15 -> reserved (read as 0, write with 0) - * 14-10 -> Exception Cause (inValid, divZero, Overflow, Underflow, Inexact) - * 9- 5 -> Exception Enable - * 4- 0 -> Exception Flag, cleared when exception cause is set - */ - -#include <features.h> -#include <fenv.h> - -/* masking of interrupts */ -#define _FPU_MASK_V 0x0200 /* Invalid operation */ -#define _FPU_MASK_Z 0x0100 /* Division by zero */ -#define _FPU_MASK_O 0x0080 /* Overflow */ -#define _FPU_MASK_U 0x0040 /* Underflow */ -#define _FPU_MASK_I 0x0020 /* Inexact operation */ - -/* rounding control */ -#define _FPU_RC_NEAREST 0x0 /* Only available mode */ - -#define _FPU_RESERVED 0xffc08000 /* Reserved bits in fpcr */ - - -/* The fdlibm code requires strict IEEE double precision arithmetic, - and no interrupts for exceptions, rounding to nearest. */ - -#define _FPU_DEFAULT 0x0000001f - -/* IEEE: same as above, but exceptions */ -#define _FPU_IEEE 0x000003ff - -/* Type of the control word. */ -typedef unsigned int fpu_control_t; - -/* Macros for accessing the hardware control word. _FPU_SETCW is - defined such that it won't modify the EF bits, that are cleared - when assigned bits that are set. Use SETFCW to get them actually - reset. */ -#define _FPU_SETFCW(cw) __asm__ ("fmov %0,fpcr" : : "ri" (cw)) -#define _FPU_SETCW(cw) _FPU_SETFCW((cw) & ~FE_ALL_EXCEPT) -#define _FPU_GETCW(cw) __asm__ ("fmov fpcr,%0" : "=r" (cw)) - -/* Default control word set at startup. */ -extern fpu_control_t __fpu_control; - -#endif /* fpu_control.h */ diff --git a/ports/sysdeps/am33/fpu/fraiseexcpt.c b/ports/sysdeps/am33/fpu/fraiseexcpt.c deleted file mode 100644 index b86a51eb8e..0000000000 --- a/ports/sysdeps/am33/fpu/fraiseexcpt.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Raise given exceptions. - Copyright (C) 2000-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the M68K port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <float.h> -#include <math.h> -#include <shlib-compat.h> - -int -__feraiseexcept (int excepts) -{ - /* Raise exceptions represented by EXCEPTS. But we must raise only one - signal at a time. It is important that if the overflow/underflow - exception and the divide by zero exception are given at the same - time, the overflow/underflow exception follows the divide by zero - exception. */ - - /* First: invalid exception. */ - if (excepts & FE_INVALID) - { - /* One example of an invalid operation is 0 * Infinity. */ - float x = HUGE_VALF, y = 0.0f; - __asm__ __volatile__ ("fmul %1,%0" : "+f" (x) : "f" (y)); - } - - /* Next: division by zero. */ - if (excepts & FE_DIVBYZERO) - { - float x = 1.0f, y = 0.0f; - __asm__ __volatile__ ("fdiv %1,%0" : "+f" (x) : "f" (y)); - } - - /* Next: overflow. */ - if (excepts & FE_OVERFLOW) - { - float x = FLT_MAX; - - __asm__ __volatile__ ("fmul %0,%0" : "+f" (x)); - } - - /* Next: underflow. */ - if (excepts & FE_UNDERFLOW) - { - float x = -FLT_MIN; - - __asm__ __volatile__ ("fmul %0,%0" : "+f" (x)); - } - - /* Last: inexact. */ - if (excepts & FE_INEXACT) - { - float x = 1.0f, y = 3.0f; - __asm__ __volatile__ ("fdiv %1,%0" : "=f" (x) : "f" (y)); - } - - /* Success. */ - return 0; -} - -libm_hidden_ver (__feraiseexcept, feraiseexcept) -versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2); diff --git a/ports/sysdeps/am33/fpu/fsetexcptflg.c b/ports/sysdeps/am33/fpu/fsetexcptflg.c deleted file mode 100644 index 7b7ab84082..0000000000 --- a/ports/sysdeps/am33/fpu/fsetexcptflg.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Set floating-point environment exception handling. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fpu_control.h> -#include <shlib-compat.h> - -int -__fesetexceptflag (const fexcept_t *flagp, int excepts) -{ - fpu_control_t cw, temp; - - /* Get the current exceptions. */ - _FPU_GETCW (cw); - - /* Make sure the flags we want restored are legal. */ - excepts &= FE_ALL_EXCEPT; - temp = *flagp & excepts; - - /* If EF bits are clear and the user requests them to be set, - we have to fail, because there's no way to do it. */ - if (~(cw & excepts) & temp) - return -1; - - /* We clear EF bits by storing a 1 in them, so flip the - FE_ALL_EXCEPT bits. */ - temp = (~temp & FE_ALL_EXCEPT); - - /* Now clear the bits called for, and copy them in from flagp. Note that - we ignore all non-flag bits from *flagp, so they don't matter. */ - cw = (cw & ~FE_ALL_EXCEPT) | temp; - - _FPU_SETFCW (cw); - - /* Success. */ - return 0; -} - -versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2); diff --git a/ports/sysdeps/am33/fpu/ftestexcept.c b/ports/sysdeps/am33/fpu/ftestexcept.c deleted file mode 100644 index fc43de5a99..0000000000 --- a/ports/sysdeps/am33/fpu/ftestexcept.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Test exception in current environment. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - based on corresponding file in the MIPS port. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <fenv.h> -#include <fpu_control.h> - -int -fetestexcept (int excepts) -{ - int cw; - - /* Get current control word. */ - _FPU_GETCW (cw); - - return cw & excepts & FE_ALL_EXCEPT; -} diff --git a/ports/sysdeps/am33/jmpbuf-offsets.h b/ports/sysdeps/am33/jmpbuf-offsets.h deleted file mode 100644 index cccfdb32aa..0000000000 --- a/ports/sysdeps/am33/jmpbuf-offsets.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Private macros for accessing __jmp_buf contents. AM33 version. - Copyright (C) 2006-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#define __JMP_BUF_SP 20 diff --git a/ports/sysdeps/am33/jmpbuf-unwind.h b/ports/sysdeps/am33/jmpbuf-unwind.h deleted file mode 100644 index 0d28bf6f77..0000000000 --- a/ports/sysdeps/am33/jmpbuf-unwind.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Examine __jmp_buf for unwinding frames. AM33 version. - Copyright (C) 2006-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <setjmp.h> -#include <jmpbuf-offsets.h> - -/* Test if longjmp to JMPBUF would unwind the frame - containing a local variable at ADDRESS. */ -#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ - ((void *) (address) < (void *) demangle (jmpbuf[__JMP_BUF_SP])) diff --git a/ports/sysdeps/am33/linuxthreads/pspinlock.c b/ports/sysdeps/am33/linuxthreads/pspinlock.c deleted file mode 100644 index 8113907a7a..0000000000 --- a/ports/sysdeps/am33/linuxthreads/pspinlock.c +++ /dev/null @@ -1,73 +0,0 @@ -/* POSIX spinlock implementation. AM33 version. - Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <pthread.h> -#include "internals.h" - -int -__pthread_spin_lock (pthread_spinlock_t *lock) -{ - __asm__ __volatile__("1: bset %1, (%0); beq 1b" - : : "a" (lock), "d" (1) : "memory"); - return 0; -} -weak_alias (__pthread_spin_lock, pthread_spin_lock) - - -int -__pthread_spin_trylock (pthread_spinlock_t *lock) -{ - int oldval = 1; - - __asm__ __volatile__ ("bset %0, (%1); beq 1f; clr %0; 1:" : - "+d" (oldval) : "a" (lock) : "memory"); - - return oldval ? EBUSY : 0; -} -weak_alias (__pthread_spin_trylock, pthread_spin_trylock) - - -int -__pthread_spin_unlock (pthread_spinlock_t *lock) -{ - *lock = 0; - return 0; -} -weak_alias (__pthread_spin_unlock, pthread_spin_unlock) - - -int -__pthread_spin_init (pthread_spinlock_t *lock, int pshared) -{ - /* We can ignore the `pshared' parameter. Since we are busy-waiting - all processes which can access the memory location `lock' points - to can use the spinlock. */ - *lock = 0; - return 0; -} -weak_alias (__pthread_spin_init, pthread_spin_init) - - -int -__pthread_spin_destroy (pthread_spinlock_t *lock) -{ - /* Nothing to do. */ - return 0; -} -weak_alias (__pthread_spin_destroy, pthread_spin_destroy) diff --git a/ports/sysdeps/am33/linuxthreads/pt-machine.h b/ports/sysdeps/am33/linuxthreads/pt-machine.h deleted file mode 100644 index 9e11746fe8..0000000000 --- a/ports/sysdeps/am33/linuxthreads/pt-machine.h +++ /dev/null @@ -1,66 +0,0 @@ -/* Machine-dependent pthreads configuration and inline functions. - am33 version. - Copyright (C) 1996-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - Based on ../i386/pt-machine.h. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _PT_MACHINE_H -#define _PT_MACHINE_H 1 - -#ifndef __ASSEMBLER__ -#ifndef PT_EI -# define PT_EI extern inline -#endif - -/* Get some notion of the current stack. Need not be exactly the top - of the stack, just something somewhere in the current frame. */ -#define CURRENT_STACK_FRAME __builtin_frame_address (0) - -/* Spinlock implementation; required. */ -PT_EI long int -testandset (int *spinlock) -{ - long int ret = 1; - - /* This won't test&set the entire int, only the least significant - byte. I hope this doesn't matter, since we can't do better. */ - __asm__ __volatile__ ("bset %0, %1; bne 1f; clr %0; 1:" : - "+d" (ret), "+m" (*(volatile int *)spinlock)); - - return ret; -} - - -PT_EI int -get_eflags (void) -{ - int res; - __asm__ __volatile__ ("mov psw,%0" : "=d" (res)); - return res; -} - - -PT_EI void -set_eflags (int newflags) -{ - __asm__ __volatile__ ("mov %0,psw" : : "d" (newflags) : "cc"); -} - -#endif /* __ASSEMBLER__ */ - -#endif /* pt-machine.h */ diff --git a/ports/sysdeps/am33/memusage.h b/ports/sysdeps/am33/memusage.h deleted file mode 100644 index 236743d6a3..0000000000 --- a/ports/sysdeps/am33/memusage.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2000-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#define GETSP() ({ uintptr_t stack_ptr; \ - asm ("mov sp,%0" : "=a" (stack_ptr)); \ - stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/ports/sysdeps/am33/preconfigure b/ports/sysdeps/am33/preconfigure deleted file mode 100644 index 9495465389..0000000000 --- a/ports/sysdeps/am33/preconfigure +++ /dev/null @@ -1,5 +0,0 @@ -case "$machine" in -am33*) - base_machine=am33 machine=am33 - ;; -esac diff --git a/ports/sysdeps/am33/setjmp.S b/ports/sysdeps/am33/setjmp.S deleted file mode 100644 index d03b0c7278..0000000000 --- a/ports/sysdeps/am33/setjmp.S +++ /dev/null @@ -1,79 +0,0 @@ -/* setjmp for am33. - Copyright (C) 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ASM -#define _SETJMP_H -#include <bits/setjmp.h> -#include <asm-syntax.h> - - -ENTRY (__sigsetjmp) -.Lsigsetjmp: - /* Save registers. */ - mov d0,a0 - mov d2,(0,a0) - mov d3,(4,a0) - mov mdr,d0 - mov d0,(8,a0) - /* Restore d0 for __sigjmp_save. */ - mov a0,d0 - mov a2,(12,a0) - mov a3,(16,a0) - mov sp,a1 - mov a1,(20,a0) - add 24,a0 - mov r4,(a0+) - mov r5,(a0+) - mov r6,(a0+) - mov r7,(a0+) -#ifdef __AM33_2__ - fmov fs4,(a0+) - fmov fs5,(a0+) - fmov fs6,(a0+) - fmov fs7,(a0+) - fmov fs8,(a0+) - fmov fs9,(a0+) - fmov fs10,(a0+) - fmov fs11,(a0+) - fmov fs12,(a0+) - fmov fs13,(a0+) - fmov fs14,(a0+) - fmov fs15,(a0+) - fmov fs16,(a0+) - fmov fs17,(a0+) - fmov fs18,(a0+) - fmov fs19,(a0+) -#endif - /* Make a tail call to __sigjmp_save; it takes the same args. */ - jmp __sigjmp_save -END (__sigsetjmp) - -/* BSD `_setjmp' entry point to `sigsetjmp (..., 1)'. */ -ENTRY (setjmp) - /* Tail-call setsetjmp with savesigs==1. */ - mov 1,d1 - bra .Lsigsetjmp -END (setjmp) - -/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. */ -ENTRY (_setjmp) - /* Tail-call setsetjmp with savesigs==0. */ - clr d1 - bra .Lsigsetjmp -END (_setjmp) diff --git a/ports/sysdeps/am33/shlib-versions b/ports/sysdeps/am33/shlib-versions deleted file mode 100644 index ad6ded9dc4..0000000000 --- a/ports/sysdeps/am33/shlib-versions +++ /dev/null @@ -1 +0,0 @@ -am33.*-.*-linux.* DEFAULT GLIBC_2.2.5 diff --git a/ports/sysdeps/am33/stackinfo.h b/ports/sysdeps/am33/stackinfo.h deleted file mode 100644 index 50079fd5f0..0000000000 --- a/ports/sysdeps/am33/stackinfo.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* This file contains a bit of information about the stack allocation - of the processor. */ - -#ifndef _STACKINFO_H -#define _STACKINFO_H 1 - -/* On am33 the stack grows down. */ -#define _STACK_GROWS_DOWN 1 - -#endif /* stackinfo.h */ diff --git a/ports/sysdeps/am33/sys/ucontext.h b/ports/sysdeps/am33/sys/ucontext.h deleted file mode 100644 index bc2af63a81..0000000000 --- a/ports/sysdeps/am33/sys/ucontext.h +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright 1997-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* AM33/2.0 context switching support. */ - -#ifndef _SYS_UCONTEXT_H -#define _SYS_UCONTEXT_H 1 - -#include <features.h> -#include <signal.h> - -/* Type for general register. */ -typedef int greg_t; - -/* Number of general registers. */ -#define NGREG 28 - -/* Container for all general registers. */ -typedef greg_t gregset_t[NGREG]; - -/* Number of each register is the `gregset_t' array. */ -enum -{ - REG_D0 = 0, -#define REG_D0 REG_D0 - REG_D1, -#define REG_D1 REG_D1 - REG_D2, -#define REG_D2 REG_D2 - REG_D3, -#define REG_D3 REG_D3 - REG_A0, -#define REG_A0 REG_A0 - REG_A1, -#define REG_A1 REG_A1 - REG_A2, -#define REG_A2 REG_A2 - REG_A3, -#define REG_A3 REG_A3 - REG_E0, -#define REG_E0 REG_E0 - REG_E1, -#define REG_E1 REG_E1 - REG_E2, -#define REG_E2 REG_E2 - REG_E3, -#define REG_E3 REG_E3 - REG_E4, -#define REG_E4 REG_E4 - REG_E5, -#define REG_E5 REG_E5 - REG_E6, -#define REG_E6 REG_E6 - REG_E7, -#define REG_E7 REG_E7 - REG_LAR, -#define REG_LAR REG_LAR - REG_LIR, -#define REG_LIR REG_LIR - REG_MDR, -#define REG_MDR REG_MDR - REG_MCVF, -#define REG_MCVF REG_MCVF - REG_MCRL, -#define REG_MCRL REG_MCRL - REG_MCRH, -#define REG_MCRH REG_MCRH - REG_MDRQ, -#define REG_MDRQ REG_MDRQ - REG_SP, -#define REG_SP REG_SP - REG_EPSW, -#define REG_EPSW REG_EPSW - REG_PC, -#define REG_PC REG_PC -}; - -typedef int freg_t; - -/* Structure to describe FPU registers. */ -typedef struct { - union { - double fp_dregs[16]; - float fp_fregs[32]; - freg_t fp_regs[32]; - } regs; - freg_t fpcr; -} fpregset_t; - -/* Context to describe whole processor state. */ -typedef struct - { - gregset_t gregs; - fpregset_t fpregs; - } mcontext_t; - -/* Userlevel context. */ -typedef struct ucontext - { - unsigned long int uc_flags; - struct ucontext *uc_link; - __sigset_t uc_sigmask; - stack_t uc_stack; - mcontext_t uc_mcontext; - long int uc_filler[5]; - } ucontext_t; - -#endif /* sys/ucontext.h */ diff --git a/ports/sysdeps/am33/sysdep.h b/ports/sysdeps/am33/sysdep.h deleted file mode 100644 index 70303e3277..0000000000 --- a/ports/sysdeps/am33/sysdep.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/sysdep.h. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdeps/generic/sysdep.h> - -#ifdef __ASSEMBLER__ - -/* Syntactic details of assembler. */ - -#ifdef HAVE_ELF -/* For ELF we need the `.type' directive to make shared libs work right. */ -#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; -#define ASM_SIZE_DIRECTIVE(name) .size name,.-name; - -/* In ELF C symbols are asm symbols. */ -#undef NO_UNDERSCORES -#define NO_UNDERSCORES -#else -#define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified. */ -#define ASM_SIZE_DIRECTIVE(name) /* Nothing is specified. */ -#endif - -/* Define an entry point visible from C. */ -#define ENTRY(name) \ - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ - ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ - C_LABEL(name) \ - CALL_MCOUNT - -#undef END -#define END(name) \ - ASM_SIZE_DIRECTIVE(name) \ - -/* If compiled for profiling, call `mcount' at the start of each function. */ -#ifdef PROF -/* The mcount code relies on a normal frame pointer being on the stack - to locate our caller, so push one just for its benefit. */ -#define CALL_MCOUNT \ - movm [a3],(sp); mov sp,a3; add -12,sp; \ - call JUMPTARGET(mcount),[],0; add 12,sp; movm (sp),[a3]; -#else -#define CALL_MCOUNT /* Do nothing. */ -#endif - -#ifdef NO_UNDERSCORES -/* Since C identifiers are not normally prefixed with an underscore - on this system, the asm identifier `syscall_error' intrudes on the - C name space. Make sure we use an innocuous name. */ -#define syscall_error __syscall_error -#define mcount _mcount -#endif - -#undef JUMPTARGET -#ifdef PIC -#define JUMPTARGET(name) name##@PLT -#else -#define JUMPTARGET(name) name -#endif - -/* Local label name for asm code. */ -#ifndef L -#define L(name) name -#endif - -#endif /* __ASSEMBLER__ */ diff --git a/ports/sysdeps/am33/tininess.h b/ports/sysdeps/am33/tininess.h deleted file mode 100644 index 1db37790f8..0000000000 --- a/ports/sysdeps/am33/tininess.h +++ /dev/null @@ -1 +0,0 @@ -#define TININESS_AFTER_ROUNDING 1 diff --git a/ports/sysdeps/unix/am33/sysdep.S b/ports/sysdeps/unix/am33/sysdep.S deleted file mode 100644 index 57288cc54a..0000000000 --- a/ports/sysdeps/unix/am33/sysdep.S +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 1991-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/sysdep.S. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H -#include <bits/errno.h> - -.globl C_SYMBOL_NAME(errno) -.globl syscall_error - -#undef syscall_error -#ifdef NO_UNDERSCORES -__syscall_error: -#else -syscall_error: -#endif -#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN - /* We translate the system's EWOULDBLOCK error into EAGAIN. - The GNU C library always defines EWOULDBLOCK==EAGAIN. - EWOULDBLOCK_sys is the original number. */ - cmp EWOULDBLOCK_sys,d0 /* Is it the old EWOULDBLOCK? */ - bne .Lnotb /* Branch if not. */ - mov EAGAIN,d0 /* Yes; translate it to EAGAIN. */ -.Lnotb: -#endif -#ifndef PIC -# ifndef _LIBC_REENTRANT - mov d0,(C_SYMBOL_NAME (errno)) -# else - movm [d2],(sp) - add -12,sp - mov d0,d2 - call __errno_location,[],0 - mov d2,(a0) - add 12,sp - movm (sp),[d2] -# endif -#else -# error "This shouldn't be assembled for PIC" -#endif - mov -1,d0 - mov d0,a0 - ret - -#undef __syscall_error -END (__syscall_error) diff --git a/ports/sysdeps/unix/am33/sysdep.h b/ports/sysdeps/unix/am33/sysdep.h deleted file mode 100644 index f305cb121b..0000000000 --- a/ports/sysdeps/unix/am33/sysdep.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/sysdep.h. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdeps/unix/sysdep.h> -#include "../../am33/sysdep.h" - -#ifdef __ASSEMBLER__ - -#define r0 d0 /* Normal return-value register. */ -#define r1 !!!! /* Secondary return-value register. */ -#define scratch d1 /* Call-clobbered register for random use. */ -#define MOVE(x,y) mov x, y - -#define ret ret [],0 - -#endif /* __ASSEMBLER__ */ diff --git a/ports/sysdeps/unix/sysv/linux/am33/Makefile b/ports/sysdeps/unix/sysv/linux/am33/Makefile deleted file mode 100644 index ece39e8a4c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -ifeq ($(subdir),misc) -sysdep_routines += setfsgid setfsuid -endif diff --git a/ports/sysdeps/unix/sysv/linux/am33/bits/fcntl.h b/ports/sysdeps/unix/sysv/linux/am33/bits/fcntl.h deleted file mode 100644 index 37ccaddc2d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/bits/fcntl.h +++ /dev/null @@ -1,180 +0,0 @@ -/* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 1995-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _FCNTL_H -# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." -#endif - - -#include <sys/types.h> - -/* open/fcntl - O_SYNC is only implemented on blocks devices and on files - located on an ext2 file system */ -#define O_ACCMODE 0003 -#define O_RDONLY 00 -#define O_WRONLY 01 -#define O_RDWR 02 -#define O_CREAT 0100 /* not fcntl */ -#define O_EXCL 0200 /* not fcntl */ -#define O_NOCTTY 0400 /* not fcntl */ -#define O_TRUNC 01000 /* not fcntl */ -#define O_APPEND 02000 -#define O_NONBLOCK 04000 -#define O_NDELAY O_NONBLOCK -#define O_SYNC 010000 -#define O_FSYNC O_SYNC -#define O_ASYNC 020000 - -#ifdef __USE_GNU -# define O_DIRECT 040000 /* Direct disk access. */ -# define O_DIRECTORY 0200000 /* Must be a directory. */ -# define O_NOFOLLOW 0400000 /* Do not follow links. */ -#endif - -/* For now Linux has synchronisity options for data and read operations. - We define the symbols here but let them do the same as O_SYNC since - this is a superset. */ -#if defined __USE_POSIX199309 || defined __USE_UNIX98 -# define O_DSYNC O_SYNC /* Synchronize data. */ -# define O_RSYNC O_SYNC /* Synchronize read operations. */ -#endif - -#ifdef __USE_LARGEFILE64 -# define O_LARGEFILE 0100000 -#endif - -/* Values for the second argument to `fcntl'. */ -#define F_DUPFD 0 /* Duplicate file descriptor. */ -#define F_GETFD 1 /* Get file descriptor flags. */ -#define F_SETFD 2 /* Set file descriptor flags. */ -#define F_GETFL 3 /* Get file status flags. */ -#define F_SETFL 4 /* Set file status flags. */ -#ifndef __USE_FILE_OFFSET64 -# define F_GETLK 5 /* Get record locking info. */ -# define F_SETLK 6 /* Set record locking info (non-blocking). */ -# define F_SETLKW 7 /* Set record locking info (blocking). */ -#else -# define F_GETLK F_GETLK64 /* Get record locking info. */ -# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/ -# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ -#endif -#define F_GETLK64 12 /* Get record locking info. */ -#define F_SETLK64 13 /* Set record locking info (non-blocking). */ -#define F_SETLKW64 14 /* Set record locking info (blocking). */ - -#if defined __USE_BSD || defined __USE_XOPEN2K -# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */ -# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */ -#endif - -#ifdef __USE_GNU -# define F_SETSIG 10 /* Set number of signal to be sent. */ -# define F_GETSIG 11 /* Get number of signal to be sent. */ -#endif - -#ifdef __USE_GNU -# define F_SETLEASE 1024 /* Set a lease. */ -# define F_GETLEASE 1025 /* Enquire what lease is active. */ -# define F_NOTIFY 1026 /* Request notfications on a directory. */ -# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with - close-on-exit set. */ -#endif - -/* For F_[GET|SET]FD. */ -#define FD_CLOEXEC 1 /* actually anything with low bit set goes */ - -/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */ -#define F_RDLCK 0 /* Read lock. */ -#define F_WRLCK 1 /* Write lock. */ -#define F_UNLCK 2 /* Remove lock. */ - -/* For old implementation of bsd flock(). */ -#define F_EXLCK 4 /* or 3 */ -#define F_SHLCK 8 /* or 4 */ - -#ifdef __USE_BSD -/* Operations for bsd flock(), also used by the kernel implementation. */ -# define LOCK_SH 1 /* shared lock */ -# define LOCK_EX 2 /* exclusive lock */ -# define LOCK_NB 4 /* or'd with one of the above to prevent - blocking */ -# define LOCK_UN 8 /* remove lock */ -#endif - -#ifdef __USE_GNU -# define LOCK_MAND 32 /* This is a mandatory flock: */ -# define LOCK_READ 64 /* ... which allows concurrent read operations. */ -# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */ -# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */ -#endif - -#ifdef __USE_GNU -/* Types of directory notifications that may be requested with F_NOTIFY. */ -# define DN_ACCESS 0x00000001 /* File accessed. */ -# define DN_MODIFY 0x00000002 /* File modified. */ -# define DN_CREATE 0x00000004 /* File created. */ -# define DN_DELETE 0x00000008 /* File removed. */ -# define DN_RENAME 0x00000010 /* File renamed. */ -# define DN_ATTRIB 0x00000020 /* File changed attributes. */ -# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */ -#endif - -struct flock - { - short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ - short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ -#ifndef __USE_FILE_OFFSET64 - __off_t l_start; /* Offset where the lock begins. */ - __off_t l_len; /* Size of the locked area; zero means until EOF. */ -#else - __off64_t l_start; /* Offset where the lock begins. */ - __off64_t l_len; /* Size of the locked area; zero means until EOF. */ -#endif - __pid_t l_pid; /* Process holding the lock. */ - }; - -#ifdef __USE_LARGEFILE64 -struct flock64 - { - short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ - short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ - __off64_t l_start; /* Offset where the lock begins. */ - __off64_t l_len; /* Size of the locked area; zero means until EOF. */ - __pid_t l_pid; /* Process holding the lock. */ - }; -#endif - -/* Define some more compatibility macros to be backward compatible with - BSD systems which did not managed to hide these kernel macros. */ -#ifdef __USE_BSD -# define FAPPEND O_APPEND -# define FFSYNC O_FSYNC -# define FASYNC O_ASYNC -# define FNONBLOCK O_NONBLOCK -# define FNDELAY O_NDELAY -#endif /* Use BSD. */ - -/* Advise to `posix_fadvise'. */ -#ifdef __USE_XOPEN2K -# define POSIX_FADV_NORMAL 0 /* No further special treatment. */ -# define POSIX_FADV_RANDOM 1 /* Expect random page references. */ -# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */ -# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */ -# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ -# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ -#endif diff --git a/ports/sysdeps/unix/sysv/linux/am33/bits/mman.h b/ports/sysdeps/unix/sysv/linux/am33/bits/mman.h deleted file mode 100644 index 697fea7919..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/bits/mman.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Definitions for POSIX memory map interface. Linux/AM33 version. - Copyright (C) 1997-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _SYS_MMAN_H -# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead." -#endif - -/* The following definitions basically come from the kernel headers. - But the kernel header is not namespace clean. */ - - -/* These are Linux-specific. */ -#ifdef __USE_MISC -# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */ -# define MAP_DENYWRITE 0x0800 /* ETXTBSY */ -# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */ -# define MAP_LOCKED 0x2000 /* Lock the mapping. */ -# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */ -#endif - -/* Include generic Linux declarations. */ -#include <bits/mman-linux.h> diff --git a/ports/sysdeps/unix/sysv/linux/am33/brk.c b/ports/sysdeps/unix/sysv/linux/am33/brk.c deleted file mode 100644 index f913fc6f88..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/brk.c +++ /dev/null @@ -1,45 +0,0 @@ -/* brk system call for Linux/am33. - Copyright (C) 1995-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/brk.c. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <unistd.h> -#include <sysdep.h> - -/* This must be initialized data because commons can't have aliases. */ -void *__curbrk = 0; - -int -__brk (void *addr) -{ - void *newbrk; - - newbrk = INLINE_SYSCALL (brk, 1, addr); - - __curbrk = newbrk; - - if (newbrk < addr) - { - __set_errno (ENOMEM); - return -1; - } - - return 0; -} -weak_alias (__brk, brk) diff --git a/ports/sysdeps/unix/sysv/linux/am33/chown.c b/ports/sysdeps/unix/sysv/linux/am33/chown.c deleted file mode 100644 index 819923eb49..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/chown.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/chown.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/clone.S b/ports/sysdeps/unix/sysv/linux/am33/clone.S deleted file mode 100644 index 81eeac05d6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/clone.S +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/clone.S. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -/* clone() is even more special than fork() as it mucks with stacks - and invokes a function in the right context after its all over. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <asm-syntax.h> - -/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */ - - .text -ENTRY (__clone) - /* Sanity check arguments. */ - cmp 0,d0 /* no NULL function pointers */ - beq L(error_inval) - cmp 0,d1 /* no NULL stack pointers */ - beq L(error_inval) - - /* Allocate room for a function call in the new stack, and - store fn and arg in it. They will be read back in - thread_start. */ - mov d1,a0 - sub 12,a0 - mov d0,(a0) - mov (16,sp),d1 - mov d1,(4,a0) - - /* Do the system call */ - mov a0,d1 - mov (12,sp),a0 - mov SYS_ify(clone),d0 - syscall 0 - - cmp 0,d0 - beq thread_start - blt L(to_SYSCALL_ERROR_LABEL) - -L(pseudo_end): - ret - -L(error_inval): - mov -EINVAL,d0 -L(to_SYSCALL_ERROR_LABEL): - jmp SYSCALL_ERROR_LABEL - -thread_start: - mov 0,a3 /* terminate the stack frame */ - mov (4,sp),d0 - mov (sp),a0 - calls (a0) -#ifdef PIC -L(here): - mov pc,a2 - add _GLOBAL_OFFSET_TABLE_-(L(here) - .),a2 -#endif - call JUMPTARGET (_exit),[],0 - -PSEUDO_END (__clone) - -weak_alias (__clone, clone) diff --git a/ports/sysdeps/unix/sysv/linux/am33/configure b/ports/sysdeps/unix/sysv/linux/am33/configure deleted file mode 100644 index c916a321ca..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/configure +++ /dev/null @@ -1,4 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for am33/sysdeps/unix/sysv/linux/am33 - -arch_minimum_kernel=2.6.25 diff --git a/ports/sysdeps/unix/sysv/linux/am33/configure.ac b/ports/sysdeps/unix/sysv/linux/am33/configure.ac deleted file mode 100644 index 43e33f74ca..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/configure.ac +++ /dev/null @@ -1,4 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for am33/sysdeps/unix/sysv/linux/am33 - -arch_minimum_kernel=2.6.25 diff --git a/ports/sysdeps/unix/sysv/linux/am33/fchown.c b/ports/sysdeps/unix/sysv/linux/am33/fchown.c deleted file mode 100644 index 3a69ecc9e7..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/fchown.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/fchown.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/fcntl.c b/ports/sysdeps/unix/sysv/linux/am33/fcntl.c deleted file mode 100644 index ea951bc4f9..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/fcntl.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/fcntl.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/fxstat.c b/ports/sysdeps/unix/sysv/linux/am33/fxstat.c deleted file mode 100644 index 4f219f0b9d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/fxstat.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/fxstat.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/getegid.c b/ports/sysdeps/unix/sysv/linux/am33/getegid.c deleted file mode 100644 index 37b4b4a530..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/getegid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/getegid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/geteuid.c b/ports/sysdeps/unix/sysv/linux/am33/geteuid.c deleted file mode 100644 index ebcb555b5e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/geteuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/geteuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/getgid.c b/ports/sysdeps/unix/sysv/linux/am33/getgid.c deleted file mode 100644 index 0a4d6061f0..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/getgid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/getgid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/getgroups.c b/ports/sysdeps/unix/sysv/linux/am33/getgroups.c deleted file mode 100644 index 20a7166103..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/getgroups.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/getgroups.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/getmsg.c b/ports/sysdeps/unix/sysv/linux/am33/getmsg.c deleted file mode 100644 index 3a1fa08525..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/getmsg.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/getmsg.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/getresgid.c b/ports/sysdeps/unix/sysv/linux/am33/getresgid.c deleted file mode 100644 index b703a414cc..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/getresgid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/getresgid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/getresuid.c b/ports/sysdeps/unix/sysv/linux/am33/getresuid.c deleted file mode 100644 index 0b14cefe34..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/getresuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/getresuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/getuid.c b/ports/sysdeps/unix/sysv/linux/am33/getuid.c deleted file mode 100644 index d682c79a49..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/getuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/getuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/lchown.c b/ports/sysdeps/unix/sysv/linux/am33/lchown.c deleted file mode 100644 index c89de99ba2..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/lchown.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/lchown.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h b/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h deleted file mode 100644 index 60b4fe03fc..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright (C) 2002-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com> - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include <tls.h> -#include <pt-machine.h> -#ifndef __ASSEMBLER__ -# include <linuxthreads/internals.h> -#endif - -#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt - -# undef PSEUDO -# define PSEUDO(name, syscall_name, args) \ - .text ; \ - ENTRY (name) \ - PUSHARGS_##args \ - DOARGS_##args \ - SINGLE_THREAD_P; \ - bne L(pseudo_cancel); \ - mov SYS_ify (syscall_name),d0; \ - syscall 0 \ - POPARGS_##args ; \ - cmp -126,d0; \ - bls L(pseudo_end); \ - jmp SYSCALL_ERROR_LABEL; \ - L(pseudo_cancel): \ - add -(16+STACK_SPACE (args)),sp; \ - SAVE_ARGS_##args \ - CENABLE \ - mov d0,r0; \ - LOAD_ARGS_##args \ - mov SYS_ify (syscall_name),d0; \ - syscall 0; \ - mov d0,(12,sp); \ - mov r0,d0; \ - CDISABLE \ - mov (12,sp),d0; \ - add +16+STACK_SPACE (args),sp \ - POPARGS_##args ; \ - cmp -126,d0; \ - bls L(pseudo_end); \ - jmp SYSCALL_ERROR_LABEL; \ - L(pseudo_end): \ - mov d0,a0 - -/* Reserve up to 2 stack slots for a0 and d1, but fewer than that if - we don't have that many arguments. */ -# define STACK_SPACE(n) (((((n) < 3) * (2 - (n))) + 2) * 4) - -# define SAVE_ARGS_0 -# define SAVE_ARGS_1 mov a0,(20,sp) ; -# define SAVE_ARGS_2 SAVE_ARGS_1 mov d1,(24,sp) ; -# define SAVE_ARGS_3 SAVE_ARGS_2 -# define SAVE_ARGS_4 SAVE_ARGS_3 -# define SAVE_ARGS_5 SAVE_ARGS_4 -# define SAVE_ARGS_6 SAVE_ARGS_5 - -# define LOAD_ARGS_0 -# define LOAD_ARGS_1 mov (20,sp),a0 ; -# define LOAD_ARGS_2 LOAD_ARGS_1 mov (24,sp),d1 ; -# define LOAD_ARGS_3 LOAD_ARGS_2 -# define LOAD_ARGS_4 LOAD_ARGS_3 -# define LOAD_ARGS_5 LOAD_ARGS_4 -# define LOAD_ARGS_6 LOAD_ARGS_5 - -# ifdef IS_IN_libpthread -# define CENABLE call __pthread_enable_asynccancel,[],0; -# define CDISABLE call __pthread_disable_asynccancel,[],0; -# elif defined IS_IN_librt -# ifdef PIC -# define CENABLE movm [a2],(sp); \ - 1: mov pc,a2; \ - add _GLOBAL_OFFSET_TABLE_-(1b-.),a2; \ - call +__librt_enable_asynccancel@PLT,[],0; \ - movm (sp),[a2]; -# define CENABLE movm [a2],(sp); \ - 1: mov pc,a2; \ - add _GLOBAL_OFFSET_TABLE_-(1b-.),a2; \ - call +__librt_disable_asynccancel@PLT,[],0; \ - movm (sp),[a2]; -# else -# define CENABLE call +__librt_enable_asynccancel,[],0; -# define CDISABLE call +__librt_disable_asynccancel,[],0; -# endif -# else -# define CENABLE call +__libc_enable_asynccancel,[],0; -# define CDISABLE call +__libc_disable_asynccancel,[],0; -# endif - -#if !defined NOT_IN_libc -# define __local_multiple_threads __libc_multiple_threads -#elif defined IS_IN_libpthread -# define __local_multiple_threads __pthread_multiple_threads -#else -# define __local_multiple_threads __librt_multiple_threads -#endif - -# ifndef __ASSEMBLER__ -# if defined FLOATING_STACKS && USE___THREAD && defined PIC -# define SINGLE_THREAD_P \ - __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ - p_header.data.multiple_threads) == 0, 1) -# else -extern int __local_multiple_threads -# if !defined NOT_IN_libc || defined IS_IN_libpthread - attribute_hidden; -# else - ; -# endif -# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) -# endif -# else -# if !defined PIC -# define SINGLE_THREAD_P \ - mov (+__local_multiple_threads),d0; \ - cmp 0,d0 -# elif !defined NOT_IN_libc || defined IS_IN_libpthread -# define SINGLE_THREAD_P \ - movm [a2],(sp); \ - 1: mov pc,a2; \ - add _GLOBAL_OFFSET_TABLE_-(1b-.),a2; \ - mov (+__local_multiple_threads@GOTOFF,a2),d0; \ - movm (sp),[a2]; \ - cmp 0,d0 -# else -# define SINGLE_THREAD_P \ - movm [a2],(sp); \ - 1: mov pc,a2; \ - add _GLOBAL_OFFSET_TABLE_-(1b-.),a2; \ - mov (+__local_multiple_threads@GOT,a2),a2; \ - mov (a2),d0; \ - movm (sp),[a2]; \ - cmp 0,d0 -# endif -# endif - -#elif !defined __ASSEMBLER__ - -/* This code should never be used but we define it anyhow. */ -# define SINGLE_THREAD_P (1) - -#endif diff --git a/ports/sysdeps/unix/sysv/linux/am33/lockf64.c b/ports/sysdeps/unix/sysv/linux/am33/lockf64.c deleted file mode 100644 index a88f5a784a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/lockf64.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/lockf64.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/lxstat.c b/ports/sysdeps/unix/sysv/linux/am33/lxstat.c deleted file mode 100644 index 0efa0aea49..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/lxstat.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/lxstat.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/profil-counter.h b/ports/sysdeps/unix/sysv/linux/am33/profil-counter.h deleted file mode 100644 index 888b5c3037..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/profil-counter.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Low-level statistical profiling support function. Linux/am33 version. - Copyright (C) 1996-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <signal.h> -#include <sigcontextinfo.h> - -static void -profil_counter (int signo, SIGCONTEXT scp) -{ - profil_count ((void *) GET_PC (scp)); -} diff --git a/ports/sysdeps/unix/sysv/linux/am33/putmsg.c b/ports/sysdeps/unix/sysv/linux/am33/putmsg.c deleted file mode 100644 index ebc1680ca7..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/putmsg.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/putmsg.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setegid.c b/ports/sysdeps/unix/sysv/linux/am33/setegid.c deleted file mode 100644 index 2e3a54c893..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setegid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setegid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/seteuid.c b/ports/sysdeps/unix/sysv/linux/am33/seteuid.c deleted file mode 100644 index 18e41d08c1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/seteuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/seteuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setfsgid.c b/ports/sysdeps/unix/sysv/linux/am33/setfsgid.c deleted file mode 100644 index 0886712569..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setfsgid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setfsgid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setfsuid.c b/ports/sysdeps/unix/sysv/linux/am33/setfsuid.c deleted file mode 100644 index a9f22eb8ab..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setfsuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setfsuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setgid.c b/ports/sysdeps/unix/sysv/linux/am33/setgid.c deleted file mode 100644 index 377021d9ec..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setgid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setgid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setgroups.c b/ports/sysdeps/unix/sysv/linux/am33/setgroups.c deleted file mode 100644 index cb9a7708e3..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setgroups.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setgroups.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setregid.c b/ports/sysdeps/unix/sysv/linux/am33/setregid.c deleted file mode 100644 index 99c57ad20f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setregid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setregid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setresgid.c b/ports/sysdeps/unix/sysv/linux/am33/setresgid.c deleted file mode 100644 index daca1a4833..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setresgid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setresgid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setresuid.c b/ports/sysdeps/unix/sysv/linux/am33/setresuid.c deleted file mode 100644 index 3aeabe9ad7..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setresuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setresuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setreuid.c b/ports/sysdeps/unix/sysv/linux/am33/setreuid.c deleted file mode 100644 index 8ad61226e9..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setreuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setreuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setrlimit.c b/ports/sysdeps/unix/sysv/linux/am33/setrlimit.c deleted file mode 100644 index bfaef74c38..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setrlimit.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setrlimit.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/setuid.c b/ports/sysdeps/unix/sysv/linux/am33/setuid.c deleted file mode 100644 index de394379be..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/setuid.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/setuid.c> diff --git a/ports/sysdeps/unix/sysv/linux/am33/socket.S b/ports/sysdeps/unix/sysv/linux/am33/socket.S deleted file mode 100644 index a6839123a1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/socket.S +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/socket.S. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include <socketcall.h> - -#define P(a, b) P2(a, b) -#define P2(a, b) a##b - - .text -/* The socket-oriented system calls are handled unusally in Linux. - They are all gated through the single `socketcall' system call number. - `socketcall' takes two arguments: the first is the subcode, specifying - which socket function is being called; and the second is a pointer to - the arguments to the specific function. - - The .S files for the other calls just #define socket and #include this. */ - -#ifndef __socket -#ifndef NO_WEAK_ALIAS -#define __socket P(__,socket) -#else -#define __socket socket -#endif -#endif - -.globl __socket -ENTRY (__socket) - - mov d0,(4,sp) - mov d1,(8,sp) - - mov SYS_ify(socketcall),d0 /* System call number in d0. */ - - /* Use ## so `socket' is a separate token that might be #define'd. */ - mov P(SOCKOP_,socket),a0 /* Subcode is first arg to syscall. */ - mov sp,d1 - add 4,d1 /* Address of args is 2nd arg. */ - - /* Do the system call trap. */ - syscall 0 - - /* d0 is < 0 if there was an error. */ - cmp -126,d0 - bls L(pseudo_end) - jmp SYSCALL_ERROR_LABEL - - /* Successful; return the syscall's value. */ -L(pseudo_end): - ret - -PSEUDO_END (__socket) - -#ifndef NO_WEAK_ALIAS -weak_alias (__socket, socket) -#endif diff --git a/ports/sysdeps/unix/sysv/linux/am33/syscall.S b/ports/sysdeps/unix/sysv/linux/am33/syscall.S deleted file mode 100644 index 6ab91b0fc2..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/syscall.S +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (C) 1995-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/syscall.S. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -/* Please consult the file sysdeps/unix/sysv/linux/am33/sysdep.h for - more information about the value -126 used below.*/ - - .text -ENTRY (syscall) - movm [d2,d3,a2,a3],(sp) /* Save register contents. */ - mov d1,a0 - mov (28,sp),d1 - mov (32,sp),a3 - mov (36,sp),a2 - mov (40,sp),d3 - mov (44,sp),d2 - syscall 0 /* Do the system call. */ - movm (sp),[d2,d3,a2,a3] /* Restore register contents. */ - cmp -126,d0 /* Check for error. */ - bls L(pseudo_end) - jmp SYSCALL_ERROR_LABEL /* Jump to error handler if error. */ -L(pseudo_end): - ret /* Return to caller. */ - -PSEUDO_END (syscall) diff --git a/ports/sysdeps/unix/sysv/linux/am33/sysdep.S b/ports/sysdeps/unix/sysv/linux/am33/sysdep.S deleted file mode 100644 index 81ad03f700..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/sysdep.S +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1995-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/sysdep.S. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -/* The following code is only used in the shared library when we - compile the reentrant version. Otherwise each system call defines - each own version. */ - -#ifndef PIC - -#undef CALL_MCOUNT -#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */ - - .text -ENTRY (__syscall_error) - mov d0,d1 - clr d0 - sub d1,d0 - -#define __syscall_error __syscall_error_1 -#include <../../../am33/sysdep.S> - -#endif /* !PIC */ diff --git a/ports/sysdeps/unix/sysv/linux/am33/sysdep.h b/ports/sysdeps/unix/sysv/linux/am33/sysdep.h deleted file mode 100644 index 63fe716594..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/sysdep.h +++ /dev/null @@ -1,316 +0,0 @@ -/* Copyright 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Alexandre Oliva <aoliva@redhat.com>. - Based on ../i386/sysdep.h. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _LINUX_AM33_SYSDEP_H -#define _LINUX_AM33_SYSDEP_H 1 - -/* There is some commonality. */ -#include "../../../am33/sysdep.h" - -/* For Linux we can use the system call table in the header file - /usr/include/asm/unistd.h - of the kernel. But these symbols do not follow the SYS_* syntax - so we have to redefine the `SYS_ify' macro here. */ -#undef SYS_ify -#define SYS_ify(syscall_name) __NR_##syscall_name - -/* ELF-like local names start with `.L'. */ -#undef L -#define L(name) .L##name - -#ifdef __ASSEMBLER__ - -/* Linux uses a negative return value to indicate syscall errors, - unlike most Unices, which use the condition codes' carry flag. - - Since version 2.1 the return value of a system call might be - negative even if the call succeeded. E.g., the `lseek' system call - might return a large offset. Therefore we must not anymore test - for < 0, but test for a real error by making sure the value in %eax - is a real error number. Linus said he will make sure the no syscall - returns a value in -1 .. -4095 as a valid result so we can savely - test with -4095. */ - -/* We don't want the label for the error handle to be global when we define - it here. */ -#ifdef PIC -# define SYSCALL_ERROR_LABEL 0f -#else -# define SYSCALL_ERROR_LABEL syscall_error -#endif - -#undef PSEUDO -#define PSEUDO(name, syscall_name, args) \ - .text; \ - ENTRY (name) \ - DO_CALL (syscall_name, args); \ - cmp -126,d0; \ - bls L(pseudo_end); \ - jmp SYSCALL_ERROR_LABEL; \ - L(pseudo_end): \ - mov d0,a0; - -#undef PSEUDO_END -#define PSEUDO_END(name) \ - SYSCALL_ERROR_HANDLER \ - END (name) - -#undef PSEUDO_NOERROR -#define PSEUDO_NOERRNO(name, syscall_name, args) \ - .text; \ - ENTRY (name) \ - DO_CALL (syscall_name, args) - -#undef PSEUDO_END_NOERRNO -#define PSEUDO_END_NOERRNO(name) \ - END (name) - -#define ret_NOERRNO ret - -/* The function has to return the error code. */ -#undef PSEUDO_ERRVAL -#define PSEUDO_ERRVAL(name, syscall_name, args) \ - .text; \ - ENTRY (name) \ - DO_CALL (syscall_name, args); \ - clr d1; \ - sub d0,d1,d0 - -#undef PSEUDO_END_ERRVAL -#define PSEUDO_END_ERRVAL(name) \ - END (name) - -#define ret_ERRVAL ret - -#ifndef PIC -#define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ -#else -/* Store (- d0) into errno through the GOT. */ -#ifdef _LIBC_REENTRANT -#define SYSCALL_ERROR_HANDLER \ -0:movm [d2,a2],(sp); \ - add -12,sp; \ -1:mov pc,a2; \ - add _GLOBAL_OFFSET_TABLE_-(1b-.),a2; \ - clr d2; \ - sub d0,d2; \ - call __errno_location@PLT,[],0; \ - mov d2,(a0); \ - add 12,sp; \ - movm (sp),[d2,a2]; \ - mov -1,d0; \ - mov d0,a0; \ - jmp L(pseudo_end); -/* A quick note: it is assumed that the call to `__errno_location' does - not modify the stack! */ -#else -#define SYSCALL_ERROR_HANDLER \ -0:mov pc,a0; \ - add _GLOBAL_OFFSET_TABLE_-(0b-.),a0; \ - clr d1; \ - sub d0,d1; \ - mov (errno@GOT,a0),a1; \ - mov d1,(a0); \ - mov -1,d0; \ - mov d0,a0; \ - jmp L(pseudo_end); -#endif /* _LIBC_REENTRANT */ -#endif /* PIC */ - -/* Linux takes system call arguments in registers: - - syscall number d0 call-clobbered - arg 1 a0 call-clobbered - arg 2 d1 call-clobbered - arg 3 a3 call-saved - arg 4 a2 call-saved - arg 5 d3 call-saved - arg 6 d2 call-saved - - The stack layout upon entering the function is: - - (24,sp) Arg# 6 - (20,sp) Arg# 5 - (16,sp) Arg# 4 - (12,sp) Arg# 3 - d1 Arg# 2 - d0 Arg# 1 - (sp) Return address - - (Of course a function with say 3 arguments does not have entries for - arguments 4, 5 and 6.) */ - -#undef DO_CALL -#define DO_CALL(syscall_name, args) \ - PUSHARGS_##args \ - DOARGS_##args \ - mov SYS_ify (syscall_name),d0; \ - syscall 0 \ - POPARGS_##args - -#define PUSHARGS_0 /* No arguments to push. */ -#define _DOARGS_0(N) /* No arguments to frob. */ -#define DOARGS_0 /* No arguments to frob. */ -#define POPARGS_0 /* No arguments to pop. */ - -#define PUSHARGS_1 /* No arguments to push. */ -#define _DOARGS_1(N) _DOARGS_0 (N-4) mov d0,a0; -#define DOARGS_1 _DOARGS_1 (4) -#define POPARGS_1 /* No arguments to pop. */ - -#define PUSHARGS_2 /* No arguments to push. */ -#define _DOARGS_2(N) _DOARGS_1 (N-4) /* Argument already in d1. */ -#define DOARGS_2 _DOARGS_2 (8) -#define POPARGS_2 /* No arguments to pop. */ - -#define PUSHARGS_3 movm [a3],(sp); -#define _DOARGS_3(N) _DOARGS_2 (N-4) mov (N,sp),a3; -#define DOARGS_3 _DOARGS_3 (16) -#define POPARGS_3 ; movm (sp),[a3] - -#define PUSHARGS_4 movm [a2,a3],(sp); -#define _DOARGS_4(N) _DOARGS_3 (N-4) mov (N,sp),a2; -#define DOARGS_4 _DOARGS_4 (24) -#define POPARGS_4 ; movm (sp),[a2,a3] - -#define PUSHARGS_5 movm [d3,a2,a3],(sp); -#define _DOARGS_5(N) _DOARGS_4 (N-4) mov (N,sp),d3; -#define DOARGS_5 _DOARGS_5 (32) -#define POPARGS_5 ; movm (sp),[d3,a2,a3] - -#define PUSHARGS_6 movm [d2,d3,a2,a3],(sp); -#define _DOARGS_6(N) _DOARGS_5 (N-4) mov (N,sp),d2; -#define DOARGS_6 _DOARGS_6 (40) -#define POPARGS_6 ; movm (sp),[d2,d3,a2,a3] - -#else /* !__ASSEMBLER__ */ - -/* Define a macro which expands inline into the wrapper code for a system - call. */ -#undef INLINE_SYSCALL -#define INLINE_SYSCALL(name, nr, args...) \ - ({ \ - unsigned int resultvar = INTERNAL_SYSCALL (name, , nr, args); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (resultvar, ), 0)) \ - { \ - __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, )); \ - resultvar = 0xffffffff; \ - } \ - (int) resultvar; }) - -#define INTERNAL_SYSCALL(name, err, nr, args...) \ -({ \ - register long __sc0 asm ("d0") = __NR_##name; \ - inline_syscall##nr(name, ## args); \ - __sc0; \ -}) - -#undef INTERNAL_SYSCALL_DECL -#define INTERNAL_SYSCALL_DECL(err) do { } while (0) - -#undef INTERNAL_SYSCALL_ERROR_P -#define INTERNAL_SYSCALL_ERROR_P(val, err) \ - ((unsigned int) (val) >= (unsigned long)-125) - -#undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) - -#define inline_syscall0(name,dummy...) \ -__asm__ __volatile__ ("syscall 0" \ - : "+d" (__sc0) \ - : : "memory") - -#define inline_syscall1(name,arg1) \ -register long __sc1 asm ("a0") = (long) (arg1); \ -inline_syscall0 (name); \ -__asm__ __volatile__ ("" : : "r" (__sc1)) - -#define inline_syscall2(name,arg1,arg2) \ -register long __sc2 asm ("d1") = (long) (arg2); \ -inline_syscall1 (name,(arg1)); \ -__asm__ __volatile__ ("" : : "r" (__sc2)) - -/* We can't tell whether a3 is going to be eliminated in the enclosing - function, so we have to assume it isn't. We first load the value - of any arguments into their registers, except for a3 itself, that - may be needed to load the value of the other arguments. Then, we - save a3's value in some other register, and load the argument value - into a3. We have to force both a3 and its copy to be live in - different registers at the same time, to avoid having the copy - spilled and the value reloaded into the same register, in which - case we'd be unable to get the value of a3 back, should the stack - slot reference be (offset,a3). */ -#define inline_syscall3(name,arg1,arg2,arg3) \ -long __sc3v = (long) (arg3); \ -register long __sc1 asm ("a0") = (long) (arg1); \ -register long __sc2 asm ("d1") = (long) (arg2); \ -register long __sc3 asm ("a3") = __sc3; \ -register long __sc3c; \ -__asm__ __volatile__ ("mov %1,%0" : "=&r" (__sc3c) : "r" (__sc3)); \ -__sc3 = __sc3v; \ -__asm__ __volatile__ ("" : : "r" (__sc3c), "r" (__sc3)); \ -inline_syscall0 (name); \ -__sc3 = __sc3c; \ -__asm__ __volatile__ ("" : : "r" (__sc3), "r" (__sc2), "r" (__sc1)) - -#ifdef PIC -/* Since a2 is the PIC register, it requires similar handling as a3 - when we're generating PIC, as a2's value may be needed to load - arguments whose values live in global variables. The difference is - that we don't need to require its value to be live in a register; - it may well be in a stack slot, as long as we save it before - clobbering a3 and restore it after restoring a3. */ -#define inline_syscall4(name,arg1,arg2,arg3,arg4) \ -long __sc4v = (long) (arg4); \ -long __sc3v = (long) (arg3); \ -register long __sc1 asm ("a0") = (long) (arg1); \ -register long __sc2 asm ("d1") = (long) (arg2); \ -register long __sc3 asm ("a3") = __sc3; \ -register long __sc3c; \ -register long __sc4 asm ("a2") = __sc4; \ -long __sc4c = __sc4; \ -__sc4 = __sc4v; \ -__asm__ __volatile__ ("mov %1,%0" : "=&r" (__sc3c) : "r" (__sc3)); \ -__sc3 = __sc3v; \ -__asm__ __volatile__ ("" : : "r" (__sc3c), "r" (__sc3), "r" (__sc4)); \ -inline_syscall0 (name); \ -__sc3 = __sc3c; \ -__sc4 = __sc4c; \ -__asm__ __volatile__ ("" : : "r" (__sc4), "r" (__sc3), \ - "r" (__sc2), "r" (__sc1)) -#else -#define inline_syscall4(name,arg1,arg2,arg3,arg4) \ -register long __sc4 asm ("a2") = (long) (arg4); \ -inline_syscall3 (name,(arg1),(arg2),(arg3)); \ -__asm__ __volatile__ ("" : : "r" (__sc4)) -#endif - -#define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5) \ -register long __sc5 asm ("d3") = (long) (arg5); \ -inline_syscall4 (name,(arg1),(arg2),(arg3),(arg4)); \ -__asm__ __volatile__ ("" : : "r" (__sc5)) - -#define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \ -register long __sc6 asm ("d2") = (long) (arg6); \ -inline_syscall5 (name,(arg1),(arg2),(arg3),(arg4),(arg5)); \ -__asm__ __volatile__ ("" : : "r" (__sc6)) - -#endif /* __ASSEMBLER__ */ - -#endif /* linux/am33/sysdep.h */ diff --git a/ports/sysdeps/unix/sysv/linux/am33/xstat.c b/ports/sysdeps/unix/sysv/linux/am33/xstat.c deleted file mode 100644 index e9869f5508..0000000000 --- a/ports/sysdeps/unix/sysv/linux/am33/xstat.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/i386/xstat.c> |