1 /* Types for registers for sys/procfs.h. 2 Copyright (C) 2022 Free Software Foundation, Inc. 3 4 This file is part of the GNU C Library. 5 6 The GNU C Library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Lesser General Public 8 License as published by the Free Software Foundation; either 9 version 2.1 of the License, or (at your option) any later version. 10 11 The GNU C Library is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public 17 License along with the GNU C Library. If not, see 18 <https://www.gnu.org/licenses/>. */ 19 20 #ifndef _SYS_PROCFS_H 21 # error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead." 22 #endif 23 24 /* Type for a general-purpose register. */ 25 typedef __uint64_t elf_greg_t; 26 27 /* And the whole bunch of them. We could have used `struct 28 pt_regs' directly in the typedef, but tradition says that 29 the register set is an array, which does have some peculiar 30 semantics, so leave it that way. */ 31 #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof (elf_greg_t)) 32 typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 33 34 #define ELF_NFPREG 34 /* 32 FPRs + 8-byte byte-vec for fcc + 4-byte FCR */ 35 typedef union 36 { 37 double d; 38 float f; 39 } elf_fpreg_t; 40 typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; 41 42 typedef union 43 { 44 double d[2]; 45 float f[4]; 46 } __attribute__ ((__aligned__ (16))) elf_lsxregset_t[32]; 47 48 typedef union 49 { 50 double d[4]; 51 float f[8]; 52 } __attribute__ ((__aligned__ (32))) elf_lasxregset_t[32]; 53