From 6af3332a4cbd1ffbc81f74759ef7c5e1a87d2e10 Mon Sep 17 00:00:00 2001 From: Vincent Ren-Wei Chen Date: Tue, 17 Jan 2017 07:31:24 +0100 Subject: nds32: add NPTL/TLS, *context function, libm changes and code cleanup This commit includes following features. 1. Support NPTL/TLS 2. Add libm function which is used to handle FP rounding and excpetions (ex: fclrexcpt,fedisblxcpti,feenablxcpt... ) 3. Add *context function for operating user context (ex: setcontext,getcontext,makecontext... ) 4. Change the return flow from signal handler 5. Cleanup of old code The testsuite only has 2 errors, tst-cpuclock1 and tst-cputimer1, which are related to timing accuracy. (math and locale tests are disabled) Signed-off-by: Vincent Ren-Wei Chen --- libc/sysdeps/linux/nds32/sys/ucontext.h | 117 +++++++------------------------- 1 file changed, 26 insertions(+), 91 deletions(-) (limited to 'libc/sysdeps/linux/nds32/sys') diff --git a/libc/sysdeps/linux/nds32/sys/ucontext.h b/libc/sysdeps/linux/nds32/sys/ucontext.h index 4dca27fd5..0d7422aab 100644 --- a/libc/sysdeps/linux/nds32/sys/ucontext.h +++ b/libc/sysdeps/linux/nds32/sys/ucontext.h @@ -1,7 +1,20 @@ -/* - * Copyright (C) 2016 Andes Technology, Inc. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ +/* Copyright (C) 1998, 1999, 2001, 2006 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 + . */ + #ifndef _SYS_UCONTEXT_H #define _SYS_UCONTEXT_H 1 @@ -10,103 +23,25 @@ #include #include -typedef int greg_t; - -/* Number of general registers. */ -#define NGREG 32 - -/* Container for all general registers. */ -typedef elf_gregset_t gregset_t; +/* We need the signal context definitions even if they are not used + * included in . */ +#include -/* Number of each register is the `gregset_t' array. */ -enum -{ - R0 = 0, -#define R0 R0 - R1 = 1, -#define R1 R1 - R2 = 2, -#define R2 R2 - R3 = 3, -#define R3 R3 - R4 = 4, -#define R4 R4 - R5 = 5, -#define R5 R5 - R6 = 6, -#define R6 R6 - R7 = 7, -#define R7 R7 - R8 = 8, -#define R8 R8 - R9 = 9, -#define R9 R9 - R10 = 10, -#define R10 R10 - R11 = 11, -#define R11 R11 - R12 = 12, -#define R12 R12 - R13 = 13, -#define R13 R13 - R14 = 14, -#define R14 R14 - R15 = 15, -#define R15 R15 - R16 = 16, -#define R16 R16 - R17 = 17, -#define R17 R17 - R18 = 18, -#define R18 R18 - R19 = 19, -#define R19 R19 - R20 = 20, -#define R20 R20 - R21 = 21, -#define R21 R21 - R22 = 22, -#define R22 R22 - R23 = 23, -#define R23 R23 - R24 = 24, -#define R24 R24 - R25 = 25, -#define R25 R25 - R26 = 26, -#define R26 R26 - R27 = 27, -#define R27 R27 - R28 = 28, -#define R28 R28 - R29 = 29, -#define R29 R29 - R30 = 30, -#define R30 R30 - R31 = 31 -#define R31 R31 -}; +/* Context to describe whole processor state. This only describes + the core registers; coprocessor registers get saved elsewhere + (e.g. in uc_regspace, or somewhere unspecified on the stack + during non-RT signal handlers). */ +typedef struct sigcontext mcontext_t; -/* Structure to describe FPU registers. */ -typedef elf_fpregset_t 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]; + __sigset_t uc_sigmask; } ucontext_t; - #endif /* sys/ucontext.h */ -- cgit v1.2.3