mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-11 11:50:06 +00:00
ARC: Linux ABI
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
add5071a5c
commit
e5ccf113cd
32
sysdeps/arc/nptl/pthreaddef.h
Normal file
32
sysdeps/arc/nptl/pthreaddef.h
Normal file
@ -0,0 +1,32 @@
|
||||
/* pthread machine parameter definitions, ARC version.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Default stack size. */
|
||||
#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
|
||||
|
||||
/* Required stack pointer alignment at beginning. */
|
||||
#define STACK_ALIGN 4
|
||||
|
||||
/* Minimal stack size after allocating thread descriptor and guard size. */
|
||||
#define MINIMAL_REST_STACK 2048
|
||||
|
||||
/* Alignment requirement for TCB. */
|
||||
#define TCB_ALIGNMENT 4
|
||||
|
||||
/* Location of current stack frame. */
|
||||
#define CURRENT_STACK_FRAME __builtin_frame_address (0)
|
35
sysdeps/unix/sysv/linux/arc/bits/procfs.h
Normal file
35
sysdeps/unix/sysv/linux/arc/bits/procfs.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* Types for registers for sys/procfs.h. ARC version.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_PROCFS_H
|
||||
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
|
||||
#endif
|
||||
|
||||
#include <sys/ucontext.h>
|
||||
|
||||
/* And the whole bunch of them. We could have used `struct
|
||||
user_regs' directly in the typedef, but tradition says that
|
||||
the register set is an array, which does have some peculiar
|
||||
semantics, so leave it that way. */
|
||||
#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof (elf_greg_t))
|
||||
|
||||
typedef unsigned long int elf_greg_t;
|
||||
typedef unsigned long int elf_gregset_t[ELF_NGREG];
|
||||
|
||||
/* There's no seperate floating point reg file in ARCv2. */
|
||||
typedef struct { } elf_fpregset_t;
|
12
sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
Normal file
12
sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
Normal file
@ -0,0 +1,12 @@
|
||||
/* Architecture-specific __sigset_t definition. ARC version. */
|
||||
#ifndef ____sigset_t_defined
|
||||
#define ____sigset_t_defined
|
||||
|
||||
/* Linux asm-generic syscall ABI expects sigset_t to hold 64 signals. */
|
||||
#define _SIGSET_NWORDS (64 / (8 * sizeof (unsigned long int)))
|
||||
typedef struct
|
||||
{
|
||||
unsigned long int __val[_SIGSET_NWORDS];
|
||||
} __sigset_t;
|
||||
|
||||
#endif
|
64
sysdeps/unix/sysv/linux/arc/getcontext.S
Normal file
64
sysdeps/unix/sysv/linux/arc/getcontext.S
Normal file
@ -0,0 +1,64 @@
|
||||
/* Save current context for ARC.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "ucontext-macros.h"
|
||||
|
||||
/* int getcontext (ucontext_t *ucp)
|
||||
Save machine context in @ucp and return 0 on success, -1 on error
|
||||
- saves callee saved registers only
|
||||
- layout mandated by uncontext_t:uc_mcontext (hence different from setjmp). */
|
||||
|
||||
ENTRY (__getcontext)
|
||||
|
||||
/* Callee saved registers. */
|
||||
add r2, r0, UCONTEXT_MCONTEXT
|
||||
STR (r13, r2, 37)
|
||||
STR (r14, r2, 36)
|
||||
STR (r15, r2, 35)
|
||||
STR (r16, r2, 34)
|
||||
STR (r17, r2, 33)
|
||||
STR (r18, r2, 32)
|
||||
STR (r19, r2, 31)
|
||||
STR (r20, r2, 30)
|
||||
STR (r21, r2, 29)
|
||||
STR (r22, r2, 28)
|
||||
STR (r23, r2, 27)
|
||||
STR (r24, r2, 26)
|
||||
|
||||
STR (blink, r2, 7)
|
||||
STR (fp, r2, 8)
|
||||
STR (gp, r2, 9)
|
||||
STR (sp, r2, 23)
|
||||
|
||||
/* Save 0 in r0 placeholder to return 0 when this @ucp activated. */
|
||||
mov r9, 0
|
||||
STR (r9, r2, 22)
|
||||
|
||||
/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8). */
|
||||
mov r3, _NSIG8
|
||||
add r2, r0, UCONTEXT_SIGMASK
|
||||
mov r1, 0
|
||||
mov r0, SIG_BLOCK
|
||||
mov r8, __NR_rt_sigprocmask
|
||||
ARC_TRAP_INSN
|
||||
brhi r0, -1024, L (call_syscall_err)
|
||||
j.d [blink]
|
||||
mov r0, 0 /* Success, error handled in .Lcall_syscall_err. */
|
||||
|
||||
PSEUDO_END (__getcontext)
|
||||
weak_alias (__getcontext, getcontext)
|
73
sysdeps/unix/sysv/linux/arc/makecontext.c
Normal file
73
sysdeps/unix/sysv/linux/arc/makecontext.c
Normal file
@ -0,0 +1,73 @@
|
||||
/* Create new context for ARC.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/ucontext.h>
|
||||
|
||||
void
|
||||
__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
|
||||
{
|
||||
extern void __startcontext (void) attribute_hidden;
|
||||
unsigned long int sp, *r;
|
||||
va_list vl;
|
||||
int i, reg_args, stack_args;
|
||||
|
||||
sp = ((unsigned long int) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size) & ~7;
|
||||
|
||||
ucp->uc_mcontext.__sp = sp;
|
||||
ucp->uc_mcontext.__fp = 0;
|
||||
|
||||
/* __startcontext is sort of trampoline to invoke @func
|
||||
From setcontext pov, the resume address is __startcontext,
|
||||
set it up in BLINK place holder. */
|
||||
|
||||
ucp->uc_mcontext.__blink = (unsigned long int) &__startcontext;
|
||||
|
||||
/* __startcontext passed 2 types of args
|
||||
- args to @func setup in canonical r0-r7
|
||||
- @func and next function in r14,r15. */
|
||||
|
||||
ucp->uc_mcontext.__r14 = (unsigned long int) func;
|
||||
ucp->uc_mcontext.__r15 = (unsigned long int) ucp->uc_link;
|
||||
|
||||
r = &ucp->uc_mcontext.__r0;
|
||||
|
||||
va_start (vl, argc);
|
||||
|
||||
reg_args = argc > 8 ? 8 : argc;
|
||||
for (i = 0; i < reg_args; i++)
|
||||
*r-- = va_arg (vl, unsigned long int);
|
||||
|
||||
stack_args = argc - reg_args;
|
||||
|
||||
if (__glibc_unlikely (stack_args > 0))
|
||||
{
|
||||
sp -= stack_args * sizeof (unsigned long int);
|
||||
ucp->uc_mcontext.__sp = sp;
|
||||
r = (unsigned long int *) sp;
|
||||
|
||||
for (i = 0; i < stack_args; i++)
|
||||
*r++ = va_arg (vl, unsigned long int);
|
||||
}
|
||||
|
||||
va_end (vl);
|
||||
}
|
||||
|
||||
weak_alias (__makecontext, makecontext)
|
93
sysdeps/unix/sysv/linux/arc/setcontext.S
Normal file
93
sysdeps/unix/sysv/linux/arc/setcontext.S
Normal file
@ -0,0 +1,93 @@
|
||||
/* Set current context for ARC.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "ucontext-macros.h"
|
||||
|
||||
/* int setcontext (const ucontext_t *ucp)
|
||||
- Restores the machine context in @ucp and resumes execution
|
||||
(doesn't return to caller). */
|
||||
|
||||
ENTRY (__setcontext)
|
||||
|
||||
mov r9, r0 /* Stash @ucp across syscall. */
|
||||
|
||||
/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8). */
|
||||
mov r3, _NSIG8
|
||||
mov r2, 0
|
||||
add r1, r0, UCONTEXT_SIGMASK
|
||||
mov r0, SIG_SETMASK
|
||||
mov r8, __NR_rt_sigprocmask
|
||||
ARC_TRAP_INSN
|
||||
brhi r0, -1024, L (call_syscall_err)
|
||||
|
||||
/* Restore scratch/arg regs for makecontext case. */
|
||||
add r9, r9, UCONTEXT_MCONTEXT
|
||||
LDR (r0, r9, 22)
|
||||
LDR (r1, r9, 21)
|
||||
LDR (r2, r9, 20)
|
||||
LDR (r3, r9, 19)
|
||||
LDR (r4, r9, 18)
|
||||
LDR (r5, r9, 17)
|
||||
LDR (r6, r9, 16)
|
||||
LDR (r7, r9, 15)
|
||||
|
||||
/* Restore callee saved registers. */
|
||||
LDR (r13, r9, 37)
|
||||
LDR (r14, r9, 36)
|
||||
LDR (r15, r9, 35)
|
||||
LDR (r16, r9, 34)
|
||||
LDR (r17, r9, 33)
|
||||
LDR (r18, r9, 32)
|
||||
LDR (r19, r9, 31)
|
||||
LDR (r20, r9, 30)
|
||||
LDR (r21, r9, 29)
|
||||
LDR (r22, r9, 28)
|
||||
LDR (r23, r9, 27)
|
||||
LDR (r24, r9, 26)
|
||||
|
||||
LDR (blink, r9, 7)
|
||||
LDR (fp, r9, 8)
|
||||
LDR (gp, r9, 9)
|
||||
LDR (sp, r9, 23)
|
||||
|
||||
j [blink]
|
||||
|
||||
PSEUDO_END (__setcontext)
|
||||
weak_alias (__setcontext, setcontext)
|
||||
|
||||
|
||||
/* Helper for activating makecontext created context
|
||||
- r14 has @func, r15 has uc_link. */
|
||||
|
||||
ENTRY (__startcontext)
|
||||
|
||||
.cfi_label .Ldummy
|
||||
cfi_undefined (blink)
|
||||
|
||||
/* Call user @func, loaded in r14 by setcontext. */
|
||||
jl [r14]
|
||||
|
||||
/* If uc_link (r15) call setcontext with that. */
|
||||
mov r0, r15
|
||||
breq r0, 0, 1f
|
||||
|
||||
bl __setcontext
|
||||
1:
|
||||
/* Exit with status 0. */
|
||||
b HIDDEN_JUMPTARGET(exit)
|
||||
END (__startcontext)
|
28
sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
Normal file
28
sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
Normal file
@ -0,0 +1,28 @@
|
||||
/* ARC definitions for signal handling calling conventions.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SIGCONTEXTINFO_H
|
||||
#define _SIGCONTEXTINFO_H
|
||||
|
||||
static inline uintptr_t
|
||||
sigcontext_get_pc (const ucontext_t *ctx)
|
||||
{
|
||||
return ctx->uc_mcontext.__ret;
|
||||
}
|
||||
|
||||
#endif
|
94
sysdeps/unix/sysv/linux/arc/swapcontext.S
Normal file
94
sysdeps/unix/sysv/linux/arc/swapcontext.S
Normal file
@ -0,0 +1,94 @@
|
||||
/* Save and set current context for ARC.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "ucontext-macros.h"
|
||||
|
||||
/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp). */
|
||||
|
||||
ENTRY (__swapcontext)
|
||||
|
||||
/* Save context into @oucp pointed to by r0. */
|
||||
|
||||
add r2, r0, UCONTEXT_MCONTEXT
|
||||
STR (r13, r2, 37)
|
||||
STR (r14, r2, 36)
|
||||
STR (r15, r2, 35)
|
||||
STR (r16, r2, 34)
|
||||
STR (r17, r2, 33)
|
||||
STR (r18, r2, 32)
|
||||
STR (r19, r2, 31)
|
||||
STR (r20, r2, 30)
|
||||
STR (r21, r2, 29)
|
||||
STR (r22, r2, 28)
|
||||
STR (r23, r2, 27)
|
||||
STR (r24, r2, 26)
|
||||
|
||||
STR (blink, r2, 7)
|
||||
STR (fp, r2, 8)
|
||||
STR (gp, r2, 9)
|
||||
STR (sp, r2, 23)
|
||||
|
||||
/* Save 0 in r0 placeholder to return 0 when @oucp activated. */
|
||||
mov r9, 0
|
||||
STR (r9, r2, 22)
|
||||
|
||||
/* Load context from @ucp. */
|
||||
|
||||
mov r9, r1 /* Safekeep @ucp across syscall. */
|
||||
|
||||
/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
|
||||
mov r3, _NSIG8
|
||||
add r2, r0, UCONTEXT_SIGMASK
|
||||
add r1, r1, UCONTEXT_SIGMASK
|
||||
mov r0, SIG_SETMASK
|
||||
mov r8, __NR_rt_sigprocmask
|
||||
ARC_TRAP_INSN
|
||||
brhi r0, -1024, L (call_syscall_err)
|
||||
|
||||
add r9, r9, UCONTEXT_MCONTEXT
|
||||
LDR (r0, r9, 22)
|
||||
LDR (r1, r9, 21)
|
||||
LDR (r2, r9, 20)
|
||||
LDR (r3, r9, 19)
|
||||
LDR (r4, r9, 18)
|
||||
LDR (r5, r9, 17)
|
||||
LDR (r6, r9, 16)
|
||||
LDR (r7, r9, 15)
|
||||
|
||||
LDR (r13, r9, 37)
|
||||
LDR (r14, r9, 36)
|
||||
LDR (r15, r9, 35)
|
||||
LDR (r16, r9, 34)
|
||||
LDR (r17, r9, 33)
|
||||
LDR (r18, r9, 32)
|
||||
LDR (r19, r9, 31)
|
||||
LDR (r20, r9, 30)
|
||||
LDR (r21, r9, 29)
|
||||
LDR (r22, r9, 28)
|
||||
LDR (r23, r9, 27)
|
||||
LDR (r24, r9, 26)
|
||||
|
||||
LDR (blink, r9, 7)
|
||||
LDR (fp, r9, 8)
|
||||
LDR (gp, r9, 9)
|
||||
LDR (sp, r9, 23)
|
||||
|
||||
j [blink]
|
||||
|
||||
PSEUDO_END (__swapcontext)
|
||||
weak_alias (__swapcontext, swapcontext)
|
35
sysdeps/unix/sysv/linux/arc/sys/cachectl.h
Normal file
35
sysdeps/unix/sysv/linux/arc/sys/cachectl.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* cacheflush - flush contents of instruction and/or data cache.
|
||||
Copyright (C) 2020 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
|
||||
<https://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, int __nbytes, int __op) __THROW;
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
57
sysdeps/unix/sysv/linux/arc/sys/ucontext.h
Normal file
57
sysdeps/unix/sysv/linux/arc/sys/ucontext.h
Normal file
@ -0,0 +1,57 @@
|
||||
/* struct ucontext definition, ARC version.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* System V/ARC ABI compliant context switching support. */
|
||||
|
||||
#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 int __pad;
|
||||
unsigned long int __bta;
|
||||
unsigned long int __lp_start, __lp_end, __lp_count;
|
||||
unsigned long int __status32, __ret, __blink;
|
||||
unsigned long int __fp, __gp;
|
||||
unsigned long int __r12, __r11, __r10, __r9, __r8, __r7;
|
||||
unsigned long int __r6, __r5, __r4, __r3, __r2, __r1, __r0;
|
||||
unsigned long int __sp;
|
||||
unsigned long int __r26;
|
||||
unsigned long int __r25, __r24, __r23, __r22, __r21, __r20;
|
||||
unsigned long int __r19, __r18, __r17, __r16, __r15, __r14, __r13;
|
||||
unsigned long int __efa;
|
||||
unsigned long int __stop_pc;
|
||||
unsigned long int __r30, __r58, __r59;
|
||||
} 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;
|
||||
|
||||
#endif
|
32
sysdeps/unix/sysv/linux/arc/sys/user.h
Normal file
32
sysdeps/unix/sysv/linux/arc/sys/user.h
Normal file
@ -0,0 +1,32 @@
|
||||
/* ptrace register data format definitions.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_USER_H
|
||||
#define _SYS_USER_H 1
|
||||
|
||||
/* Struct user_regs_struct is exported by kernel header
|
||||
However apps like strace also expect a struct user, so it's better to
|
||||
have a dummy implementation. */
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
struct user
|
||||
{
|
||||
long int dummy;
|
||||
};
|
||||
|
||||
#endif
|
25
sysdeps/unix/sysv/linux/arc/ucontext-macros.h
Normal file
25
sysdeps/unix/sysv/linux/arc/ucontext-macros.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* Macros for ucontext routines, ARC version.
|
||||
Copyright (C) 2020 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _LINUX_ARC_UCONTEXT_MACROS_H
|
||||
#define _LINUX_ARC_UCONTEXT_MACROS_H
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "ucontext_i.h"
|
||||
|
||||
#endif
|
20
sysdeps/unix/sysv/linux/arc/ucontext_i.sym
Normal file
20
sysdeps/unix/sysv/linux/arc/ucontext_i.sym
Normal file
@ -0,0 +1,20 @@
|
||||
#include <inttypes.h>
|
||||
#include <signal.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/ucontext.h>
|
||||
|
||||
SIG_BLOCK
|
||||
SIG_SETMASK
|
||||
|
||||
-- sizeof(sigset_t) expected by kernel: see comment in ARC sigaction.c for details
|
||||
_NSIG8 (_NSIG / 8)
|
||||
|
||||
-- Offsets of the fields in the ucontext_t structure.
|
||||
#define ucontext(member) offsetof (ucontext_t, member)
|
||||
|
||||
UCONTEXT_FLAGS ucontext (__uc_flags)
|
||||
UCONTEXT_LINK ucontext (uc_link)
|
||||
UCONTEXT_STACK ucontext (uc_stack)
|
||||
UCONTEXT_MCONTEXT ucontext (uc_mcontext)
|
||||
UCONTEXT_SIGMASK ucontext (uc_sigmask)
|
||||
UCONTEXT_SIZE sizeof (ucontext_t)
|
Loading…
Reference in New Issue
Block a user