about summary refs log tree commit diff
path: root/arch
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-11-25 22:28:18 -0500
committerRich Felker <dalias@aerifal.cx>2012-11-25 22:28:18 -0500
commit4b75f4ed8d08b26d4bf2ac96191b395218ad888e (patch)
treee2fc90140da04f5e0436bcf069097d63b6a402ef /arch
parent132cc703f82b1d5d308c2db9a353d6c92ea29fda (diff)
downloadmusl-4b75f4ed8d08b26d4bf2ac96191b395218ad888e.tar.gz
musl-4b75f4ed8d08b26d4bf2ac96191b395218ad888e.tar.xz
musl-4b75f4ed8d08b26d4bf2ac96191b395218ad888e.zip
make sys/procfs.h mostly work on most archs
these structures are purely for use by trace/debug tools and tools
working with core files. the definition of fpregset_t, which was
previously here, has been removed because it was wrong; fpregset_t
should be the type used in mcontext_t, not the type used in
ptrace/core stuff.
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/bits/user.h6
-rw-r--r--arch/i386/bits/user.h11
-rw-r--r--arch/mips/bits/user.h4
-rw-r--r--arch/powerpc/bits/user.h11
-rw-r--r--arch/x86_64/bits/user.h6
5 files changed, 30 insertions, 8 deletions
diff --git a/arch/arm/bits/user.h b/arch/arm/bits/user.h
index d5f1deaa..9df7a9ad 100644
--- a/arch/arm/bits/user.h
+++ b/arch/arm/bits/user.h
@@ -1,4 +1,4 @@
-struct user_fpregs {
+typedef struct user_fpregs {
 	struct fp_reg {
 		unsigned sign1:1;
 		unsigned unused:15;
@@ -12,11 +12,13 @@ struct user_fpregs {
 	unsigned fpcr:32;
 	unsigned char ftype[8];
 	unsigned int init_flag;
-};
+} elf_fpregset_t;
 
 struct user_regs {
 	unsigned long uregs[18];
 };
+#define ELF_NGREG 18
+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
 
 struct user {
 	struct user_regs regs;
diff --git a/arch/i386/bits/user.h b/arch/i386/bits/user.h
index 998c062a..fa623621 100644
--- a/arch/i386/bits/user.h
+++ b/arch/i386/bits/user.h
@@ -1,17 +1,17 @@
 #undef __WORDSIZE
 #define __WORDSIZE 32
 
-struct user_fpregs_struct
+typedef struct user_fpregs_struct
 {
 	long cwd, swd, twd, fip, fcs, foo, fos, st_space[20];
-};
+} elf_fpregset_t;
 
-struct user_fpxregs_struct
+typedef struct user_fpxregs_struct
 {
 	unsigned short cwd, swd, twd, fop;
 	long fip, fcs, foo, fos, mxcsr, reserved;
 	long st_space[32], xmm_space[32], padding[56];
-};
+} elf_fpxregset_t;
 
 struct user_regs_struct
 {
@@ -19,6 +19,9 @@ struct user_regs_struct
 	long orig_eax, eip, xcs, eflags, esp, xss;
 };
 
+#define ELF_NGREG 17
+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
+
 struct user
 {
 	struct user_regs_struct		regs;
diff --git a/arch/mips/bits/user.h b/arch/mips/bits/user.h
index 739233c1..3e26249d 100644
--- a/arch/mips/bits/user.h
+++ b/arch/mips/bits/user.h
@@ -7,3 +7,7 @@ struct user {
 	unsigned long magic;
 	char u_comm[32];
 };
+#define ELF_NGREG 45
+#define ELF_NFPREG 33
+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
+typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG];
diff --git a/arch/powerpc/bits/user.h b/arch/powerpc/bits/user.h
index 248012f0..6cc8aaf7 100644
--- a/arch/powerpc/bits/user.h
+++ b/arch/powerpc/bits/user.h
@@ -12,3 +12,14 @@ struct user {
 	unsigned long magic;
 	char u_comm[32];
 };
+
+#define ELF_NGREG 48
+#define ELF_NFPREG 33
+#define ELF_NVRREG 33
+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
+typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG];
+typedef struct { unsigned u[4]; }
+#ifdef __GNUC__
+__attribute__((__aligned__(16)))
+#endif
+	elf_vrreg_t, elf_vrregset_t[ELF_NVRREG];
diff --git a/arch/x86_64/bits/user.h b/arch/x86_64/bits/user.h
index 384f18ec..8b42632f 100644
--- a/arch/x86_64/bits/user.h
+++ b/arch/x86_64/bits/user.h
@@ -1,13 +1,13 @@
 #undef __WORDSIZE
 #define __WORDSIZE 64
 
-struct user_fpregs_struct
+typedef struct user_fpregs_struct
 {
 	uint16_t cwd, swd, ftw, fop;
 	uint64_t rip, rdp;
 	uint32_t mxcsr, mxcs_mask;
 	uint32_t st_space[32], xmm_space[64], padding[24];
-};
+} elf_fpregset_t;
 
 struct user_regs_struct
 {
@@ -15,6 +15,8 @@ struct user_regs_struct
 	unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip;
 	unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs;
 };
+#define ELF_NGREG 27
+typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG];
 
 struct user
 {