diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/csky/sys')
-rw-r--r-- | sysdeps/unix/sysv/linux/csky/sys/cachectl.h | 36 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/csky/sys/ucontext.h | 90 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/csky/sys/user.h | 60 |
3 files changed, 186 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/csky/sys/cachectl.h b/sysdeps/unix/sysv/linux/csky/sys/cachectl.h new file mode 100644 index 0000000000..5d4decf26f --- /dev/null +++ b/sysdeps/unix/sysv/linux/csky/sys/cachectl.h @@ -0,0 +1,36 @@ +/* C-SKY cache flushing interface. + Copyright (C) 2018 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/>. */ + +#ifndef _SYS_CACHECTL_H +#define _SYS_CACHECTL_H 1 + +#include <features.h> + +/* Get the kernel definition for the op bits. */ +#include <asm/cachectl.h> + +__BEGIN_DECLS + +#ifdef __USE_MISC +extern int cacheflush (void *__addr, const int __nbytes, + const int __op) __THROW; +#endif + +__END_DECLS + +#endif /* sys/cachectl.h */ diff --git a/sysdeps/unix/sysv/linux/csky/sys/ucontext.h b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h new file mode 100644 index 0000000000..7ecb3ffdaf --- /dev/null +++ b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h @@ -0,0 +1,90 @@ +/* struct ucontext definition, C-SKY version. + Copyright (C) 2018 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/>. */ + +#ifndef _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H 1 + +#include <features.h> + +#include <bits/types/sigset_t.h> +#include <bits/types/stack_t.h> + +typedef struct + { + unsigned long __tls; + unsigned long __lr; + unsigned long __pc; + unsigned long __sr; + unsigned long __usp; + + /* + * a0, a1, a2, a3: + * abiv1: r2, r3, r4, r5 + * abiv2: r0, r1, r2, r3 + */ + + unsigned long __orig_a0; + unsigned long __a0; + unsigned long __a1; + unsigned long __a2; + unsigned long __a3; + + /* + * ABIV2: r4 ~ r13 + */ + unsigned long __regs[10]; + + /* r16 ~ r30 */ + unsigned long __exregs[15]; + + unsigned long __rhi; + unsigned long __rlo; + unsigned long __glibc_reserved; + } gregset_t; + +typedef struct + { + unsigned long __vr[64]; + unsigned long __fcr; + unsigned long __fesr; + unsigned long __fid; + unsigned long __glibc_reserved; + } fpregset_t; + +/* Context to describe whole processor state. */ +typedef struct + { + unsigned long __mask; + gregset_t __gregs; + fpregset_t __fpregs; + } mcontext_t; + +/* Userlevel context. */ +typedef struct ucontext_t + { + unsigned long int __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 */ diff --git a/sysdeps/unix/sysv/linux/csky/sys/user.h b/sysdeps/unix/sysv/linux/csky/sys/user.h new file mode 100644 index 0000000000..9714277575 --- /dev/null +++ b/sysdeps/unix/sysv/linux/csky/sys/user.h @@ -0,0 +1,60 @@ +/* ptrace register data format definitions. C-SKY version. + Copyright (C) 2018 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/>. */ + +#ifndef _SYS_USER_H +#define _SYS_USER_H 1 + +struct user_fpregs { + unsigned long fsr; /* FPU status reg. */ + unsigned long fesr; /* FPU exception status reg. */ + unsigned long fp[32]; /* FPU general regs. */ +}; + +struct user_regs { + unsigned long int uregs[34]; /* CSKY V2 has 32 general rgister. */ +}; + +/* When the kernel dumps core, it starts by dumping the user struct - + this will be used by gdb to figure out where the data and stack segments + are within the file, and what virtual addresses to use. */ +struct user{ +/* We start with the registers, to mimic the way that "memory" is returned + from the ptrace(3,...) function. */ + struct user_regs regs; /* The registers are actually stored. */ + int u_fpvalid; /* True if math co-processor being used. */ + +/* The rest of this junk is to help gdb figure out what goes where. */ + unsigned long int u_tsize; /* Text segment size (pages). */ + unsigned long int u_dsize; /* Data segment size (pages). */ + unsigned long int u_ssize; /* Stack segment size (pages). */ + unsigned long start_code; /* Starting virtual address of text. */ + unsigned long start_stack; /* Starting virtual address of stack area. + This is actually the bottom of the stack + the top of the stack is always found in + the esp register. */ + long int signal; /* Signal that caused the core dump. */ + int reserved; /* No longer used. */ + struct user_regs * u_ar0; /* Used by gdb to help find the values + for the registers. */ + unsigned long magic; /* To uniquely identify a core file. */ + char u_comm[32]; /* User command that was responsible. */ + struct user_fpregs u_fp; + struct user_fpregs* u_fpstate; /* Math Co-processor pointer. */ +}; + +#endif /* _SYS_USER_H */ |