diff options
author | marcel <marcel@FreeBSD.org> | 2001-01-29 01:55:54 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2001-01-29 01:55:54 +0000 |
commit | 99d951b8404ce6f969ceda268a00bfe5f17d43e2 (patch) | |
tree | d975893ca7a646f48173ec1965f53ddb4a414b4d /sys/kern | |
parent | 3e70da6121936e8a4abc047e325d2373e0984733 (diff) | |
download | FreeBSD-src-99d951b8404ce6f969ceda268a00bfe5f17d43e2.zip FreeBSD-src-99d951b8404ce6f969ceda268a00bfe5f17d43e2.tar.gz |
Don't hard-code alignment and data declarations valid for 64-bit
machines (duh!). This was one reason why this script broke on
i386. The other being that on i386 sections did not have the
proper alignment. This has been fixed in sys/sys/linker_set.h.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/gensetdefs.pl | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/gensetdefs.pl b/sys/kern/gensetdefs.pl index ade59fa..1502bdc 100644 --- a/sys/kern/gensetdefs.pl +++ b/sys/kern/gensetdefs.pl @@ -30,6 +30,8 @@ use strict; +my %logalign = (4 => 2, 8 => 3); +my %datadecl = (4 => ".long", 8 => ".quad"); my %sets = (); my $pointersize = 0; my $objdump = $ENV{'OBJDUMP'} || 'objdump'; @@ -79,9 +81,9 @@ print SETDEF0_C <<END; __asm__(".section .set." #set ",\\"aw\\""); \\ __asm__(".globl " #set); \\ __asm__(".type " #set ",\@object"); \\ -__asm__(".p2align 3"); \\ +__asm__(".p2align $logalign{$pointersize}"); \\ __asm__(#set ":"); \\ -__asm__(".quad " #count); \\ +__asm__("$datadecl{$pointersize} " #count); \\ __asm__(".previous") #include "setdefs.h" @@ -95,7 +97,7 @@ print SETDEF1_C <<END; #define DEFINE_SET(set, count) \\ __asm__(".section .set." #set ",\\"aw\\""); \\ -__asm__(".quad 0"); \\ +__asm__("$datadecl{$pointersize} 0"); \\ __asm__(".previous") #include "setdefs.h" |