From 490e84f5e146485a26dea2f41279a4ff13aaca05 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 4 Feb 2018 15:34:18 +0000 Subject: tile: add basic support for tilegx This adds basic support for tile architecture. Only static binaries, no ld.so or threading support. Tested with qemu-tilegx only. --- libc/sysdeps/linux/tile/sys/ucontext.h | 96 ++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 libc/sysdeps/linux/tile/sys/ucontext.h (limited to 'libc/sysdeps/linux/tile/sys/ucontext.h') diff --git a/libc/sysdeps/linux/tile/sys/ucontext.h b/libc/sysdeps/linux/tile/sys/ucontext.h new file mode 100644 index 000000000..ed2c27b58 --- /dev/null +++ b/libc/sysdeps/linux/tile/sys/ucontext.h @@ -0,0 +1,96 @@ +/* Copyright (C) 2011-2018 Free Software Foundation, Inc. + + 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 + +#include +#include +#include + +#ifdef __USE_MISC +# define __ctx(fld) fld +#else +# define __ctx(fld) __ ## fld +#endif + +#ifdef __USE_MISC +/* Get register type and register names. */ +# include + + +/* Type for general register. */ +typedef uint_reg_t greg_t; + +/* Number of general registers. Must agree with . */ +# define NGREG 64 + +/* Container for all general registers. */ +typedef greg_t gregset_t[NGREG]; +#endif + +#ifdef __USE_GNU +/* Names for interesting registers in the `gregset_t' array. */ +enum +{ + /* ... r0 through r51 are just 0 through 51 ... */ + REG_FP = TREG_FP, +# define REG_FP REG_FP + REG_TP = TREG_TP, +# define REG_TP REG_TP + REG_SP = TREG_SP, +# define REG_SP REG_SP + REG_LR = TREG_LR, +# define REG_LR REG_LR +}; +#endif + +#define __need_int_reg_t +#include + +/* A machine context is exactly a sigcontext. */ +typedef struct + { + __extension__ union + { + __uint_reg_t __ctx(gregs)[56]; + __extension__ struct + { + __uint_reg_t __ctx(__gregs)[53]; + __uint_reg_t __ctx(tp); + __uint_reg_t __ctx(sp); + __uint_reg_t __ctx(lr); + }; + }; + __uint_reg_t __ctx(pc); + __uint_reg_t __ctx(ics); + __uint_reg_t __ctx(faultnum); + __uint_reg_t __glibc_reserved1[5]; + } mcontext_t; + +/* Userlevel context. */ +typedef struct ucontext_t + { + unsigned long int __ctx(uc_flags); + struct ucontext_t *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + } ucontext_t; + +#undef __ctx + +#endif /* sys/ucontext.h */ -- cgit v1.2.3