|
@@ -177,8 +177,23 @@ struct sigcontext {
|
|
|
__u64 rip;
|
|
|
__u64 eflags; /* RFLAGS */
|
|
|
__u16 cs;
|
|
|
- __u16 gs;
|
|
|
- __u16 fs;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Prior to 2.5.64 ("[PATCH] x86-64 updates for 2.5.64-bk3"),
|
|
|
+ * Linux saved and restored fs and gs in these slots. This
|
|
|
+ * was counterproductive, as fsbase and gsbase were never
|
|
|
+ * saved, so arch_prctl was presumably unreliable.
|
|
|
+ *
|
|
|
+ * If these slots are ever needed for any other purpose, there
|
|
|
+ * is some risk that very old 64-bit binaries could get
|
|
|
+ * confused. I doubt that many such binaries still work,
|
|
|
+ * though, since the same patch in 2.5.64 also removed the
|
|
|
+ * 64-bit set_thread_area syscall, so it appears that there is
|
|
|
+ * no TLS API that works in both pre- and post-2.5.64 kernels.
|
|
|
+ */
|
|
|
+ __u16 __pad2; /* Was gs. */
|
|
|
+ __u16 __pad1; /* Was fs. */
|
|
|
+
|
|
|
__u16 ss;
|
|
|
__u64 err;
|
|
|
__u64 trapno;
|