summaryrefslogtreecommitdiffstats
path: root/sys/ia64/include/_regset.h
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-07-25 08:02:24 +0000
committermarcel <marcel@FreeBSD.org>2003-07-25 08:02:24 +0000
commit870c55b96cbc39aef2c237b404a11afef5d8af48 (patch)
tree0902348eed883cb2c2ca1c8a772713ae3bcc991d /sys/ia64/include/_regset.h
parent64e4b09fad1cac73041c4a2839444a2dd234868b (diff)
downloadFreeBSD-src-870c55b96cbc39aef2c237b404a11afef5d8af48.zip
FreeBSD-src-870c55b96cbc39aef2c237b404a11afef5d8af48.tar.gz
Remove __aligned(16) from the definition of struct _ia64_fpreg. It's
a non-standard construct. Instead, redefine struct _ia64_fpreg as a union and put a long double in it. On ia64 and for LP64, this is defined by the ABI to have 16-byte alignment. For ILP32 a long double has 4-byte alignment, but we don't support ILP32. Note that the in-memory image of a long double does not match the in- memory image of spilled FP registers. This means that one cannot use the fpr_flt field to interpet the bits. For this reason we continue to use an aggregate type.
Diffstat (limited to 'sys/ia64/include/_regset.h')
-rw-r--r--sys/ia64/include/_regset.h257
1 files changed, 129 insertions, 128 deletions
diff --git a/sys/ia64/include/_regset.h b/sys/ia64/include/_regset.h
index ffb2425..4b752a3 100644
--- a/sys/ia64/include/_regset.h
+++ b/sys/ia64/include/_regset.h
@@ -43,9 +43,10 @@
*/
/* A single FP register. */
-struct _ia64_fpreg {
+union _ia64_fpreg {
unsigned char fpr_bits[16];
-} __aligned(16);
+ long double fpr_flt;
+};
/*
* Special registers.
@@ -74,102 +75,102 @@ struct _special {
};
struct _high_fp {
- struct _ia64_fpreg fr32;
- struct _ia64_fpreg fr33;
- struct _ia64_fpreg fr34;
- struct _ia64_fpreg fr35;
- struct _ia64_fpreg fr36;
- struct _ia64_fpreg fr37;
- struct _ia64_fpreg fr38;
- struct _ia64_fpreg fr39;
- struct _ia64_fpreg fr40;
- struct _ia64_fpreg fr41;
- struct _ia64_fpreg fr42;
- struct _ia64_fpreg fr43;
- struct _ia64_fpreg fr44;
- struct _ia64_fpreg fr45;
- struct _ia64_fpreg fr46;
- struct _ia64_fpreg fr47;
- struct _ia64_fpreg fr48;
- struct _ia64_fpreg fr49;
- struct _ia64_fpreg fr50;
- struct _ia64_fpreg fr51;
- struct _ia64_fpreg fr52;
- struct _ia64_fpreg fr53;
- struct _ia64_fpreg fr54;
- struct _ia64_fpreg fr55;
- struct _ia64_fpreg fr56;
- struct _ia64_fpreg fr57;
- struct _ia64_fpreg fr58;
- struct _ia64_fpreg fr59;
- struct _ia64_fpreg fr60;
- struct _ia64_fpreg fr61;
- struct _ia64_fpreg fr62;
- struct _ia64_fpreg fr63;
- struct _ia64_fpreg fr64;
- struct _ia64_fpreg fr65;
- struct _ia64_fpreg fr66;
- struct _ia64_fpreg fr67;
- struct _ia64_fpreg fr68;
- struct _ia64_fpreg fr69;
- struct _ia64_fpreg fr70;
- struct _ia64_fpreg fr71;
- struct _ia64_fpreg fr72;
- struct _ia64_fpreg fr73;
- struct _ia64_fpreg fr74;
- struct _ia64_fpreg fr75;
- struct _ia64_fpreg fr76;
- struct _ia64_fpreg fr77;
- struct _ia64_fpreg fr78;
- struct _ia64_fpreg fr79;
- struct _ia64_fpreg fr80;
- struct _ia64_fpreg fr81;
- struct _ia64_fpreg fr82;
- struct _ia64_fpreg fr83;
- struct _ia64_fpreg fr84;
- struct _ia64_fpreg fr85;
- struct _ia64_fpreg fr86;
- struct _ia64_fpreg fr87;
- struct _ia64_fpreg fr88;
- struct _ia64_fpreg fr89;
- struct _ia64_fpreg fr90;
- struct _ia64_fpreg fr91;
- struct _ia64_fpreg fr92;
- struct _ia64_fpreg fr93;
- struct _ia64_fpreg fr94;
- struct _ia64_fpreg fr95;
- struct _ia64_fpreg fr96;
- struct _ia64_fpreg fr97;
- struct _ia64_fpreg fr98;
- struct _ia64_fpreg fr99;
- struct _ia64_fpreg fr100;
- struct _ia64_fpreg fr101;
- struct _ia64_fpreg fr102;
- struct _ia64_fpreg fr103;
- struct _ia64_fpreg fr104;
- struct _ia64_fpreg fr105;
- struct _ia64_fpreg fr106;
- struct _ia64_fpreg fr107;
- struct _ia64_fpreg fr108;
- struct _ia64_fpreg fr109;
- struct _ia64_fpreg fr110;
- struct _ia64_fpreg fr111;
- struct _ia64_fpreg fr112;
- struct _ia64_fpreg fr113;
- struct _ia64_fpreg fr114;
- struct _ia64_fpreg fr115;
- struct _ia64_fpreg fr116;
- struct _ia64_fpreg fr117;
- struct _ia64_fpreg fr118;
- struct _ia64_fpreg fr119;
- struct _ia64_fpreg fr120;
- struct _ia64_fpreg fr121;
- struct _ia64_fpreg fr122;
- struct _ia64_fpreg fr123;
- struct _ia64_fpreg fr124;
- struct _ia64_fpreg fr125;
- struct _ia64_fpreg fr126;
- struct _ia64_fpreg fr127;
+ union _ia64_fpreg fr32;
+ union _ia64_fpreg fr33;
+ union _ia64_fpreg fr34;
+ union _ia64_fpreg fr35;
+ union _ia64_fpreg fr36;
+ union _ia64_fpreg fr37;
+ union _ia64_fpreg fr38;
+ union _ia64_fpreg fr39;
+ union _ia64_fpreg fr40;
+ union _ia64_fpreg fr41;
+ union _ia64_fpreg fr42;
+ union _ia64_fpreg fr43;
+ union _ia64_fpreg fr44;
+ union _ia64_fpreg fr45;
+ union _ia64_fpreg fr46;
+ union _ia64_fpreg fr47;
+ union _ia64_fpreg fr48;
+ union _ia64_fpreg fr49;
+ union _ia64_fpreg fr50;
+ union _ia64_fpreg fr51;
+ union _ia64_fpreg fr52;
+ union _ia64_fpreg fr53;
+ union _ia64_fpreg fr54;
+ union _ia64_fpreg fr55;
+ union _ia64_fpreg fr56;
+ union _ia64_fpreg fr57;
+ union _ia64_fpreg fr58;
+ union _ia64_fpreg fr59;
+ union _ia64_fpreg fr60;
+ union _ia64_fpreg fr61;
+ union _ia64_fpreg fr62;
+ union _ia64_fpreg fr63;
+ union _ia64_fpreg fr64;
+ union _ia64_fpreg fr65;
+ union _ia64_fpreg fr66;
+ union _ia64_fpreg fr67;
+ union _ia64_fpreg fr68;
+ union _ia64_fpreg fr69;
+ union _ia64_fpreg fr70;
+ union _ia64_fpreg fr71;
+ union _ia64_fpreg fr72;
+ union _ia64_fpreg fr73;
+ union _ia64_fpreg fr74;
+ union _ia64_fpreg fr75;
+ union _ia64_fpreg fr76;
+ union _ia64_fpreg fr77;
+ union _ia64_fpreg fr78;
+ union _ia64_fpreg fr79;
+ union _ia64_fpreg fr80;
+ union _ia64_fpreg fr81;
+ union _ia64_fpreg fr82;
+ union _ia64_fpreg fr83;
+ union _ia64_fpreg fr84;
+ union _ia64_fpreg fr85;
+ union _ia64_fpreg fr86;
+ union _ia64_fpreg fr87;
+ union _ia64_fpreg fr88;
+ union _ia64_fpreg fr89;
+ union _ia64_fpreg fr90;
+ union _ia64_fpreg fr91;
+ union _ia64_fpreg fr92;
+ union _ia64_fpreg fr93;
+ union _ia64_fpreg fr94;
+ union _ia64_fpreg fr95;
+ union _ia64_fpreg fr96;
+ union _ia64_fpreg fr97;
+ union _ia64_fpreg fr98;
+ union _ia64_fpreg fr99;
+ union _ia64_fpreg fr100;
+ union _ia64_fpreg fr101;
+ union _ia64_fpreg fr102;
+ union _ia64_fpreg fr103;
+ union _ia64_fpreg fr104;
+ union _ia64_fpreg fr105;
+ union _ia64_fpreg fr106;
+ union _ia64_fpreg fr107;
+ union _ia64_fpreg fr108;
+ union _ia64_fpreg fr109;
+ union _ia64_fpreg fr110;
+ union _ia64_fpreg fr111;
+ union _ia64_fpreg fr112;
+ union _ia64_fpreg fr113;
+ union _ia64_fpreg fr114;
+ union _ia64_fpreg fr115;
+ union _ia64_fpreg fr116;
+ union _ia64_fpreg fr117;
+ union _ia64_fpreg fr118;
+ union _ia64_fpreg fr119;
+ union _ia64_fpreg fr120;
+ union _ia64_fpreg fr121;
+ union _ia64_fpreg fr122;
+ union _ia64_fpreg fr123;
+ union _ia64_fpreg fr124;
+ union _ia64_fpreg fr125;
+ union _ia64_fpreg fr126;
+ union _ia64_fpreg fr127;
};
/*
@@ -191,26 +192,26 @@ struct _callee_saved {
};
struct _callee_saved_fp {
- struct _ia64_fpreg fr2;
- struct _ia64_fpreg fr3;
- struct _ia64_fpreg fr4;
- struct _ia64_fpreg fr5;
- struct _ia64_fpreg fr16;
- struct _ia64_fpreg fr17;
- struct _ia64_fpreg fr18;
- struct _ia64_fpreg fr19;
- struct _ia64_fpreg fr20;
- struct _ia64_fpreg fr21;
- struct _ia64_fpreg fr22;
- struct _ia64_fpreg fr23;
- struct _ia64_fpreg fr24;
- struct _ia64_fpreg fr25;
- struct _ia64_fpreg fr26;
- struct _ia64_fpreg fr27;
- struct _ia64_fpreg fr28;
- struct _ia64_fpreg fr29;
- struct _ia64_fpreg fr30;
- struct _ia64_fpreg fr31;
+ union _ia64_fpreg fr2;
+ union _ia64_fpreg fr3;
+ union _ia64_fpreg fr4;
+ union _ia64_fpreg fr5;
+ union _ia64_fpreg fr16;
+ union _ia64_fpreg fr17;
+ union _ia64_fpreg fr18;
+ union _ia64_fpreg fr19;
+ union _ia64_fpreg fr20;
+ union _ia64_fpreg fr21;
+ union _ia64_fpreg fr22;
+ union _ia64_fpreg fr23;
+ union _ia64_fpreg fr24;
+ union _ia64_fpreg fr25;
+ union _ia64_fpreg fr26;
+ union _ia64_fpreg fr27;
+ union _ia64_fpreg fr28;
+ union _ia64_fpreg fr29;
+ union _ia64_fpreg fr30;
+ union _ia64_fpreg fr31;
};
/*
@@ -250,16 +251,16 @@ struct _caller_saved {
};
struct _caller_saved_fp {
- struct _ia64_fpreg fr6;
- struct _ia64_fpreg fr7;
- struct _ia64_fpreg fr8;
- struct _ia64_fpreg fr9;
- struct _ia64_fpreg fr10;
- struct _ia64_fpreg fr11;
- struct _ia64_fpreg fr12;
- struct _ia64_fpreg fr13;
- struct _ia64_fpreg fr14;
- struct _ia64_fpreg fr15;
+ union _ia64_fpreg fr6;
+ union _ia64_fpreg fr7;
+ union _ia64_fpreg fr8;
+ union _ia64_fpreg fr9;
+ union _ia64_fpreg fr10;
+ union _ia64_fpreg fr11;
+ union _ia64_fpreg fr12;
+ union _ia64_fpreg fr13;
+ union _ia64_fpreg fr14;
+ union _ia64_fpreg fr15;
};
#ifdef _KERNEL
OpenPOWER on IntegriCloud