-#!/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;