summaryrefslogtreecommitdiffstats
path: root/lib/libkse/arch/ia64/include/pthread_md.h
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-08-06 00:17:15 +0000
committermarcel <marcel@FreeBSD.org>2003-08-06 00:17:15 +0000
commite45924adacc537bd33ecd167bd88c4ab9ace9097 (patch)
treef98b3f77910c133ef9a52cd00265e961cd4f56a9 /lib/libkse/arch/ia64/include/pthread_md.h
parentaff30d7ad67a5bdb88569158fd91808927657b89 (diff)
downloadFreeBSD-src-e45924adacc537bd33ecd167bd88c4ab9ace9097.zip
FreeBSD-src-e45924adacc537bd33ecd167bd88c4ab9ace9097.tar.gz
Define the static TLS as an array of long double. This will guarantee
that the TLS is 16-byte aligned, as well as guarantee that the thread pointer is 16-byte aligned as it points to struct ia64_tp. Likewise, struct tcb and struct ksd are also guaranteed to be 16-byte aligned (if they weren't already).
Diffstat (limited to 'lib/libkse/arch/ia64/include/pthread_md.h')
-rw-r--r--lib/libkse/arch/ia64/include/pthread_md.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/libkse/arch/ia64/include/pthread_md.h b/lib/libkse/arch/ia64/include/pthread_md.h
index f7076d0..7b5c221 100644
--- a/lib/libkse/arch/ia64/include/pthread_md.h
+++ b/lib/libkse/arch/ia64/include/pthread_md.h
@@ -45,12 +45,16 @@ struct tcb;
struct tdv; /* We don't know what this is yet? */
/*
- * tp points to one of these.
+ * tp points to one of these. We define the static TLS as an array
+ * of long double to enforce 16-byte alignment of the TLS memory,
+ * struct ia64_tp, struct tcb and also struct kcb. Both static and
+ * dynamic allocation of any of these structures will result in a
+ * valid, well-aligned thread pointer.
*/
struct ia64_tp {
struct tdv *tp_tdv; /* dynamic TLS */
struct tcb *tp_self;
- char tp_tls[0]; /* static TLS */
+ long double tp_tls[0]; /* static TLS */
};
struct tcb {
OpenPOWER on IntegriCloud