summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2001-01-29 01:55:54 +0000
committermarcel <marcel@FreeBSD.org>2001-01-29 01:55:54 +0000
commit99d951b8404ce6f969ceda268a00bfe5f17d43e2 (patch)
treed975893ca7a646f48173ec1965f53ddb4a414b4d /sys/kern
parent3e70da6121936e8a4abc047e325d2373e0984733 (diff)
downloadFreeBSD-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.pl8
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"
OpenPOWER on IntegriCloud