[pci] Add support for PCI MSI-X interrupts
[ipxe.git] / src / util / fixrom.pl
1 #!/usr/bin/perl -w
2 #
3 # Copyright (C) 2010 Michael Brown <mbrown@fensystems.co.uk>.
4 #
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License as
7 # published by the Free Software Foundation; either version 2 of the
8 # License, or any later version.
9 #
10 # This program is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 # 02110-1301, USA.
19
20 use strict;
21 use warnings;
22
23 use FindBin;
24 use lib "$FindBin::Bin";
25 use Option::ROM qw ( :all );
26
27 my @romfiles = @ARGV;
28
29 foreach my $romfile ( @romfiles ) {
30 my $rom = new Option::ROM;
31 $rom->load ( $romfile );
32 my $image = $rom;
33 while ( $image ) {
34 $image->pnp_header->fix_checksum() if $image->pnp_header;
35 $image->undi_header->fix_checksum() if $image->undi_header;
36 $image->ipxe_header->fix_checksum() if $image->ipxe_header;
37 $image->fix_checksum();
38 $image = $image->next_image();
39 }
40 $rom->save ( $romfile );
41 }