multi-arch glibc headers
This commit is contained in:
63
libc/include/riscv64-linux-gnu/sys/asm.h
Normal file
63
libc/include/riscv64-linux-gnu/sys/asm.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/* Miscellaneous macros.
|
||||
Copyright (C) 2000-2019 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_ASM_H
|
||||
#define _SYS_ASM_H
|
||||
|
||||
/* Macros to handle different pointer/register sizes for 32/64-bit code. */
|
||||
#if __riscv_xlen == 64
|
||||
# define PTRLOG 3
|
||||
# define SZREG 8
|
||||
# define REG_S sd
|
||||
# define REG_L ld
|
||||
#elif __riscv_xlen == 32
|
||||
# error "rv32i-based targets are not supported"
|
||||
#else
|
||||
# error __riscv_xlen must equal 32 or 64
|
||||
#endif
|
||||
|
||||
#if !defined __riscv_float_abi_soft
|
||||
/* For ABI uniformity, reserve 8 bytes for floats, even if double-precision
|
||||
floating-point is not supported in hardware. */
|
||||
# if defined __riscv_float_abi_double
|
||||
# define FREG_L fld
|
||||
# define FREG_S fsd
|
||||
# define SZFREG 8
|
||||
# else
|
||||
# error unsupported FLEN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Declare leaf routine. */
|
||||
#define LEAF(symbol) \
|
||||
.globl symbol; \
|
||||
.align 2; \
|
||||
.type symbol,@function; \
|
||||
symbol: \
|
||||
cfi_startproc;
|
||||
|
||||
/* Mark end of function. */
|
||||
#undef END
|
||||
#define END(function) \
|
||||
cfi_endproc; \
|
||||
.size function,.-function
|
||||
|
||||
/* Stack alignment. */
|
||||
#define ALMASK ~15
|
||||
|
||||
#endif /* sys/asm.h */
|
||||
32
libc/include/riscv64-linux-gnu/sys/cachectl.h
Normal file
32
libc/include/riscv64-linux-gnu/sys/cachectl.h
Normal file
@@ -0,0 +1,32 @@
|
||||
/* RISC-V instruction cache flushing interface
|
||||
Copyright (C) 2017-2019 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>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int __riscv_flush_icache (void *__start, void *__end,
|
||||
unsigned long int __flags);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/cachectl.h */
|
||||
110
libc/include/riscv64-linux-gnu/sys/ucontext.h
Normal file
110
libc/include/riscv64-linux-gnu/sys/ucontext.h
Normal file
@@ -0,0 +1,110 @@
|
||||
/* struct ucontext definition, RISC-V version.
|
||||
Copyright (C) 1997-2019 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/>. */
|
||||
|
||||
/* Don't rely on this, the interface is currently messed up and may need to
|
||||
be broken to be fixed. */
|
||||
#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 unsigned long int __riscv_mc_gp_state[32];
|
||||
|
||||
#ifdef __USE_MISC
|
||||
# define NGREG 32
|
||||
|
||||
# define REG_PC 0
|
||||
# define REG_RA 1
|
||||
# define REG_SP 2
|
||||
# define REG_TP 4
|
||||
# define REG_S0 8
|
||||
# define REG_S1 9
|
||||
# define REG_A0 10
|
||||
# define REG_S2 18
|
||||
# define REG_NARGS 8
|
||||
|
||||
typedef unsigned long int greg_t;
|
||||
|
||||
/* Container for all general registers. */
|
||||
typedef __riscv_mc_gp_state gregset_t;
|
||||
|
||||
/* Container for floating-point state. */
|
||||
typedef union __riscv_mc_fp_state fpregset_t;
|
||||
#endif
|
||||
|
||||
struct __riscv_mc_f_ext_state
|
||||
{
|
||||
unsigned int __f[32];
|
||||
unsigned int __fcsr;
|
||||
};
|
||||
|
||||
struct __riscv_mc_d_ext_state
|
||||
{
|
||||
unsigned long long int __f[32];
|
||||
unsigned int __fcsr;
|
||||
};
|
||||
|
||||
struct __riscv_mc_q_ext_state
|
||||
{
|
||||
unsigned long long int __f[64] __attribute__ ((__aligned__ (16)));
|
||||
unsigned int __fcsr;
|
||||
/* Reserved for expansion of sigcontext structure. Currently zeroed
|
||||
upon signal, and must be zero upon sigreturn. */
|
||||
unsigned int __glibc_reserved[3];
|
||||
};
|
||||
|
||||
union __riscv_mc_fp_state
|
||||
{
|
||||
struct __riscv_mc_f_ext_state __f;
|
||||
struct __riscv_mc_d_ext_state __d;
|
||||
struct __riscv_mc_q_ext_state __q;
|
||||
};
|
||||
|
||||
typedef struct mcontext_t
|
||||
{
|
||||
__riscv_mc_gp_state __gregs;
|
||||
union __riscv_mc_fp_state __fpregs;
|
||||
} mcontext_t;
|
||||
|
||||
/* Userlevel context. */
|
||||
typedef struct ucontext_t
|
||||
{
|
||||
unsigned long int __uc_flags;
|
||||
struct ucontext_t *uc_link;
|
||||
stack_t uc_stack;
|
||||
sigset_t uc_sigmask;
|
||||
/* There's some padding here to allow sigset_t to be expanded in the
|
||||
future. Though this is unlikely, other architectures put uc_sigmask
|
||||
at the end of this structure and explicitly state it can be
|
||||
expanded, so we didn't want to box ourselves in here. */
|
||||
char __glibc_reserved[1024 / 8 - sizeof (sigset_t)];
|
||||
/* We can't put uc_sigmask at the end of this structure because we need
|
||||
to be able to expand sigcontext in the future. For example, the
|
||||
vector ISA extension will almost certainly add ISA state. We want
|
||||
to ensure all user-visible ISA state can be saved and restored via a
|
||||
ucontext, so we're putting this at the end in order to allow for
|
||||
infinite extensibility. Since we know this will be extended and we
|
||||
assume sigset_t won't be extended an extreme amount, we're
|
||||
prioritizing this. */
|
||||
mcontext_t uc_mcontext;
|
||||
} ucontext_t;
|
||||
|
||||
#endif /* sys/ucontext.h */
|
||||
23
libc/include/riscv64-linux-gnu/sys/user.h
Normal file
23
libc/include/riscv64-linux-gnu/sys/user.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* Copyright (C) 2001-2019 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
|
||||
|
||||
|
||||
|
||||
#endif /* _SYS_USER_H */
|
||||
Reference in New Issue
Block a user