mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9528 3c298f89-4303-0410-b956-a3cf2f4a3e73
62 lines
1.6 KiB
Perl
62 lines
1.6 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
# Copyright (C) 2006 OpenWrt.org
|
|
# Copyright (C) 2006 Felix Fietkau
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
use strict;
|
|
|
|
my $TABLE = pack("V", 0xbadc0ded);
|
|
my $TABLE_SIZE = 512;
|
|
my $SLT1 = "\x01\x00\x00\x00";
|
|
my $SLT2 = "\x02\x00\x00\x00";
|
|
my $ACKW = "\x03\x00\x00\x00";
|
|
my $PTABLE_END = "\xff\xff\xff\xff";
|
|
|
|
my $addr = "";
|
|
my $opcode = "";
|
|
my $function = "";
|
|
|
|
sub add_entry {
|
|
my $key = shift;
|
|
my $value = shift;
|
|
my $default = shift;
|
|
|
|
$TABLE .= $key;
|
|
$TABLE .= pack("V", $value);
|
|
$TABLE .= pack("V", $default);
|
|
}
|
|
|
|
while (<>) {
|
|
$addr = $opcode = "";
|
|
/^\w{8}\s*<(.*)>:$/ and $function = $1;
|
|
/^\s*(\w+):\s*(\w{8})\s*/ and do {
|
|
$addr = $1;
|
|
$opcode = $2;
|
|
};
|
|
|
|
($function eq 'wlc_update_slot_timing') and do {
|
|
# li a2,9 -- short slot time
|
|
($opcode eq '24060009') and add_entry($SLT1, hex($addr), hex($opcode));
|
|
# li v0,519 -- 510 + short slot time
|
|
($opcode eq '24020207') and add_entry($SLT2, hex($addr), hex($opcode));
|
|
|
|
# li a2,20 -- long slot time
|
|
($opcode eq '24060014') and add_entry($SLT1, hex($addr), hex($opcode));
|
|
# li v0,530 -- 510 + long slot time
|
|
($opcode eq '24020212') and add_entry($SLT2, hex($addr), hex($opcode));
|
|
};
|
|
($function eq 'wlc_d11hdrs') and do {
|
|
# ori s6,s6,0x1 -- ack flag (new)
|
|
($opcode eq '36d60001') and add_entry($ACKW, hex($addr), hex($opcode));
|
|
# ori s3,s3,0x1 -- ack flag (old)
|
|
($opcode eq '36730001') and add_entry($ACKW, hex($addr), hex($opcode));
|
|
}
|
|
}
|
|
|
|
$TABLE .= $PTABLE_END;
|
|
$TABLE .= ("\x00" x ($TABLE_SIZE - length($TABLE)));
|
|
print $TABLE;
|