From e709a6f07ade208ba513f9225222336f30c304b0 Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Tue, 7 May 2024 09:07:41 -0400
Subject: [PATCH] sys/reg.h: derive __WORDSIZE from __LONG_MAX

this removes an otherwise-unnecessary bits header from most archs,
replacing it with an empty generic version.
---
 arch/aarch64/bits/reg.h     | 2 --
 arch/arm/bits/reg.h         | 3 ---
 arch/generic/bits/reg.h     | 0
 arch/i386/bits/reg.h        | 2 --
 arch/loongarch64/bits/reg.h | 2 --
 arch/m68k/bits/reg.h        | 2 --
 arch/microblaze/bits/reg.h  | 3 ---
 arch/mips/bits/reg.h        | 3 ---
 arch/mips64/bits/reg.h      | 3 ---
 arch/mipsn32/bits/reg.h     | 3 ---
 arch/or1k/bits/reg.h        | 3 ---
 arch/powerpc/bits/reg.h     | 3 ---
 arch/powerpc64/bits/reg.h   | 3 ---
 arch/riscv32/bits/reg.h     | 2 --
 arch/riscv64/bits/reg.h     | 2 --
 arch/s390x/bits/reg.h       | 2 --
 arch/x32/bits/reg.h         | 2 --
 arch/x86_64/bits/reg.h      | 2 --
 include/sys/reg.h           | 9 +++++++++
 19 files changed, 9 insertions(+), 42 deletions(-)
 delete mode 100644 arch/aarch64/bits/reg.h
 delete mode 100644 arch/arm/bits/reg.h
 create mode 100644 arch/generic/bits/reg.h
 delete mode 100644 arch/loongarch64/bits/reg.h
 delete mode 100644 arch/microblaze/bits/reg.h
 delete mode 100644 arch/or1k/bits/reg.h
 delete mode 100644 arch/powerpc/bits/reg.h
 delete mode 100644 arch/powerpc64/bits/reg.h
 delete mode 100644 arch/riscv32/bits/reg.h
 delete mode 100644 arch/riscv64/bits/reg.h
 delete mode 100644 arch/s390x/bits/reg.h

diff --git a/arch/aarch64/bits/reg.h b/arch/aarch64/bits/reg.h
deleted file mode 100644
index 2633f39d..00000000
--- a/arch/aarch64/bits/reg.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
diff --git a/arch/arm/bits/reg.h b/arch/arm/bits/reg.h
deleted file mode 100644
index 0c7bffca..00000000
--- a/arch/arm/bits/reg.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
-/* FIXME */
diff --git a/arch/generic/bits/reg.h b/arch/generic/bits/reg.h
new file mode 100644
index 00000000..e69de29b
diff --git a/arch/i386/bits/reg.h b/arch/i386/bits/reg.h
index 8bc2582d..7dfe8250 100644
--- a/arch/i386/bits/reg.h
+++ b/arch/i386/bits/reg.h
@@ -1,5 +1,3 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
 #define EBX 0
 #define ECX 1
 #define EDX 2
diff --git a/arch/loongarch64/bits/reg.h b/arch/loongarch64/bits/reg.h
deleted file mode 100644
index 2633f39d..00000000
--- a/arch/loongarch64/bits/reg.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
diff --git a/arch/m68k/bits/reg.h b/arch/m68k/bits/reg.h
index 99201f70..fedc4f9f 100644
--- a/arch/m68k/bits/reg.h
+++ b/arch/m68k/bits/reg.h
@@ -1,5 +1,3 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
 #define PT_D1 0
 #define PT_D2 1
 #define PT_D3 2
diff --git a/arch/microblaze/bits/reg.h b/arch/microblaze/bits/reg.h
deleted file mode 100644
index 0c7bffca..00000000
--- a/arch/microblaze/bits/reg.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
-/* FIXME */
diff --git a/arch/mips/bits/reg.h b/arch/mips/bits/reg.h
index 0c370987..2611b632 100644
--- a/arch/mips/bits/reg.h
+++ b/arch/mips/bits/reg.h
@@ -1,6 +1,3 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
-
 #define EF_R0 6
 #define EF_R1 7
 #define EF_R2 8
diff --git a/arch/mips64/bits/reg.h b/arch/mips64/bits/reg.h
index a3f63acc..16178dd3 100644
--- a/arch/mips64/bits/reg.h
+++ b/arch/mips64/bits/reg.h
@@ -1,6 +1,3 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
-
 #define EF_R0 0
 #define EF_R1 1
 #define EF_R2 2
diff --git a/arch/mipsn32/bits/reg.h b/arch/mipsn32/bits/reg.h
index a3f63acc..16178dd3 100644
--- a/arch/mipsn32/bits/reg.h
+++ b/arch/mipsn32/bits/reg.h
@@ -1,6 +1,3 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
-
 #define EF_R0 0
 #define EF_R1 1
 #define EF_R2 2
diff --git a/arch/or1k/bits/reg.h b/arch/or1k/bits/reg.h
deleted file mode 100644
index 0c7bffca..00000000
--- a/arch/or1k/bits/reg.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
-/* FIXME */
diff --git a/arch/powerpc/bits/reg.h b/arch/powerpc/bits/reg.h
deleted file mode 100644
index 0c7bffca..00000000
--- a/arch/powerpc/bits/reg.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
-/* FIXME */
diff --git a/arch/powerpc64/bits/reg.h b/arch/powerpc64/bits/reg.h
deleted file mode 100644
index 49382c8f..00000000
--- a/arch/powerpc64/bits/reg.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
-/* FIXME */
diff --git a/arch/riscv32/bits/reg.h b/arch/riscv32/bits/reg.h
deleted file mode 100644
index 0192a293..00000000
--- a/arch/riscv32/bits/reg.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
diff --git a/arch/riscv64/bits/reg.h b/arch/riscv64/bits/reg.h
deleted file mode 100644
index 2633f39d..00000000
--- a/arch/riscv64/bits/reg.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
diff --git a/arch/s390x/bits/reg.h b/arch/s390x/bits/reg.h
deleted file mode 100644
index 2633f39d..00000000
--- a/arch/s390x/bits/reg.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
diff --git a/arch/x32/bits/reg.h b/arch/x32/bits/reg.h
index 5faaef1a..6e54abcf 100644
--- a/arch/x32/bits/reg.h
+++ b/arch/x32/bits/reg.h
@@ -1,5 +1,3 @@
-#undef __WORDSIZE
-#define __WORDSIZE 32
 #define R15    0
 #define R14    1
 #define R13    2
diff --git a/arch/x86_64/bits/reg.h b/arch/x86_64/bits/reg.h
index a4df04ce..6e54abcf 100644
--- a/arch/x86_64/bits/reg.h
+++ b/arch/x86_64/bits/reg.h
@@ -1,5 +1,3 @@
-#undef __WORDSIZE
-#define __WORDSIZE 64
 #define R15    0
 #define R14    1
 #define R13    2
diff --git a/include/sys/reg.h b/include/sys/reg.h
index b47452d0..4e6ce222 100644
--- a/include/sys/reg.h
+++ b/include/sys/reg.h
@@ -4,6 +4,15 @@
 #include <limits.h>
 #include <unistd.h>
 
+#include <bits/alltype.h>
+
+#undef __WORDSIZE
+#if __LONG_MAX == 0x7fffffffL
+#define __WORDSIZE 32
+#else
+#define __WORDSIZE 64
+#endif
+
 #include <bits/reg.h>
 
 #endif