diff options
Diffstat (limited to 'regcomp.pl')
-rw-r--r-- | regcomp.pl | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/regcomp.pl b/regcomp.pl index defbb5f785..b6fc11dae1 100644 --- a/regcomp.pl +++ b/regcomp.pl @@ -68,11 +68,9 @@ my $tmp_h = 'tmp_reg.h'; unlink $tmp_h if -f $tmp_h; -open OUT, ">$tmp_h"; -#*OUT=\*STDOUT; -binmode OUT; +my $out = safer_open($tmp_h); -printf OUT <<EOP, +printf $out <<EOP, /* -*- buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! This file is built by regcomp.pl from regcomp.sym. @@ -92,16 +90,16 @@ EOP for ($ind=1; $ind <= $lastregop ; $ind++) { my $oind = $ind - 1; - printf OUT "#define\t%*s\t%d\t/* %#04x %s */\n", + printf $out "#define\t%*s\t%d\t/* %#04x %s */\n", -$width, $name[$ind], $ind-1, $ind-1, $rest[$ind]; } -print OUT "\t/* ------------ States ------------- */\n"; +print $out "\t/* ------------ States ------------- */\n"; for ( ; $ind <= $tot ; $ind++) { - printf OUT "#define\t%*s\t(REGNODE_MAX + %d)\t/* %s */\n", + printf $out "#define\t%*s\t(REGNODE_MAX + %d)\t/* %s */\n", -$width, $name[$ind], $ind - $lastregop, $rest[$ind]; } -print OUT <<EOP; +print $out <<EOP; /* PL_regkind[] What type of regop or state is this. */ @@ -113,13 +111,13 @@ EOP $ind = 0; while (++$ind <= $tot) { - printf OUT "\t%*s\t/* %*s */\n", + printf $out "\t%*s\t/* %*s */\n", -1-$twidth, "$type[$ind],", -$width, $name[$ind]; - print OUT "\t/* ------------ States ------------- */\n" + print $out "\t/* ------------ States ------------- */\n" if $ind == $lastregop and $lastregop != $tot; } -print OUT <<EOP; +print $out <<EOP; }; #endif @@ -134,11 +132,11 @@ while (++$ind <= $lastregop) { my $size = 0; $size = "EXTRA_SIZE(struct regnode_$args[$ind])" if $args[$ind]; - printf OUT "\t%*s\t/* %*s */\n", + printf $out "\t%*s\t/* %*s */\n", -37, "$size,",-$rwidth,$name[$ind]; } -print OUT <<EOP; +print $out <<EOP; }; /* reg_off_by_arg[] - Which argument holds the offset to the next node */ @@ -150,11 +148,11 @@ $ind = 0; while (++$ind <= $lastregop) { my $size = $longj[$ind] || 0; - printf OUT "\t%d,\t/* %*s */\n", + printf $out "\t%d,\t/* %*s */\n", $size, -$rwidth, $name[$ind] } -print OUT <<EOP; +print $out <<EOP; }; #endif /* REG_COMP_C */ @@ -173,17 +171,17 @@ my $sym = ""; while (++$ind <= $tot) { my $size = $longj[$ind] || 0; - printf OUT "\t%*s\t/* $sym%#04x */\n", + printf $out "\t%*s\t/* $sym%#04x */\n", -3-$width,qq("$name[$ind]",), $ind - $ofs; if ($ind == $lastregop and $lastregop != $tot) { - print OUT "\t/* ------------ States ------------- */\n"; + print $out "\t/* ------------ States ------------- */\n"; $ofs = $lastregop; $sym = 'REGNODE_MAX +'; } } -print OUT <<EOP; +print $out <<EOP; }; #endif /* DOINIT */ @@ -211,20 +209,20 @@ while (<$fh>) { } } my %vrxf=reverse %rxfv; -printf OUT "\t/* Bits in extflags defined: %032b */\n",$val; +printf $out "\t/* Bits in extflags defined: %032b */\n",$val; for (0..31) { my $n=$vrxf{2**$_}||"UNUSED_BIT_$_"; $n=~s/^RXf_(PMf_)?//; - printf OUT qq(\t%-20s/* 0x%08x */\n), + printf $out qq(\t%-20s/* 0x%08x */\n), qq("$n",),2**$_; } -print OUT <<EOP; +print $out <<EOP; }; #endif /* DOINIT */ /* ex: set ro: */ EOP -close OUT or die "close $tmp_h: $!"; +close $out or die "close $tmp_h: $!"; -safer_rename $tmp_h, 'regnodes.h'; +rename_if_different $tmp_h, 'regnodes.h'; |