summaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files/drivers/net/rtl819x
diff options
context:
space:
mode:
authorRoman Yeryomin <roman@advem.lv>2013-02-06 02:59:31 +0200
committerRoman Yeryomin <roman@advem.lv>2013-02-06 02:59:31 +0200
commit691cc9529efe8ea7abaab170c452ae4470bf3ac2 (patch)
tree8d18d131720975fc63c8c2abc7bd933efe503e5f /target/linux/realtek/files/drivers/net/rtl819x
parent62da0fe6152d0025e570ca41a6f9ae68df7da89b (diff)
Rebase files to rsdk 3.2 and refresh patches. Compilable (not by humans).
Signed-off-by: Roman Yeryomin <roman@advem.lv>
Diffstat (limited to 'target/linux/realtek/files/drivers/net/rtl819x')
-rw-r--r--target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicBasic.S1508
-rw-r--r--target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicL3.S2458
-rw-r--r--target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicBasic.S1469
-rw-r--r--target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicL3.S2346
-rw-r--r--target/linux/realtek/files/drivers/net/rtl819x/l2Driver/rtl865x_hw_qos_config.c571
-rw-r--r--target/linux/realtek/files/drivers/net/rtl819x/l3Driver/rtl865x_multipleWan.h23
-rw-r--r--target/linux/realtek/files/drivers/net/rtl819x/rtl865x_log.h43
7 files changed, 8418 insertions, 0 deletions
diff --git a/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicBasic.S b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicBasic.S
new file mode 100644
index 000000000..4ec854b51
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicBasic.S
@@ -0,0 +1,1508 @@
+ .file 1 "rtl865x_asicBasic.c"
+ .section .mdebug.abi32
+ .previous
+#APP
+ .macro _ssnop; sll $0, $0, 1; .endm
+ .macro _ehb; sll $0, $0, 3; .endm
+ .macro mtc0_tlbw_hazard; nop; nop; .endm
+ .macro tlbw_use_hazard; nop; nop; nop; .endm
+ .macro tlb_probe_hazard; nop; nop; nop; .endm
+ .macro irq_enable_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro irq_disable_hazard; nop; nop; nop; .endm
+ .macro back_to_back_c0_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro raw_local_irq_enable
+ .set push
+ .set reorder
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1e
+ mtc0 $1,$12
+ irq_enable_hazard
+ .set pop
+ .endm
+ .macro raw_local_irq_disable
+ .set push
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1f
+ .set noreorder
+ mtc0 $1,$12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_save_flags flags
+ .set push
+ .set reorder
+ mfc0 \flags, $12
+ .set pop
+ .endm
+
+ .macro raw_local_irq_save result
+ .set push
+ .set reorder
+ .set noat
+ mfc0 \result, $12
+ ori $1, \result, 0x1f
+ xori $1, 0x1f
+ .set noreorder
+ mtc0 $1, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_irq_restore flags
+ .set push
+ .set noreorder
+ .set noat
+ mfc0 $1, $12
+ andi \flags, 1
+ ori $1, 0x1f
+ xori $1, 0x1f
+ or \flags, $1
+ mtc0 \flags, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+#NO_APP
+ .section .text.prom_putchar,"ax",@progbits
+ .align 2
+ .ent prom_putchar
+ .type prom_putchar, @function
+prom_putchar:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ sll $4,$4,24
+ sra $4,$4,24
+ move $3,$0
+ li $2,-1207959552 # 0xffffffffb8000000
+ ori $5,$2,0x2014
+ move $2,$3
+$L6:
+ sltu $2,$2,30000
+ bne $2,$0,$L4
+ addiu $3,$3,1
+
+ li $3,-60
+ li $2,-1207959552 # 0xffffffffb8000000
+ ori $2,$2,0x2008
+ sb $3,0($2)
+ j $31
+ nop
+
+$L4:
+ lbu $2,0($5)
+ nop
+ andi $2,$2,0x20
+ beq $2,$0,$L6
+ move $2,$3
+
+ li $2,-1207959552 # 0xffffffffb8000000
+ ori $2,$2,0x2000
+ sb $4,0($2)
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end prom_putchar
+ .section .text.early_console_write,"ax",@progbits
+ .align 2
+ .ent early_console_write
+ .type early_console_write, @function
+early_console_write:
+ .set nomips16
+ .frame $sp,40,$31 # vars= 0, regs= 5/0, args= 16, gp= 0
+ .mask 0x800f0000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,32($sp)
+ sw $19,28($sp)
+ sw $18,24($sp)
+ sw $17,20($sp)
+ sw $16,16($sp)
+ move $16,$4
+ beq $5,$0,$L9
+ addiu $17,$5,-1
+
+ lb $2,0($4)
+ nop
+ beq $2,$0,$L9
+ li $19,10 # 0xa
+
+ li $18,-1 # 0xffffffffffffffff
+ lb $2,0($16)
+ nop
+$L13:
+ bne $2,$19,$L10
+ nop
+
+ jal prom_putchar
+ li $4,13 # 0xd
+
+$L10:
+ lb $4,0($16)
+ jal prom_putchar
+ addiu $16,$16,1
+
+ addiu $17,$17,-1
+ beq $17,$18,$L9
+ nop
+
+ lb $2,0($16)
+ nop
+ bne $2,$0,$L13
+ nop
+
+$L9:
+ lw $31,32($sp)
+ lw $19,28($sp)
+ lw $18,24($sp)
+ lw $17,20($sp)
+ lw $16,16($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end early_console_write
+ .data
+ .align 2
+ .type _rtl8651_asicTableSize, @object
+ .size _rtl8651_asicTableSize, 64
+_rtl8651_asicTableSize:
+ .word 2
+ .word 1
+ .word 2
+ .word 3
+ .word 5
+ .word 3
+ .word 3
+ .word 3
+ .word 4
+ .word 3
+ .word 3
+ .word 1
+ .word 8
+ .word 1
+ .word 3
+ .word 1
+ .section .dram-fwd,"aw",@progbits
+ .align 2
+ .type fun_enable, @object
+ .size fun_enable, 4
+fun_enable:
+ .word 0
+ .section .text.rtl865x_initAsicFun,"ax",@progbits
+ .align 2
+ .globl rtl865x_initAsicFun
+ .ent rtl865x_initAsicFun
+ .type rtl865x_initAsicFun, @function
+rtl865x_initAsicFun:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ move $6,$4
+ sw $0,0($4)
+ li $2,-1207959552 # 0xffffffffb8000000
+ lw $4,0($2)
+ li $3,-65536 # 0xffffffffffff0000
+ and $4,$4,$3
+ ori $2,$2,0xc
+ lw $3,0($2)
+ li $2,-1073741824 # 0xffffffffc0000000
+ bne $4,$2,$L15
+ andi $5,$3,0xf
+
+ li $2,9 # 0x9
+ beq $5,$2,$L17
+ nop
+
+ andi $2,$3,0x8
+ bne $2,$0,$L16
+ nop
+
+$L17:
+ lw $2,0($6)
+ nop
+ ori $2,$2,0x2e
+ j $L23
+ sw $2,0($6)
+
+$L16:
+ li $2,8 # 0x8
+ bne $5,$2,$L19
+ nop
+
+ lw $2,0($6)
+ nop
+ ori $2,$2,0xe
+ j $L23
+ sw $2,0($6)
+
+$L19:
+ addiu $2,$5,-10
+ sltu $2,$2,2
+ beq $2,$0,$L21
+ nop
+
+ lw $2,0($6)
+ nop
+ ori $2,$2,0xa
+ j $L23
+ sw $2,0($6)
+
+$L21:
+ lw $2,0($6)
+ nop
+ ori $2,$2,0xe
+ j $L23
+ sw $2,0($6)
+
+$L15:
+ li $2,-2147483648 # 0xffffffff80000000
+ bne $4,$2,$L24
+ li $2,-2120876032 # 0xffffffff81960000
+
+ li $2,7 # 0x7
+ bne $5,$2,$L25
+ nop
+
+ lw $2,0($6)
+ nop
+ ori $2,$2,0x2e
+ j $L23
+ sw $2,0($6)
+
+$L25:
+ li $2,15 # 0xf
+ bne $5,$2,$L27
+ nop
+
+ lw $2,0($6)
+ nop
+ ori $2,$2,0x3
+ j $L23
+ sw $2,0($6)
+
+$L27:
+ li $2,3 # 0x3
+ bne $5,$2,$L29
+ nop
+
+ lw $2,0($6)
+ nop
+ ori $2,$2,0x3
+ j $L23
+ sw $2,0($6)
+
+$L29:
+ lw $2,0($6)
+ nop
+ ori $2,$2,0x3
+ j $L23
+ sw $2,0($6)
+
+$L24:
+ bne $4,$2,$L23
+ nop
+
+ lw $2,0($6)
+ nop
+ ori $2,$2,0xe
+ sw $2,0($6)
+$L23:
+ lw $3,0($6)
+ li $2,-1 # 0xffffffffffffffff
+ j $31
+ movn $2,$0,$3 #RLX4181/RLX4281:conditional move
+
+ .set macro
+ .set reorder
+ .end rtl865x_initAsicFun
+ .section .text.rtl865x_getAsicFun,"ax",@progbits
+ .align 2
+ .globl rtl865x_getAsicFun
+ .ent rtl865x_getAsicFun
+ .type rtl865x_getAsicFun, @function
+rtl865x_getAsicFun:
+ .set nomips16
+ .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-32
+ sw $31,24($sp)
+ sw $17,20($sp)
+ sw $16,16($sp)
+ move $17,$4
+ lui $2,%hi(fun_enable)
+ lw $3,%lo(fun_enable)($2)
+ nop
+ sw $3,0($4)
+ lw $2,%lo(fun_enable)($2)
+ nop
+ bne $2,$0,$L35
+ move $3,$0
+
+ lui $16,%hi(fun_enable)
+ jal rtl865x_initAsicFun
+ addiu $4,$16,%lo(fun_enable)
+
+ lw $2,%lo(fun_enable)($16)
+ nop
+ sw $2,0($17)
+ move $3,$0
+$L35:
+ move $2,$3
+ lw $31,24($sp)
+ lw $17,20($sp)
+ lw $16,16($sp)
+ j $31
+ addiu $sp,$sp,32
+
+ .set macro
+ .set reorder
+ .end rtl865x_getAsicFun
+ .rdata
+ .align 2
+$LC0:
+ .ascii "init switch core failed!!!\n\000"
+ .section .text.bsp_swcore_init,"ax",@progbits
+ .align 2
+ .globl bsp_swcore_init
+ .ent bsp_swcore_init
+ .type bsp_swcore_init, @function
+bsp_swcore_init:
+ .set nomips16
+ .frame $sp,48,$31 # vars= 0, regs= 8/0, args= 16, gp= 0
+ .mask 0x807f0000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-48
+ sw $31,44($sp)
+ sw $22,40($sp)
+ sw $21,36($sp)
+ sw $20,32($sp)
+ sw $19,28($sp)
+ sw $18,24($sp)
+ sw $17,20($sp)
+ sw $16,16($sp)
+ move $22,$4
+ move $19,$0
+ li $16,-1207959552 # 0xffffffffb8000000
+ lw $2,0($16)
+ li $18,-65536 # 0xffffffffffff0000
+ and $17,$2,$18
+ ori $21,$16,0xc
+ lw $2,0($21)
+ nop
+ andi $20,$2,0xf
+ lui $4,%hi(fun_enable)
+ jal rtl865x_initAsicFun
+ addiu $4,$4,%lo(fun_enable)
+
+ li $3,-1 # 0xffffffffffffffff
+ beq $2,$3,$L38
+ li $4,-1 # 0xffffffffffffffff
+
+ lw $2,0($16)
+ nop
+ and $2,$2,$18
+ li $3,-1073741824 # 0xffffffffc0000000
+ bne $2,$3,$L56
+ li $2,-1073741824 # 0xffffffffc0000000
+
+ lw $2,0($21)
+ nop
+ andi $2,$2,0x8
+ bne $2,$0,$L56
+ li $2,-1073741824 # 0xffffffffc0000000
+
+ addiu $2,$22,-8
+ sltu $2,$2,2
+ bne $2,$0,$L38
+ move $4,$0
+
+ li $2,-1073741824 # 0xffffffffc0000000
+$L56:
+ bne $17,$2,$L43
+ li $2,-2147483648 # 0xffffffff80000000
+
+ li $2,9 # 0x9
+ bne $22,$2,$L46
+ move $19,$0
+
+ beq $20,$22,$L46
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L46
+ li $19,-1 # 0xffffffffffffffff
+
+$L43:
+ bne $17,$2,$L47
+ li $2,-2120876032 # 0xffffffff81960000
+
+ li $2,7 # 0x7
+ bne $22,$2,$L57
+ li $2,15 # 0xf
+
+ beq $20,$22,$L57
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L46
+ li $19,-1 # 0xffffffffffffffff
+
+$L57:
+ bne $22,$2,$L58
+ li $2,3 # 0x3
+
+ beq $20,$22,$L50
+ li $2,7 # 0x7
+
+ beq $20,$2,$L50
+ li $2,3 # 0x3
+
+ beq $20,$2,$L50
+ li $2,11 # 0xb
+
+ beq $20,$2,$L50
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L46
+ li $19,-1 # 0xffffffffffffffff
+
+$L50:
+ li $2,3 # 0x3
+$L58:
+ bne $22,$2,$L46
+ move $19,$0
+
+ beq $20,$22,$L46
+ li $2,7 # 0x7
+
+ beq $20,$2,$L46
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L46
+ li $19,-1 # 0xffffffffffffffff
+
+$L47:
+ xor $2,$17,$2
+ movz $19,$0,$2 #RLX4181/RLX4281:conditional move
+$L46:
+ move $4,$19
+$L40:
+$L38:
+ move $2,$4
+ lw $31,44($sp)
+ lw $22,40($sp)
+ lw $21,36($sp)
+ lw $20,32($sp)
+ lw $19,28($sp)
+ lw $18,24($sp)
+ lw $17,20($sp)
+ lw $16,16($sp)
+ j $31
+ addiu $sp,$sp,48
+
+ .set macro
+ .set reorder
+ .end bsp_swcore_init
+ .section .text.rtl865x_accessAsicTable,"ax",@progbits
+ .align 2
+ .globl rtl865x_accessAsicTable
+ .ent rtl865x_accessAsicTable
+ .type rtl865x_accessAsicTable, @function
+rtl865x_accessAsicTable:
+ .set nomips16
+ .frame $sp,40,$31 # vars= 8, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,32($sp)
+ sw $17,28($sp)
+ sw $16,24($sp)
+ move $16,$4
+ move $17,$5
+ jal rtl865x_getAsicFun
+ addiu $4,$sp,16
+
+ sltu $2,$16,15
+ beq $2,$0,$L75
+ li $2,1 # 0x1
+
+ li $3,1 # 0x1
+ sll $4,$3,$16
+ andi $2,$4,0xe22
+ bne $2,$0,$L68
+ andi $2,$4,0x8
+
+ bne $2,$0,$L71
+ andi $2,$4,0x4000
+
+ beq $2,$0,$L74
+ li $2,1 # 0x1
+
+ lw $2,16($sp)
+ nop
+ andi $2,$2,0x20
+ movz $3,$0,$2 #RLX4181/RLX4281:conditional move
+ j $L60
+ sw $3,0($17)
+
+$L68:
+ lw $2,16($sp)
+ nop
+ andi $2,$2,0x4
+ beq $2,$0,$L69
+ li $2,1 # 0x1
+
+ j $L60
+ sw $2,0($17)
+
+$L69:
+ j $L60
+ sw $0,0($17)
+
+$L71:
+ lw $2,16($sp)
+ nop
+ andi $2,$2,0x2
+ beq $2,$0,$L72
+ li $2,1 # 0x1
+
+ j $L60
+ sw $2,0($17)
+
+$L72:
+ j $L60
+ sw $0,0($17)
+
+$L74:
+$L75:
+ sw $2,0($17)
+$L60:
+ move $2,$0
+ lw $31,32($sp)
+ lw $17,28($sp)
+ lw $16,24($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end rtl865x_accessAsicTable
+ .rdata
+ .align 2
+$LC1:
+ .ascii "\n"
+ .ascii "Assert Fail: %s %d\000"
+ .align 2
+$LC2:
+ .ascii "drivers/net/rtl819x/rtl865x/../AsicDriver/rtl865x_asicBa"
+ .ascii "sic.c\000"
+ .section .text._rtl8651_asicTableAccessForward,"ax",@progbits
+ .align 2
+ .ent _rtl8651_asicTableAccessForward
+ .type _rtl8651_asicTableAccessForward, @function
+_rtl8651_asicTableAccessForward:
+ .set nomips16
+ .frame $sp,24,$31 # vars= 0, regs= 1/0, args= 16, gp= 0
+ .mask 0x80000000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-24
+ bne $6,$0,$L77
+ sw $31,16($sp)
+
+ lui $4,%hi($LC1)
+ addiu $4,$4,%lo($LC1)
+ lui $5,%hi($LC2)
+ addiu $5,$5,%lo($LC2)
+ jal panic_printk
+ li $6,306 # 0x132
+
+$L78:
+ j $L78
+ nop
+
+$L77:
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $3,$2,0x4d00
+$L80:
+ lw $2,0($3)
+ nop
+ andi $2,$2,0x1
+ bne $2,$0,$L80
+ sll $2,$4,2
+
+ move $8,$2
+ lui $3,%hi(_rtl8651_asicTableSize)
+ addiu $3,$3,%lo(_rtl8651_asicTableSize)
+ addu $2,$2,$3
+ lw $2,0($2)
+ nop
+ beq $2,$0,$L87
+ move $7,$0
+
+ li $9,-1149239296 # 0xffffffffbb800000
+ addu $8,$8,$3
+ sll $2,$7,2
+$L88:
+ addu $3,$2,$9
+ addu $2,$2,$6
+ lw $2,0($2)
+ nop
+ sw $2,19744($3)
+ addiu $7,$7,1
+ lw $2,0($8)
+ nop
+ sltu $2,$7,$2
+ bne $2,$0,$L88
+ sll $2,$7,2
+
+$L87:
+ sll $3,$4,16
+ sll $2,$5,5
+ addu $3,$3,$2
+ li $2,-1157627904 # 0xffffffffbb000000
+ addu $3,$3,$2
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $2,$2,0x4d08
+ sw $3,0($2)
+ lw $31,16($sp)
+ nop
+ j $31
+ addiu $sp,$sp,24
+
+ .set macro
+ .set reorder
+ .end _rtl8651_asicTableAccessForward
+ .section .text._rtl8651_addAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_addAsicEntry
+ .ent _rtl8651_addAsicEntry
+ .type _rtl8651_addAsicEntry, @function
+_rtl8651_addAsicEntry:
+ .set nomips16
+ .frame $sp,40,$31 # vars= 8, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,36($sp)
+ sw $18,32($sp)
+ sw $17,28($sp)
+ sw $16,24($sp)
+ move $16,$4
+ move $17,$5
+ move $18,$6
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,16
+
+ lw $2,16($sp)
+ nop
+ beq $2,$0,$L89
+ li $3,-1 # 0xffffffffffffffff
+
+ move $4,$16
+ move $5,$17
+ jal _rtl8651_asicTableAccessForward
+ move $6,$18
+
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $3,$2,$L105
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ nop
+ bgtz $2,$L106
+ li $3,-1149239296 # 0xffffffffbb800000
+
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+$L105:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,3 # 0x3
+ beq $3,$2,$L92
+ li $2,4 # 0x4
+
+ bne $3,$2,$L107
+ li $2,3 # 0x3
+
+$L92:
+ li $3,-1149239296 # 0xffffffffbb800000
+$L106:
+ ori $3,$3,0x4418
+ lw $2,0($3)
+ li $4,262144 # 0x40000
+ or $2,$2,$4
+ sw $2,0($3)
+ move $4,$3
+ li $3,524288 # 0x80000
+$L94:
+ lw $2,0($4)
+ nop
+ and $2,$2,$3
+ beq $2,$0,$L94
+ li $2,3 # 0x3
+
+$L107:
+ li $3,-1149239296 # 0xffffffffbb800000
+ ori $3,$3,0x4d00
+ sw $2,0($3)
+$L96:
+ lw $2,0($3)
+ nop
+ andi $2,$2,0x1
+ bne $2,$0,$L96
+ li $2,-1149239296 # 0xffffffffbb800000
+
+ ori $2,$2,0x4d04
+ lw $2,0($2)
+ nop
+ andi $2,$2,0x1
+ beq $2,$0,$L98
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $3,$2,$L108
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ nop
+ bgtz $2,$L100
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+$L108:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,3 # 0x3
+ beq $3,$2,$L100
+ li $2,4 # 0x4
+
+ bne $3,$2,$L99
+ nop
+
+$L100:
+ li $4,-1149239296 # 0xffffffffbb800000
+ ori $4,$4,0x4418
+ lw $3,0($4)
+ li $2,-327680 # 0xfffffffffffb0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ sw $3,0($4)
+$L99:
+ j $L89
+ li $3,-1 # 0xffffffffffffffff
+
+$L98:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $3,$2,$L109
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ nop
+ bgtz $2,$L110
+ li $4,-1149239296 # 0xffffffffbb800000
+
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+$L109:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,3 # 0x3
+ beq $3,$2,$L103
+ li $2,4 # 0x4
+
+ bne $3,$2,$L89
+ move $3,$0
+
+$L103:
+ li $4,-1149239296 # 0xffffffffbb800000
+$L110:
+ ori $4,$4,0x4418
+ lw $3,0($4)
+ li $2,-327680 # 0xfffffffffffb0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ sw $3,0($4)
+ move $3,$0
+$L89:
+ move $2,$3
+ lw $31,36($sp)
+ lw $18,32($sp)
+ lw $17,28($sp)
+ lw $16,24($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end _rtl8651_addAsicEntry
+ .data
+ .align 2
+ .type mcastForceAddOpCnt, @object
+ .size mcastForceAddOpCnt, 4
+mcastForceAddOpCnt:
+ .word 0
+ .section .text._rtl865x_getForceAddMcastOpCnt,"ax",@progbits
+ .align 2
+ .globl _rtl865x_getForceAddMcastOpCnt
+ .ent _rtl865x_getForceAddMcastOpCnt
+ .type _rtl865x_getForceAddMcastOpCnt, @function
+_rtl865x_getForceAddMcastOpCnt:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ lui $2,%hi(mcastForceAddOpCnt)
+ lw $2,%lo(mcastForceAddOpCnt)($2)
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end _rtl865x_getForceAddMcastOpCnt
+ .section .text._rtl8651_forceAddAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_forceAddAsicEntry
+ .ent _rtl8651_forceAddAsicEntry
+ .type _rtl8651_forceAddAsicEntry, @function
+_rtl8651_forceAddAsicEntry:
+ .set nomips16
+ .frame $sp,40,$31 # vars= 8, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,36($sp)
+ sw $18,32($sp)
+ sw $17,28($sp)
+ sw $16,24($sp)
+ move $16,$4
+ move $17,$5
+ move $18,$6
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,16
+
+ lw $2,16($sp)
+ nop
+ beq $2,$0,$L112
+ li $3,-1 # 0xffffffffffffffff
+
+ li $2,3 # 0x3
+ bne $16,$2,$L125
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $3,%hi(mcastForceAddOpCnt)
+ lw $2,%lo(mcastForceAddOpCnt)($3)
+ nop
+ addiu $2,$2,1
+ sw $2,%lo(mcastForceAddOpCnt)($3)
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+$L125:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $3,$2,$L126
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ nop
+ bgtz $2,$L127
+ li $3,-1149239296 # 0xffffffffbb800000
+
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+$L126:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,3 # 0x3
+ beq $3,$2,$L116
+ li $2,4 # 0x4
+
+ bne $3,$2,$L128
+ move $4,$16
+
+$L116:
+ li $3,-1149239296 # 0xffffffffbb800000
+$L127:
+ ori $3,$3,0x4418
+ lw $2,0($3)
+ li $4,262144 # 0x40000
+ or $2,$2,$4
+ sw $2,0($3)
+ move $4,$3
+ li $3,524288 # 0x80000
+$L118:
+ lw $2,0($4)
+ nop
+ and $2,$2,$3
+ beq $2,$0,$L118
+ nop
+
+ move $4,$16
+$L128:
+ move $5,$17
+ jal _rtl8651_asicTableAccessForward
+ move $6,$18
+
+ li $2,9 # 0x9
+ li $3,-1149239296 # 0xffffffffbb800000
+ ori $3,$3,0x4d00
+ sw $2,0($3)
+$L120:
+ lw $2,0($3)
+ nop
+ andi $2,$2,0x1
+ bne $2,$0,$L120
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $3,$2,$L129
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ nop
+ bgtz $2,$L130
+ li $4,-1149239296 # 0xffffffffbb800000
+
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+$L129:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,3 # 0x3
+ beq $3,$2,$L123
+ li $2,4 # 0x4
+
+ bne $3,$2,$L112
+ move $3,$0
+
+$L123:
+ li $4,-1149239296 # 0xffffffffbb800000
+$L130:
+ ori $4,$4,0x4418
+ lw $3,0($4)
+ li $2,-327680 # 0xfffffffffffb0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ sw $3,0($4)
+ move $3,$0
+$L112:
+ move $2,$3
+ lw $31,36($sp)
+ lw $18,32($sp)
+ lw $17,28($sp)
+ lw $16,24($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end _rtl8651_forceAddAsicEntry
+ .section .text._rtl8651_readAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_readAsicEntry
+ .ent _rtl8651_readAsicEntry
+ .type _rtl8651_readAsicEntry, @function
+_rtl8651_readAsicEntry:
+ .set nomips16
+ .frame $sp,112,$31 # vars= 72, regs= 6/0, args= 16, gp= 0
+ .mask 0x801f0000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-112
+ sw $31,108($sp)
+ sw $20,104($sp)
+ sw $19,100($sp)
+ sw $18,96($sp)
+ sw $17,92($sp)
+ sw $16,88($sp)
+ move $18,$4
+ move $19,$5
+ move $20,$6
+ li $16,2 # 0x2
+ li $17,10 # 0xa
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,80
+
+ lw $2,80($sp)
+ nop
+ beq $2,$0,$L131
+ li $3,-1 # 0xffffffffffffffff
+
+ bne $20,$0,$L133
+ sll $10,$18,16
+
+ lui $4,%hi($LC1)
+ addiu $4,$4,%lo($LC1)
+ lui $5,%hi($LC2)
+ addiu $5,$5,%lo($LC2)
+ jal panic_printk
+ li $6,444 # 0x1bc
+
+$L134:
+ j $L134
+ nop
+
+$L133:
+ sll $2,$19,5
+ addu $10,$10,$2
+ li $2,-1157627904 # 0xffffffffbb000000
+ addu $10,$10,$2
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $3,$2,0x4d00
+$L136:
+ lw $2,0($3)
+ nop
+ andi $2,$2,0x1
+ bne $2,$0,$L136
+ addiu $13,$sp,16
+
+$L138:
+ move $9,$0
+$L145:
+ beq $16,$9,$L143
+ sll $3,$9,5
+
+ addu $3,$3,$13
+ lw $2,0($10)
+ nop
+ sw $2,0($3)
+ lw $2,4($10)
+ nop
+ sw $2,4($3)
+ lw $2,8($10)
+ nop
+ sw $2,8($3)
+ lw $2,12($10)
+ nop
+ sw $2,12($3)
+ lw $2,16($10)
+ nop
+ sw $2,16($3)
+ lw $2,20($10)
+ nop
+ sw $2,20($3)
+ lw $2,24($10)
+ nop
+ sw $2,24($3)
+ lw $2,28($10)
+ nop
+ sw $2,28($3)
+ move $16,$9
+$L143:
+ addiu $9,$9,1
+ sltu $2,$9,2
+ bne $2,$0,$L145
+ move $11,$0
+
+ move $9,$0
+ addiu $12,$sp,16
+ sltu $2,$9,2
+$L174:
+ beq $2,$0,$L168
+ move $8,$9
+
+ sll $7,$9,3
+ move $5,$12
+$L158:
+ move $4,$0
+ sll $6,$8,3
+ addu $3,$7,$4
+$L173:
+ sll $3,$3,2
+ addu $3,$3,$5
+ addu $2,$6,$4
+ sll $2,$2,2
+ addu $2,$2,$5
+ lw $3,0($3)
+ lw $2,0($2)
+ nop
+ beq $3,$2,$L154
+ addiu $4,$4,1
+
+ addiu $4,$4,-1
+ j $L156
+ li $11,1 # 0x1
+
+$L154:
+ slt $2,$4,8
+ bne $2,$0,$L173
+ addu $3,$7,$4
+
+ addiu $8,$8,1
+ sltu $2,$8,2
+ bne $2,$0,$L158
+ nop
+
+$L168:
+ addiu $9,$9,1
+ sltu $2,$9,2
+ bne $2,$0,$L174
+ nop
+
+$L156:
+ bne $11,$0,$L139
+ addiu $17,$17,-1
+
+ bne $17,$0,$L138
+ nop
+
+$L139:
+ sll $3,$16,5
+ addiu $2,$sp,16
+ addu $10,$2,$3
+ sll $3,$18,2
+ lui $2,%hi(_rtl8651_asicTableSize)
+ addiu $2,$2,%lo(_rtl8651_asicTableSize)
+ addu $3,$3,$2
+ lw $2,0($3)
+ nop
+ beq $2,$0,$L172
+ move $5,$0
+
+ move $4,$3
+ sll $2,$5,2
+$L175:
+ addu $3,$2,$20
+ addu $2,$2,$10
+ lw $2,0($2)
+ nop
+ sw $2,0($3)
+ addiu $5,$5,1
+ lw $2,0($4)
+ nop
+ sltu $2,$5,$2
+ bne $2,$0,$L175
+ sll $2,$5,2
+
+$L172:
+ move $3,$0
+$L131:
+ move $2,$3
+ lw $31,108($sp)
+ lw $20,104($sp)
+ lw $19,100($sp)
+ lw $18,96($sp)
+ lw $17,92($sp)
+ lw $16,88($sp)
+ j $31
+ addiu $sp,$sp,112
+
+ .set macro
+ .set reorder
+ .end _rtl8651_readAsicEntry
+ .section .text._rtl8651_readAsicEntryStopTLU,"ax",@progbits
+ .align 2
+ .globl _rtl8651_readAsicEntryStopTLU
+ .ent _rtl8651_readAsicEntryStopTLU
+ .type _rtl8651_readAsicEntryStopTLU, @function
+_rtl8651_readAsicEntryStopTLU:
+ .set nomips16
+ .frame $sp,40,$31 # vars= 8, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,36($sp)
+ sw $18,32($sp)
+ sw $17,28($sp)
+ sw $16,24($sp)
+ move $16,$4
+ move $17,$5
+ move $18,$6
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,16
+
+ lw $2,16($sp)
+ nop
+ beq $2,$0,$L176
+ li $3,-1 # 0xffffffffffffffff
+
+ bne $18,$0,$L178
+ sll $6,$16,16
+
+ lui $4,%hi($LC1)
+ addiu $4,$4,%lo($LC1)
+ lui $5,%hi($LC2)
+ addiu $5,$5,%lo($LC2)
+ jal panic_printk
+ li $6,550 # 0x226
+
+$L179:
+ j $L179
+ nop
+
+$L178:
+ sll $2,$17,5
+ addu $6,$6,$2
+ li $2,-1157627904 # 0xffffffffbb000000
+ addu $6,$6,$2
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $3,$2,$L193
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ nop
+ bgtz $2,$L194
+ li $2,-1149239296 # 0xffffffffbb800000
+
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+$L193:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,3 # 0x3
+ beq $3,$2,$L182
+ li $2,4 # 0x4
+
+ bne $3,$2,$L195
+ sll $2,$16,2
+
+$L182:
+ li $2,-1149239296 # 0xffffffffbb800000
+$L194:
+ ori $2,$2,0x4418
+ lw $3,0($2)
+ li $4,262144 # 0x40000
+ or $3,$3,$4
+ sw $3,0($2)
+ sll $2,$16,2
+$L195:
+ move $4,$2
+ lui $3,%hi(_rtl8651_asicTableSize)
+ addiu $3,$3,%lo(_rtl8651_asicTableSize)
+ addu $2,$2,$3
+ lw $2,0($2)
+ nop
+ beq $2,$0,$L192
+ move $5,$0
+
+ addu $4,$4,$3
+ sll $2,$5,2
+$L196:
+ addu $3,$2,$18
+ addu $2,$2,$6
+ lw $2,0($2)
+ nop
+ sw $2,0($3)
+ addiu $5,$5,1
+ lw $2,0($4)
+ nop
+ sltu $2,$5,$2
+ bne $2,$0,$L196
+ sll $2,$5,2
+
+$L192:
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $3,$2,$L197
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ nop
+ bgtz $2,$L189
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+$L197:
+ lw $3,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,3 # 0x3
+ beq $3,$2,$L189
+ li $2,4 # 0x4
+
+ bne $3,$2,$L176
+ move $3,$0
+
+$L189:
+ li $4,-1149239296 # 0xffffffffbb800000
+ ori $4,$4,0x4418
+ lw $3,0($4)
+ li $2,-327680 # 0xfffffffffffb0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ sw $3,0($4)
+ move $3,$0
+$L176:
+ move $2,$3
+ lw $31,36($sp)
+ lw $18,32($sp)
+ lw $17,28($sp)
+ lw $16,24($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end _rtl8651_readAsicEntryStopTLU
+ .section .text._rtl8651_delAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_delAsicEntry
+ .ent _rtl8651_delAsicEntry
+ .type _rtl8651_delAsicEntry, @function
+_rtl8651_delAsicEntry:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $3,$2,0x4d00
+$L199:
+ lw $2,0($3)
+ nop
+ andi $2,$2,0x1
+ bne $2,$0,$L199
+ sll $2,$4,2
+
+ move $7,$2
+ lui $3,%hi(_rtl8651_asicTableSize)
+ addiu $3,$3,%lo(_rtl8651_asicTableSize)
+ addu $2,$2,$3
+ lw $2,0($2)
+ nop
+ beq $2,$0,$L212
+ move $3,$0
+
+ li $8,-1149239296 # 0xffffffffbb800000
+ lui $2,%hi(_rtl8651_asicTableSize)
+ addiu $2,$2,%lo(_rtl8651_asicTableSize)
+ addu $7,$7,$2
+ sll $2,$3,2
+$L215:
+ addu $2,$2,$8
+ sw $0,19744($2)
+ addiu $3,$3,1
+ lw $2,0($7)
+ nop
+ sltu $2,$3,$2
+ bne $2,$0,$L215
+ sll $2,$3,2
+
+$L212:
+ sltu $2,$6,$5
+ bne $2,$0,$L214
+ nop
+
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $10,$2,0x4d08
+ sll $4,$4,16
+ li $9,-1157627904 # 0xffffffffbb000000
+ ori $3,$2,0x4d00
+ li $8,9 # 0x9
+ ori $7,$2,0x4d04
+$L210:
+ sll $2,$5,5
+ addu $2,$4,$2
+ addu $2,$2,$9
+ sw $2,0($10)
+ sw $8,0($3)
+$L207:
+ lw $2,0($3)
+ nop
+ andi $2,$2,0x1
+ bne $2,$0,$L207
+ nop
+
+ lw $2,0($7)
+ nop
+ andi $2,$2,0x1
+ beq $2,$0,$L209
+ addiu $5,$5,1
+
+ addiu $5,$5,-1
+ j $31
+ li $2,-1 # 0xffffffffffffffff
+
+$L209:
+ sltu $2,$6,$5
+ beq $2,$0,$L210
+ nop
+
+$L214:
+ j $31
+ move $2,$0
+
+ .set macro
+ .set reorder
+ .end _rtl8651_delAsicEntry
+ .globl RtkHomeGatewayChipName
+ .section .bss
+ .align 2
+ .type RtkHomeGatewayChipName, @object
+ .size RtkHomeGatewayChipName, 16
+RtkHomeGatewayChipName:
+ .space 16
+ .globl RtkHomeGatewayChipNameID
+ .align 2
+ .type RtkHomeGatewayChipNameID, @object
+ .size RtkHomeGatewayChipNameID, 4
+RtkHomeGatewayChipNameID:
+ .space 4
+ .globl RtkHomeGatewayChipRevisionID
+ .align 2
+ .type RtkHomeGatewayChipRevisionID, @object
+ .size RtkHomeGatewayChipRevisionID, 4
+RtkHomeGatewayChipRevisionID:
+ .space 4
+ .ident "GCC: (GNU) 3.4.6-1.3.6"
diff --git a/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicL3.S b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicL3.S
new file mode 100644
index 000000000..4e5b7d477
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/96E/rtl865x_asicL3.S
@@ -0,0 +1,2458 @@
+ .file 1 "rtl865x_asicL3.c"
+ .section .mdebug.abi32
+ .previous
+#APP
+ .macro _ssnop; sll $0, $0, 1; .endm
+ .macro _ehb; sll $0, $0, 3; .endm
+ .macro mtc0_tlbw_hazard; nop; nop; .endm
+ .macro tlbw_use_hazard; nop; nop; nop; .endm
+ .macro tlb_probe_hazard; nop; nop; nop; .endm
+ .macro irq_enable_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro irq_disable_hazard; nop; nop; nop; .endm
+ .macro back_to_back_c0_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro raw_local_irq_enable
+ .set push
+ .set reorder
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1e
+ mtc0 $1,$12
+ irq_enable_hazard
+ .set pop
+ .endm
+ .macro raw_local_irq_disable
+ .set push
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1f
+ .set noreorder
+ mtc0 $1,$12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_save_flags flags
+ .set push
+ .set reorder
+ mfc0 \flags, $12
+ .set pop
+ .endm
+
+ .macro raw_local_irq_save result
+ .set push
+ .set reorder
+ .set noat
+ mfc0 \result, $12
+ ori $1, \result, 0x1f
+ xori $1, 0x1f
+ .set noreorder
+ mtc0 $1, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_irq_restore flags
+ .set push
+ .set noreorder
+ .set noat
+ mfc0 $1, $12
+ andi \flags, 1
+ ori $1, 0x1f
+ xori $1, 0x1f
+ or \flags, $1
+ mtc0 \flags, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+#NO_APP
+ .section .text.rtl8651_setAsicExtIntIpTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicExtIntIpTable
+ .ent rtl8651_setAsicExtIntIpTable
+ .type rtl8651_setAsicExtIntIpTable, @function
+rtl8651_setAsicExtIntIpTable:
+ .set nomips16
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $17,$4
+ sltu $2,$4,16
+ beq $2,$0,$L3
+ move $16,$5
+
+ beq $5,$0,$L3
+ li $3,-1073741824 # 0xffffffffc0000000
+
+ lw $2,12($5)
+ nop
+ and $2,$2,$3
+ bne $2,$3,$L2
+ addiu $4,$sp,16
+
+$L3:
+ j $L1
+ li $2,-1 # 0xffffffffffffffff
+
+$L2:
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $2,0($16)
+ nop
+ sw $2,20($sp)
+ lw $2,4($16)
+ nop
+ sw $2,16($sp)
+ lw $5,12($16)
+ nop
+ srl $4,$5,31
+ sll $4,$4,2
+ lw $2,24($sp)
+ li $3,-5 # 0xfffffffffffffffb
+ and $2,$2,$3
+ or $2,$2,$4
+ srl $5,$5,29
+ andi $5,$5,0x2
+ li $3,-3 # 0xfffffffffffffffd
+ and $2,$2,$3
+ or $2,$2,$5
+ lw $3,8($16)
+ nop
+ andi $3,$3,0x1f
+ sll $3,$3,3
+ li $4,-249 # 0xffffffffffffff07
+ and $2,$2,$4
+ or $2,$2,$3
+ ori $2,$2,0x1
+ sw $2,24($sp)
+ li $4,5 # 0x5
+ move $5,$17
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+$L1:
+ lw $31,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicExtIntIpTable
+ .section .text.rtl8651_delAsicExtIntIpTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicExtIntIpTable
+ .ent rtl8651_delAsicExtIntIpTable
+ .type rtl8651_delAsicExtIntIpTable, @function
+rtl8651_delAsicExtIntIpTable:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,16
+ beq $2,$0,$L4
+ li $3,-1 # 0xffffffffffffffff
+
+ addiu $4,$sp,16
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $2,24($sp)
+ li $3,-2 # 0xfffffffffffffffe
+ and $2,$2,$3
+ sw $2,24($sp)
+ li $4,5 # 0x5
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+ move $3,$2
+$L4:
+ move $2,$3
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicExtIntIpTable
+ .section .text.rtl8651_getAsicExtIntIpTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicExtIntIpTable
+ .ent rtl8651_getAsicExtIntIpTable
+ .type rtl8651_getAsicExtIntIpTable, @function
+rtl8651_getAsicExtIntIpTable:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $3,$4
+ sltu $2,$4,16
+ beq $2,$0,$L8
+ move $16,$5
+
+ bne $5,$0,$L7
+ li $4,5 # 0x5
+
+$L8:
+ j $L6
+ li $3,-1 # 0xffffffffffffffff
+
+$L7:
+ move $5,$3
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lw $2,24($sp)
+ nop
+ andi $2,$2,0x1
+ beq $2,$0,$L6
+ li $3,-1 # 0xffffffffffffffff
+
+ lw $2,20($sp)
+ nop
+ sw $2,0($16)
+ lw $2,16($sp)
+ nop
+ sw $2,4($16)
+ lw $5,24($sp)
+ nop
+ srl $4,$5,2
+ sll $4,$4,31
+ lw $3,12($16)
+ li $2,2147418112 # 0x7fff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ srl $4,$5,1
+ andi $4,$4,0x1
+ sll $4,$4,30
+ li $2,-1073807360 # 0xffffffffbfff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ sw $3,12($16)
+ srl $5,$5,3
+ andi $5,$5,0x1f
+ sw $5,8($16)
+ move $3,$0
+$L6:
+ move $2,$3
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicExtIntIpTable
+ .section .text.rtl8651_setAsicPppoe,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicPppoe
+ .ent rtl8651_setAsicPppoe
+ .type rtl8651_setAsicPppoe, @function
+rtl8651_setAsicPppoe:
+ .set nomips16
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $17,$4
+ sltu $2,$4,8
+ beq $2,$0,$L12
+ move $16,$5
+
+ beq $5,$0,$L13
+ li $2,-1 # 0xffffffffffffffff
+
+ lhu $3,0($5)
+ li $2,65535 # 0xffff
+ bne $3,$2,$L11
+ addiu $4,$sp,16
+
+$L12:
+ j $L10
+ li $2,-1 # 0xffffffffffffffff
+
+$L11:
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lhu $2,0($16)
+ nop
+ sh $2,18($sp)
+ lhu $4,2($16)
+ nop
+ andi $4,$4,0x7
+ sll $4,$4,16
+ lw $3,16($sp)
+ li $2,-524288 # 0xfffffffffff80000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ sw $3,16($sp)
+ li $4,11 # 0xb
+ move $5,$17
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+$L10:
+$L13:
+ lw $31,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicPppoe
+ .section .text.rtl8651_getAsicPppoe,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicPppoe
+ .ent rtl8651_getAsicPppoe
+ .type rtl8651_getAsicPppoe, @function
+rtl8651_getAsicPppoe:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $3,$4
+ sltu $2,$4,8
+ beq $2,$0,$L16
+ move $16,$5
+
+ bne $5,$0,$L15
+ li $4,11 # 0xb
+
+$L16:
+ j $L14
+ li $2,-1 # 0xffffffffffffffff
+
+$L15:
+ move $5,$3
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lhu $2,18($sp)
+ nop
+ sh $2,0($16)
+ lhu $2,16($sp)
+ nop
+ andi $2,$2,0x7
+ sh $2,2($16)
+ move $2,$0
+$L14:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicPppoe
+ .section .text.rtl8651_setAsicNextHopTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicNextHopTable
+ .ent rtl8651_setAsicNextHopTable
+ .type rtl8651_setAsicNextHopTable, @function
+rtl8651_setAsicNextHopTable:
+ .set nomips16
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $17,$4
+ sltu $2,$4,32
+ beq $2,$0,$L19
+ move $16,$5
+
+ bne $5,$0,$L18
+ addiu $4,$sp,16
+
+$L19:
+ j $L17
+ li $2,-1 # 0xffffffffffffffff
+
+$L18:
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $4,0($16)
+ nop
+ sll $4,$4,2
+ lw $2,4($16)
+ nop
+ or $4,$4,$2
+ andi $4,$4,0x3ff
+ sll $4,$4,11
+ lw $3,16($sp)
+ li $2,-2097152 # 0xffffffffffe00000
+ ori $2,$2,0x7ff
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $2,8($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,8
+ li $4,-1793 # 0xfffffffffffff8ff
+ and $3,$3,$4
+ or $3,$3,$2
+ lw $2,12($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,5
+ li $4,-225 # 0xffffffffffffff1f
+ and $3,$3,$4
+ or $3,$3,$2
+ lw $2,16($16)
+ nop
+ andi $2,$2,0xf
+ sll $2,$2,1
+ li $4,-31 # 0xffffffffffffffe1
+ and $3,$3,$4
+ or $3,$3,$2
+ lw $2,20($16)
+ nop
+ srl $2,$2,31
+ li $4,-2 # 0xfffffffffffffffe
+ and $3,$3,$4
+ or $3,$3,$2
+ sw $3,16($sp)
+ li $4,13 # 0xd
+ move $5,$17
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+$L17:
+ lw $31,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicNextHopTable
+ .section .text.rtl8651_getAsicNextHopTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicNextHopTable
+ .ent rtl8651_getAsicNextHopTable
+ .type rtl8651_getAsicNextHopTable, @function
+rtl8651_getAsicNextHopTable:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $3,$4
+ sltu $2,$4,32
+ beq $2,$0,$L22
+ move $16,$5
+
+ bne $5,$0,$L21
+ li $4,13 # 0xd
+
+$L22:
+ j $L20
+ li $2,-1 # 0xffffffffffffffff
+
+$L21:
+ move $5,$3
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lw $4,16($sp)
+ nop
+ srl $3,$4,11
+ andi $2,$3,0x3ff
+ sra $2,$2,2
+ sw $2,0($16)
+ andi $3,$3,0x3
+ sw $3,4($16)
+ srl $2,$4,8
+ andi $2,$2,0x7
+ sw $2,8($16)
+ srl $2,$4,5
+ andi $2,$2,0x7
+ sw $2,12($16)
+ srl $2,$4,1
+ andi $2,$2,0xf
+ sw $2,16($16)
+ sll $4,$4,31
+ lw $3,20($16)
+ li $2,2147418112 # 0x7fff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ sw $3,20($16)
+ move $2,$0
+$L20:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicNextHopTable
+ .section .text.rtl8651_setAsicRouting,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicRouting
+ .ent rtl8651_setAsicRouting
+ .type rtl8651_setAsicRouting, @function
+rtl8651_setAsicRouting:
+ .set nomips16
+ .frame $sp,64,$31 # vars= 32, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $18,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $18,$4
+ sltu $2,$4,8
+ beq $2,$0,$L25
+ move $16,$5
+
+ bne $5,$0,$L24
+ nop
+
+$L25:
+ j $L23
+ li $2,-1 # 0xffffffffffffffff
+
+$L24:
+ lw $2,4($5)
+ nop
+ beq $2,$0,$L32
+ move $17,$0
+
+ move $4,$0
+ li $5,1 # 0x1
+ move $3,$2
+ sll $2,$5,$4
+$L52:
+ and $2,$2,$3
+ bne $2,$0,$L51
+ li $2,31 # 0x1f
+
+ addiu $4,$4,1
+ sltu $2,$4,32
+ bne $2,$0,$L52
+ sll $2,$5,$4
+
+ li $2,31 # 0x1f
+$L51:
+ subu $17,$2,$4
+$L32:
+ addiu $4,$sp,16
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $2,0($16)
+ nop
+ sw $2,16($sp)
+ lw $3,8($16)
+ nop
+ sltu $2,$3,7
+ beq $2,$0,$L53
+ li $2,-1 # 0xffffffffffffffff
+
+ sll $2,$3,2
+ lui $3,%hi($L49)
+ addiu $3,$3,%lo($L49)
+ addu $2,$2,$3
+ lw $2,0($2)
+ nop
+ j $2
+ nop
+
+ .rdata
+ .align 2
+$L49:
+ .word $L34
+ .word $L35
+ .word $L36
+ .word $L48
+ .word $L38
+ .word $L39
+ .word $L38
+ .section .text.rtl8651_setAsicRouting
+$L34:
+ lw $4,36($16)
+ nop
+ andi $4,$4,0x7
+ sll $4,$4,24
+ lw $3,20($sp)
+ li $2,-117506048 # 0xfffffffff8ff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $4,28($16)
+ nop
+ sll $4,$4,2
+ lw $2,32($16)
+ nop
+ or $4,$4,$2
+ andi $4,$4,0x3ff
+ sll $4,$4,14
+ li $2,-16777216 # 0xffffffffff000000
+ ori $2,$2,0x3fff
+ and $3,$3,$2
+ or $3,$3,$4
+ andi $4,$17,0x1f
+ li $2,-32 # 0xffffffffffffffe0
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $2,12($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,11
+ li $4,-14337 # 0xffffffffffffc7ff
+ and $3,$3,$4
+ or $3,$3,$2
+ lw $5,60($16)
+ nop
+ slt $2,$5,0
+ sll $2,$2,9
+ li $4,-513 # 0xfffffffffffffdff
+ and $3,$3,$4
+ or $3,$3,$2
+ srl $5,$5,20
+ andi $5,$5,0x400
+ li $2,-1025 # 0xfffffffffffffbff
+ and $3,$3,$2
+ or $3,$3,$5
+ lw $2,8($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,6
+ li $4,-449 # 0xfffffffffffffe3f
+ and $3,$3,$4
+ or $3,$3,$2
+ ori $3,$3,0x20
+ j $L33
+ sw $3,20($sp)
+
+$L35:
+ lw $4,28($16)
+ nop
+ sll $4,$4,2
+ lw $2,32($16)
+ nop
+ or $4,$4,$2
+ andi $4,$4,0x3ff
+ sll $4,$4,14
+ lw $3,20($sp)
+ li $2,-16777216 # 0xffffffffff000000
+ ori $2,$2,0x3fff
+ and $3,$3,$2
+ or $3,$3,$4
+ andi $4,$17,0x1f
+ li $2,-32 # 0xffffffffffffffe0
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $2,12($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,11
+ li $4,-14337 # 0xffffffffffffc7ff
+ and $3,$3,$4
+ or $3,$3,$2
+ lw $5,60($16)
+ nop
+ slt $2,$5,0
+ sll $2,$2,9
+ li $4,-513 # 0xfffffffffffffdff
+ and $3,$3,$4
+ or $3,$3,$2
+ srl $5,$5,20
+ andi $5,$5,0x400
+ li $2,-1025 # 0xfffffffffffffbff
+ and $3,$3,$2
+ or $3,$3,$5
+ lw $2,8($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,6
+ li $4,-449 # 0xfffffffffffffe3f
+ and $3,$3,$4
+ or $3,$3,$2
+ ori $3,$3,0x20
+ j $L33
+ sw $3,20($sp)
+
+$L36:
+ lw $4,20($16)
+ nop
+ srl $4,$4,3
+ andi $4,$4,0x3f
+ sll $4,$4,20
+ lw $3,20($sp)
+ li $2,-66125824 # 0xfffffffffc0f0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $4,16($16)
+ nop
+ srl $4,$4,3
+ andi $4,$4,0x3f
+ sll $4,$4,14
+ li $2,-1048576 # 0xfffffffffff00000
+ ori $2,$2,0x3fff
+ and $3,$3,$2
+ or $3,$3,$4
+ andi $4,$17,0x1f
+ li $2,-32 # 0xffffffffffffffe0
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $2,12($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,11
+ li $4,-14337 # 0xffffffffffffc7ff
+ and $3,$3,$4
+ or $3,$3,$2
+ lw $5,60($16)
+ nop
+ slt $2,$5,0
+ sll $2,$2,9
+ li $4,-513 # 0xfffffffffffffdff
+ and $3,$3,$4
+ or $3,$3,$2
+ srl $5,$5,20
+ andi $5,$5,0x400
+ li $2,-1025 # 0xfffffffffffffbff
+ and $3,$3,$2
+ or $3,$3,$5
+ lw $2,8($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,6
+ li $4,-449 # 0xfffffffffffffe3f
+ and $3,$3,$4
+ or $3,$3,$2
+ ori $3,$3,0x20
+ lw $4,24($16)
+ nop
+ andi $4,$4,0x7
+ sll $4,$4,26
+ li $2,-469827584 # 0xffffffffe3ff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ j $L33
+ sw $3,20($sp)
+
+$L38:
+ lw $3,12($16)
+ nop
+ andi $3,$3,0x7
+ sll $3,$3,11
+ lw $2,20($sp)
+ li $4,-14337 # 0xffffffffffffc7ff
+ and $2,$2,$4
+ or $2,$2,$3
+ andi $4,$17,0x1f
+ li $3,-32 # 0xffffffffffffffe0
+ and $2,$2,$3
+ or $2,$2,$4
+ lw $3,8($16)
+ nop
+ andi $3,$3,0x7
+ sll $3,$3,6
+ li $4,-449 # 0xfffffffffffffe3f
+ and $2,$2,$4
+ or $2,$2,$3
+ ori $2,$2,0x20
+ lw $3,60($16)
+ nop
+ slt $3,$3,0
+ sll $3,$3,9
+ li $4,-513 # 0xfffffffffffffdff
+ and $2,$2,$4
+ or $2,$2,$3
+ j $L33
+ sw $2,20($sp)
+
+$L39:
+ lw $3,40($16)
+ nop
+ srl $3,$3,1
+ andi $3,$3,0xf
+ sll $3,$3,14
+ lw $4,20($sp)
+ li $2,-262144 # 0xfffffffffffc0000
+ ori $2,$2,0x3fff
+ and $4,$4,$2
+ or $4,$4,$3
+ sw $4,20($sp)
+ lw $3,44($16)
+ nop
+ sltu $2,$3,33
+ beq $2,$0,$L53
+ li $2,-1 # 0xffffffffffffffff
+
+ sll $2,$3,2
+ lui $3,%hi($L47)
+ addiu $3,$3,%lo($L47)
+ addu $2,$2,$3
+ lw $2,0($2)
+ nop
+ j $2
+ nop
+
+ .rdata
+ .align 2
+$L47:
+ .word $L46
+ .word $L46
+ .word $L41
+ .word $L46
+ .word $L42
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L43
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L44
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L46
+ .word $L45
+ .section .text.rtl8651_setAsicRouting
+$L41:
+ lw $2,20($sp)
+ li $3,-14337 # 0xffffffffffffc7ff
+ and $2,$2,$3
+ j $L40
+ sw $2,20($sp)
+
+$L42:
+ lw $2,20($sp)
+ li $3,-14337 # 0xffffffffffffc7ff
+ and $2,$2,$3
+ ori $2,$2,0x800
+ j $L40
+ sw $2,20($sp)
+
+$L43:
+ lw $2,20($sp)
+ li $3,-14337 # 0xffffffffffffc7ff
+ and $2,$2,$3
+ ori $2,$2,0x1000
+ j $L40
+ sw $2,20($sp)
+
+$L44:
+ lw $2,20($sp)
+ li $3,-14337 # 0xffffffffffffc7ff
+ and $2,$2,$3
+ ori $2,$2,0x1800
+ j $L40
+ sw $2,20($sp)
+
+$L45:
+ lw $2,20($sp)
+ li $3,-14337 # 0xffffffffffffc7ff
+ and $2,$2,$3
+ ori $2,$2,0x2000
+ j $L40
+ sw $2,20($sp)
+
+$L46:
+ j $L23
+ li $2,-1 # 0xffffffffffffffff
+
+$L40:
+ lw $4,48($16)
+ nop
+ andi $4,$4,0x1f
+ sll $4,$4,18
+ lw $3,20($sp)
+ li $2,-8192000 # 0xffffffffff830000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $4,52($16)
+ nop
+ andi $4,$4,0x3
+ sll $4,$4,23
+ li $2,-25231360 # 0xfffffffffe7f0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ andi $4,$17,0x1f
+ li $2,-32 # 0xffffffffffffffe0
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $2,8($16)
+ nop
+ andi $2,$2,0x7
+ sll $2,$2,6
+ li $4,-449 # 0xfffffffffffffe3f
+ and $3,$3,$4
+ or $3,$3,$2
+ ori $3,$3,0x20
+ lw $4,56($16)
+ nop
+ andi $4,$4,0x7
+ sll $4,$4,25
+ li $2,-234946560 # 0xfffffffff1ff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ lw $5,60($16)
+ nop
+ slt $2,$5,0
+ sll $2,$2,9
+ li $4,-513 # 0xfffffffffffffdff
+ and $3,$3,$4
+ or $3,$3,$2
+ srl $5,$5,20
+ andi $5,$5,0x400
+ li $2,-1025 # 0xfffffffffffffbff
+ and $3,$3,$2
+ or $3,$3,$5
+ j $L33
+ sw $3,20($sp)
+
+$L48:
+ j $L23
+ li $2,-1 # 0xffffffffffffffff
+
+$L33:
+ li $4,2 # 0x2
+ move $5,$18
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+$L23:
+$L53:
+ lw $31,60($sp)
+ lw $18,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicRouting
+ .section .text.rtl8651_delAsicRouting,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicRouting
+ .ent rtl8651_delAsicRouting
+ .type rtl8651_delAsicRouting, @function
+rtl8651_delAsicRouting:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,8
+ beq $2,$0,$L54
+ li $3,-1 # 0xffffffffffffffff
+
+ addiu $4,$sp,16
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $2,20($sp)
+ li $3,-33 # 0xffffffffffffffdf
+ and $2,$2,$3
+ sw $2,20($sp)
+ li $4,2 # 0x2
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+ move $3,$2
+$L54:
+ move $2,$3
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicRouting
+ .section .text.rtl8651_getAsicRouting,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicRouting
+ .ent rtl8651_getAsicRouting
+ .type rtl8651_getAsicRouting, @function
+rtl8651_getAsicRouting:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $3,$4
+ sltu $2,$4,8
+ beq $2,$0,$L58
+ move $16,$5
+
+ bne $5,$0,$L57
+ move $5,$3
+
+$L58:
+ j $L56
+ li $4,-1 # 0xffffffffffffffff
+
+$L57:
+ li $4,2 # 0x2
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lw $2,20($sp)
+ nop
+ srl $2,$2,5
+ andi $2,$2,0x1
+ beq $2,$0,$L56
+ li $4,-1 # 0xffffffffffffffff
+
+ lw $2,16($sp)
+ nop
+ sw $2,0($16)
+ lw $2,20($sp)
+ nop
+ srl $2,$2,6
+ andi $2,$2,0x7
+ sw $2,8($16)
+ move $3,$0
+ sw $0,4($16)
+ li $7,31 # 0x1f
+ li $6,1 # 0x1
+ lw $2,20($sp)
+ nop
+ andi $5,$2,0x1f
+ move $4,$0
+ subu $2,$7,$3
+$L84:
+ sll $2,$6,$2
+ or $4,$2,$4
+ addiu $3,$3,1
+ sltu $2,$5,$3
+ beq $2,$0,$L84
+ subu $2,$7,$3
+
+ sw $4,4($16)
+ lw $4,20($sp)
+ nop
+ srl $2,$4,11
+ andi $2,$2,0x7
+ sw $2,12($16)
+ srl $4,$4,9
+ sll $4,$4,31
+ lw $3,60($16)
+ li $2,2147418112 # 0x7fff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ sw $3,60($16)
+ lw $3,8($16)
+ nop
+ sltu $2,$3,7
+ beq $2,$0,$L79
+ sll $2,$3,2
+
+ lui $3,%hi($L80)
+ addiu $3,$3,%lo($L80)
+ addu $2,$2,$3
+ lw $2,0($2)
+ nop
+ j $2
+ nop
+
+ .rdata
+ .align 2
+$L80:
+ .word $L65
+ .word $L66
+ .word $L67
+ .word $L79
+ .word $L69
+ .word $L70
+ .word $L69
+ .section .text.rtl8651_getAsicRouting
+$L65:
+ sw $0,16($16)
+ sw $0,20($16)
+ lw $4,20($sp)
+ nop
+ srl $2,$4,24
+ andi $2,$2,0x7
+ sw $2,36($16)
+ srl $3,$4,14
+ andi $2,$3,0x3ff
+ sra $2,$2,2
+ sw $2,28($16)
+ andi $3,$3,0x3
+ sw $3,32($16)
+ srl $4,$4,10
+ andi $4,$4,0x1
+ sll $4,$4,30
+ lw $3,60($16)
+ li $2,-1073807360 # 0xffffffffbfff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ j $L64
+ sw $3,60($16)
+
+$L66:
+ sw $0,16($16)
+ sw $0,20($16)
+ sw $0,36($16)
+ lw $4,20($sp)
+ nop
+ srl $3,$4,14
+ andi $2,$3,0x3ff
+ sra $2,$2,2
+ sw $2,28($16)
+ andi $3,$3,0x3
+ sw $3,32($16)
+ srl $4,$4,10
+ andi $4,$4,0x1
+ sll $4,$4,30
+ lw $3,60($16)
+ li $2,-1073807360 # 0xffffffffbfff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ j $L64
+ sw $3,60($16)
+
+$L67:
+ lw $4,20($sp)
+ nop
+ srl $2,$4,20
+ andi $2,$2,0x3f
+ sw $2,20($16)
+ srl $2,$4,14
+ andi $2,$2,0x3f
+ sw $2,16($16)
+ sw $0,36($16)
+ sw $0,28($16)
+ sw $0,32($16)
+ srl $2,$4,26
+ andi $2,$2,0x7
+ sw $2,24($16)
+ srl $4,$4,10
+ andi $4,$4,0x1
+ sll $4,$4,30
+ lw $3,60($16)
+ li $2,-1073807360 # 0xffffffffbfff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ j $L64
+ sw $3,60($16)
+
+$L69:
+ sw $0,16($16)
+ sw $0,20($16)
+ sw $0,36($16)
+ sw $0,28($16)
+ sw $0,32($16)
+ lw $2,20($sp)
+ nop
+ srl $2,$2,10
+ andi $2,$2,0x1
+ sll $2,$2,30
+ lw $4,60($16)
+ li $3,-1073807360 # 0xffffffffbfff0000
+ ori $3,$3,0xffff
+ and $4,$4,$3
+ or $4,$4,$2
+ j $L64
+ sw $4,60($16)
+
+$L70:
+ lw $2,20($sp)
+ nop
+ srl $3,$2,13
+ andi $3,$3,0x1e
+ sw $3,40($16)
+ srl $2,$2,11
+ andi $3,$2,0x7
+ sltu $2,$3,5
+ beq $2,$0,$L56
+ li $4,-1 # 0xffffffffffffffff
+
+ sll $2,$3,2
+ lui $3,%hi($L78)
+ addiu $3,$3,%lo($L78)
+ addu $2,$2,$3
+ lw $2,0($2)
+ nop
+ j $2
+ nop
+
+ .rdata
+ .align 2
+$L78:
+ .word $L72
+ .word $L73
+ .word $L74
+ .word $L75
+ .word $L76
+ .section .text.rtl8651_getAsicRouting
+$L72:
+ li $2,2 # 0x2
+ j $L71
+ sw $2,44($16)
+
+$L73:
+ li $2,4 # 0x4
+ j $L71
+ sw $2,44($16)
+
+$L74:
+ li $2,8 # 0x8
+ j $L71
+ sw $2,44($16)
+
+$L75:
+ li $2,16 # 0x10
+ j $L71
+ sw $2,44($16)
+
+$L76:
+ li $2,32 # 0x20
+ sw $2,44($16)
+$L71:
+ lw $4,20($sp)
+ nop
+ srl $2,$4,18
+ andi $2,$2,0x1f
+ sw $2,48($16)
+ srl $2,$4,23
+ andi $2,$2,0x3
+ sw $2,52($16)
+ srl $2,$4,25
+ andi $2,$2,0x7
+ sw $2,56($16)
+ srl $5,$4,9
+ sll $5,$5,31
+ lw $3,60($16)
+ li $2,2147418112 # 0x7fff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$5
+ srl $4,$4,10
+ andi $4,$4,0x1
+ sll $4,$4,30
+ li $2,-1073807360 # 0xffffffffbfff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ or $3,$3,$4
+ j $L64
+ sw $3,60($16)
+
+$L79:
+ j $L56
+ li $4,-1 # 0xffffffffffffffff
+
+$L64:
+ move $4,$0
+$L56:
+ move $2,$4
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicRouting
+ .section .text.rtl8651_setAsicArp,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicArp
+ .ent rtl8651_setAsicArp
+ .type rtl8651_setAsicArp, @function
+rtl8651_setAsicArp:
+ .set nomips16
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $17,$4
+ sltu $2,$4,512
+ beq $2,$0,$L87
+ move $16,$5
+
+ bne $5,$0,$L86
+ addiu $4,$sp,16
+
+$L87:
+ j $L85
+ li $2,-1 # 0xffffffffffffffff
+
+$L86:
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $3,0($16)
+ nop
+ sll $3,$3,2
+ lw $2,4($16)
+ nop
+ andi $2,$2,0x3
+ or $3,$3,$2
+ andi $3,$3,0x3ff
+ sll $3,$3,1
+ lw $4,16($sp)
+ li $2,-2047 # 0xfffffffffffff801
+ and $4,$4,$2
+ or $4,$4,$3
+ ori $4,$4,0x1
+ lw $3,8($16)
+ nop
+ andi $3,$3,0x1f
+ sll $3,$3,11
+ li $2,-65536 # 0xffffffffffff0000
+ ori $2,$2,0x7ff
+ and $4,$4,$2
+ or $4,$4,$3
+ sw $4,16($sp)
+ li $4,1 # 0x1
+ move $5,$17
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+$L85:
+ lw $31,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicArp
+ .section .text.rtl8651_delAsicArp,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicArp
+ .ent rtl8651_delAsicArp
+ .type rtl8651_delAsicArp, @function
+rtl8651_delAsicArp:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,512
+ beq $2,$0,$L88
+ li $3,-1 # 0xffffffffffffffff
+
+ addiu $4,$sp,16
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $2,16($sp)
+ li $3,-2 # 0xfffffffffffffffe
+ and $2,$2,$3
+ sw $2,16($sp)
+ li $4,1 # 0x1
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+ move $3,$2
+$L88:
+ move $2,$3
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicArp
+ .section .text.rtl8651_getAsicArp,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicArp
+ .ent rtl8651_getAsicArp
+ .type rtl8651_getAsicArp, @function
+rtl8651_getAsicArp:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $3,$4
+ sltu $2,$4,512
+ beq $2,$0,$L92
+ move $16,$5
+
+ bne $5,$0,$L91
+ li $4,1 # 0x1
+
+$L92:
+ j $L90
+ li $3,-1 # 0xffffffffffffffff
+
+$L91:
+ move $5,$3
+ jal _rtl8651_readAsicEntryStopTLU
+ addiu $6,$sp,16
+
+ lw $2,16($sp)
+ nop
+ andi $2,$2,0x1
+ beq $2,$0,$L90
+ li $3,-1 # 0xffffffffffffffff
+
+ lw $4,16($sp)
+ nop
+ srl $3,$4,1
+ andi $2,$3,0x3ff
+ sra $2,$2,2
+ sw $2,0($16)
+ andi $3,$3,0x3
+ sw $3,4($16)
+ srl $4,$4,11
+ andi $4,$4,0x1f
+ sw $4,8($16)
+ move $3,$0
+$L90:
+ move $2,$3
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicArp
+ .section .text.rtl8651_ipMulticastTableIndex,"ax",@progbits
+ .align 2
+ .globl rtl8651_ipMulticastTableIndex
+ .ent rtl8651_ipMulticastTableIndex
+ .type rtl8651_ipMulticastTableIndex, @function
+rtl8651_ipMulticastTableIndex:
+ .set nomips16
+ .frame $sp,288,$31 # vars= 288, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-288
+ move $6,$0
+ sll $2,$6,2
+$L123:
+ addu $2,$2,$sp
+ sw $0,256($2)
+ addiu $6,$6,1
+ sltu $2,$6,8
+ bne $2,$0,$L123
+ sll $2,$6,2
+
+ move $6,$0
+ li $7,1 # 0x1
+ sll $2,$7,$6
+$L124:
+ and $2,$2,$4
+ beq $2,$0,$L102
+ sll $2,$6,2
+
+ addu $2,$2,$sp
+ j $L103
+ sw $7,0($2)
+
+$L102:
+ addu $2,$2,$sp
+ sw $0,0($2)
+$L103:
+ li $3,1 # 0x1
+ sll $2,$3,$6
+ and $2,$2,$5
+ beq $2,$0,$L104
+ sll $2,$6,2
+
+ addu $2,$2,$sp
+ j $L101
+ sw $3,128($2)
+
+$L104:
+ addu $2,$2,$sp
+ sw $0,128($2)
+$L101:
+ addiu $6,$6,1
+ sltu $2,$6,32
+ bne $2,$0,$L124
+ sll $2,$7,$6
+
+ lw $2,0($sp)
+ lw $3,32($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,64($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,96($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,156($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,188($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,220($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,252($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,284($sp)
+ lw $2,4($sp)
+ lw $3,36($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,68($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,100($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,152($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,184($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,216($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,248($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,280($sp)
+ lw $2,8($sp)
+ lw $3,40($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,72($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,104($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,148($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,180($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,212($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,244($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,276($sp)
+ lw $2,12($sp)
+ lw $3,44($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,76($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,108($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,144($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,176($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,208($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,240($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,272($sp)
+ lw $2,16($sp)
+ lw $3,48($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,80($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,112($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,140($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,172($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,204($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,236($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,268($sp)
+ lw $2,20($sp)
+ lw $3,52($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,84($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,116($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,136($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,168($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,200($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,232($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,264($sp)
+ lw $2,24($sp)
+ lw $3,56($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,88($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,120($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,132($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,164($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,196($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,228($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,260($sp)
+ lw $2,28($sp)
+ lw $3,60($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,92($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,124($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,128($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,160($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,192($sp)
+ nop
+ xor $2,$2,$3
+ lw $3,224($sp)
+ nop
+ xor $2,$2,$3
+ sw $2,256($sp)
+ move $6,$0
+ sll $2,$6,2
+$L125:
+ addu $2,$2,$sp
+ lw $3,256($2)
+ nop
+ andi $3,$3,0x1
+ sw $3,256($2)
+ addiu $6,$6,1
+ sltu $2,$6,8
+ bne $2,$0,$L125
+ sll $2,$6,2
+
+ move $3,$0
+ move $6,$0
+ sll $2,$6,2
+$L126:
+ addu $2,$2,$sp
+ lw $2,256($2)
+ nop
+ sll $2,$2,$6
+ addu $3,$3,$2
+ addiu $6,$6,1
+ sltu $2,$6,8
+ bne $2,$0,$L126
+ sll $2,$6,2
+
+ move $2,$3
+ j $31
+ addiu $sp,$sp,288
+
+ .set macro
+ .set reorder
+ .end rtl8651_ipMulticastTableIndex
+ .section .text.rtl8651_setAsicIpMulticastTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicIpMulticastTable
+ .ent rtl8651_setAsicIpMulticastTable
+ .type rtl8651_setAsicIpMulticastTable, @function
+rtl8651_setAsicIpMulticastTable:
+ .set nomips16
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ lw $2,4($4)
+ nop
+ srl $2,$2,28
+ li $3,14 # 0xe
+ bne $2,$3,$L129
+ move $17,$4
+
+ lhu $3,10($4)
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ nop
+ addiu $2,$2,6
+ slt $3,$3,$2
+ bne $3,$0,$L128
+ addiu $4,$sp,16
+
+$L129:
+ j $L127
+ li $2,-1 # 0xffffffffffffffff
+
+$L128:
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $4,0($17)
+ nop
+ sw $4,16($sp)
+ lw $5,4($17)
+ li $16,268369920 # 0xfff0000
+ ori $16,$16,0xffff
+ and $6,$5,$16
+ lw $2,20($sp)
+ li $3,-268435456 # 0xfffffffff0000000
+ and $2,$2,$3
+ or $2,$2,$6
+ jal rtl8651_ipMulticastTableIndex
+ sw $2,20($sp)
+
+ lhu $4,10($17)
+ nop
+ sll $4,$4,28
+ lw $3,20($sp)
+ nop
+ and $3,$3,$16
+ or $3,$3,$4
+ sw $3,20($sp)
+ lw $5,12($17)
+ nop
+ andi $5,$5,0x1ff
+ lw $4,24($sp)
+ li $3,-512 # 0xfffffffffffffe00
+ and $4,$4,$3
+ or $4,$4,$5
+ li $3,-16385 # 0xffffffffffffbfff
+ and $4,$4,$3
+ ori $4,$4,0x2000
+ lhu $3,20($17)
+ nop
+ andi $3,$3,0xf
+ sll $3,$3,9
+ li $5,-7681 # 0xffffffffffffe1ff
+ and $4,$4,$5
+ or $4,$4,$3
+ li $3,-262144 # 0xfffffffffffc0000
+ ori $3,$3,0x7fff
+ and $4,$4,$3
+ li $3,196608 # 0x30000
+ ori $3,$3,0x8000
+ or $4,$4,$3
+ sw $4,24($sp)
+ li $4,3 # 0x3
+ move $5,$2
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+$L127:
+ lw $31,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicIpMulticastTable
+ .section .text.rtl8651_delAsicIpMulticastTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicIpMulticastTable
+ .ent rtl8651_delAsicIpMulticastTable
+ .type rtl8651_delAsicIpMulticastTable, @function
+rtl8651_delAsicIpMulticastTable:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ addiu $4,$sp,16
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ li $4,3 # 0x3
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicIpMulticastTable
+ .section .text.rtl8651_getAsicIpMulticastTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicIpMulticastTable
+ .ent rtl8651_getAsicIpMulticastTable
+ .type rtl8651_getAsicIpMulticastTable, @function
+rtl8651_getAsicIpMulticastTable:
+ .set nomips16
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $3,$4
+ move $16,$5
+ beq $5,$0,$L131
+ li $2,-1 # 0xffffffffffffffff
+
+ li $4,3 # 0x3
+ move $5,$3
+ jal _rtl8651_readAsicEntryStopTLU
+ addiu $6,$sp,16
+
+ lw $2,16($sp)
+ nop
+ sw $2,0($16)
+ lw $2,24($sp)
+ nop
+ srl $2,$2,13
+ andi $2,$2,0x1
+ beq $2,$0,$L133
+ li $2,268369920 # 0xfff0000
+
+ lw $2,20($sp)
+ li $3,268369920 # 0xfff0000
+ ori $3,$3,0xffff
+ and $2,$2,$3
+ li $3,-536870912 # 0xffffffffe0000000
+ or $2,$2,$3
+ j $L134
+ sw $2,4($16)
+
+$L133:
+ lw $3,20($sp)
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ bne $3,$0,$L135
+ li $3,268369920 # 0xfff0000
+
+ j $L134
+ sw $0,4($16)
+
+$L135:
+ lw $2,20($sp)
+ ori $3,$3,0xffff
+ and $2,$2,$3
+ li $3,-536870912 # 0xffffffffe0000000
+ or $2,$2,$3
+ sw $2,4($16)
+$L134:
+ sh $0,8($16)
+ lw $2,20($sp)
+ nop
+ srl $2,$2,28
+ sh $2,10($16)
+ lw $4,24($sp)
+ nop
+ andi $2,$4,0x1ff
+ sw $2,12($16)
+ srl $2,$4,9
+ andi $2,$2,0xf
+ sh $2,20($16)
+ srl $3,$4,15
+ andi $3,$3,0x7
+ sll $2,$3,2
+ addu $2,$2,$3
+ sh $2,16($16)
+ srl $2,$4,14
+ andi $2,$2,0x1
+ sh $2,18($16)
+ srl $4,$4,13
+ andi $4,$4,0x1
+ li $2,-1 # 0xffffffffffffffff
+ movn $2,$0,$4 #RLX4181/RLX4281:conditional move
+$L131:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicIpMulticastTable
+ .section .text.rtl8651_setAsicMulticastEnable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicMulticastEnable
+ .ent rtl8651_setAsicMulticastEnable
+ .type rtl8651_setAsicMulticastEnable, @function
+rtl8651_setAsicMulticastEnable:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $2,1 # 0x1
+ bne $4,$2,$L139
+ li $3,-1149239296 # 0xffffffffbb800000
+
+ ori $3,$3,0x4428
+ lw $2,0($3)
+ nop
+ ori $2,$2,0x8
+ sw $2,0($3)
+ j $31
+ move $2,$0
+
+$L139:
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $2,$2,0x4428
+ lw $3,0($2)
+ li $4,-9 # 0xfffffffffffffff7
+ and $3,$3,$4
+ sw $3,0($2)
+ move $2,$0
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicMulticastEnable
+ .section .text.rtl8651_getAsicMulticastEnable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicMulticastEnable
+ .ent rtl8651_getAsicMulticastEnable
+ .type rtl8651_getAsicMulticastEnable, @function
+rtl8651_getAsicMulticastEnable:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ beq $4,$0,$L144
+ li $2,-1 # 0xffffffffffffffff
+
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $2,$2,0x4428
+ lw $2,0($2)
+ nop
+ srl $2,$2,3
+ andi $2,$2,0x1
+ sw $2,0($4)
+ move $2,$0
+$L144:
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicMulticastEnable
+ .section .text.rtl8651_setAsicMulticastPortInternal,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicMulticastPortInternal
+ .ent rtl8651_setAsicMulticastPortInternal
+ .type rtl8651_setAsicMulticastPortInternal, @function
+rtl8651_setAsicMulticastPortInternal:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ sll $3,$5,24
+ sra $3,$3,24
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ nop
+ addiu $2,$2,6
+ sltu $2,$4,$2
+ beq $2,$0,$L145
+ li $6,-1 # 0xffffffffffffffff
+
+ li $2,1 # 0x1
+ bne $3,$2,$L147
+ sll $3,$3,$4
+
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $2,$2,0x4418
+ andi $3,$3,0x1ff
+ sll $3,$3,5
+ lw $4,0($2)
+ nop
+ or $3,$3,$4
+ sw $3,0($2)
+ j $L145
+ move $6,$0
+
+$L147:
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $2,$2,0x4418
+ li $3,1 # 0x1
+ sll $3,$3,$4
+ andi $3,$3,0x1ff
+ sll $3,$3,5
+ nor $3,$0,$3
+ lw $4,0($2)
+ nop
+ and $3,$3,$4
+ sw $3,0($2)
+ move $6,$0
+$L145:
+ j $31
+ move $2,$6
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicMulticastPortInternal
+ .section .text.rtl8651_getAsicMulticastPortInternal,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicMulticastPortInternal
+ .ent rtl8651_getAsicMulticastPortInternal
+ .type rtl8651_getAsicMulticastPortInternal, @function
+rtl8651_getAsicMulticastPortInternal:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ beq $5,$0,$L149
+ li $3,-1 # 0xffffffffffffffff
+
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ nop
+ addiu $2,$2,6
+ sltu $2,$4,$2
+ beq $2,$0,$L149
+ li $6,1 # 0x1
+
+ sll $2,$6,$4
+ andi $2,$2,0x1ff
+ sll $2,$2,5
+ li $3,-1149239296 # 0xffffffffbb800000
+ ori $3,$3,0x4418
+ lw $3,0($3)
+ nop
+ and $2,$2,$3
+ beq $2,$0,$L152
+ nop
+
+ j $L153
+ sb $6,0($5)
+
+$L152:
+ sb $0,0($5)
+$L153:
+ move $3,$0
+$L149:
+ j $31
+ move $2,$3
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicMulticastPortInternal
+ .section .text.rtl8651_setAsicMulticastMTU,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicMulticastMTU
+ .ent rtl8651_setAsicMulticastMTU
+ .type rtl8651_setAsicMulticastMTU, @function
+rtl8651_setAsicMulticastMTU:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ move $5,$4
+ li $2,-16384 # 0xffffffffffffc000
+ and $2,$4,$2
+ bne $2,$0,$L154
+ li $3,-1 # 0xffffffffffffffff
+
+ li $4,-1149239296 # 0xffffffffbb800000
+ ori $4,$4,0x440c
+ lw $2,0($4)
+ li $3,-16384 # 0xffffffffffffc000
+ and $2,$2,$3
+ andi $3,$5,0x3fff
+ or $2,$2,$3
+ sw $2,0($4)
+ move $3,$0
+$L154:
+ j $31
+ move $2,$3
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicMulticastMTU
+ .section .text.rtl8651_getAsicMulticastMTU,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicMulticastMTU
+ .ent rtl8651_getAsicMulticastMTU
+ .type rtl8651_getAsicMulticastMTU, @function
+rtl8651_getAsicMulticastMTU:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ beq $4,$0,$L159
+ li $2,-1 # 0xffffffffffffffff
+
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $2,$2,0x440c
+ lw $2,0($2)
+ nop
+ andi $2,$2,0x3fff
+ sw $2,0($4)
+ move $2,$0
+$L159:
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicMulticastMTU
+ .section .text.rtl865x_setAsicMulticastAging,"ax",@progbits
+ .align 2
+ .globl rtl865x_setAsicMulticastAging
+ .ent rtl865x_setAsicMulticastAging
+ .type rtl865x_setAsicMulticastAging, @function
+rtl865x_setAsicMulticastAging:
+ .set nomips16
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $2,1 # 0x1
+ bne $4,$2,$L161
+ li $3,-1149239296 # 0xffffffffbb800000
+
+ li $2,-1149239296 # 0xffffffffbb800000
+ ori $2,$2,0x4400
+ lw $3,0($2)
+ li $4,-9 # 0xfffffffffffffff7
+ and $3,$3,$4
+ sw $3,0($2)
+ j $31
+ move $2,$0
+
+$L161:
+ ori $3,$3,0x4400
+ lw $2,0($3)
+ nop
+ ori $2,$2,0x8
+ sw $2,0($3)
+ move $2,$0
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end rtl865x_setAsicMulticastAging
+ .section .text.rtl865x_initAsicL3,"ax",@progbits
+ .align 2
+ .globl rtl865x_initAsicL3
+ .ent rtl865x_initAsicL3
+ .type rtl865x_initAsicL3, @function
+rtl865x_initAsicL3:
+ .set nomips16
+ .frame $sp,112,$31 # vars= 80, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-112
+ sw $31,104($sp)
+ sw $17,100($sp)
+ sw $16,96($sp)
+ jal rtl865x_getAsicFun
+ addiu $4,$sp,88
+
+ lw $2,88($sp)
+ nop
+ andi $2,$2,0x2
+ beq $2,$0,$L164
+ li $3,-1 # 0xffffffffffffffff
+
+ j $L165
+ li $4,5 # 0x5
+
+$L173:
+ j $L164
+ li $3,-1 # 0xffffffffffffffff
+
+$L165:
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,16 # 0x10
+
+ li $4,1 # 0x1
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,512 # 0x200
+
+ li $4,11 # 0xb
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,8 # 0x8
+
+ li $4,13 # 0xd
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,32 # 0x20
+
+ li $4,2 # 0x2
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,8 # 0x8
+
+ li $4,3 # 0x3
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,256 # 0x100
+
+ jal rtl8651_setAsicMulticastEnable
+ li $4,1 # 0x1
+
+ li $16,-1149239296 # 0xffffffffbb800000
+ ori $16,$16,0x440c
+ lw $2,0($16)
+ li $3,262144 # 0x40000
+ or $2,$2,$3
+ sw $2,0($16)
+ jal rtl8651_setAsicMulticastMTU
+ li $4,1522 # 0x5f2
+
+ lw $2,0($16)
+ li $3,65536 # 0x10000
+ or $2,$2,$3
+ sw $2,0($16)
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ nop
+ addiu $2,$2,6
+ blez $2,$L172
+ move $16,$0
+
+ lui $17,%hi(rtl8651_totalExtPortNum)
+ move $4,$16
+$L174:
+ jal rtl8651_setAsicMulticastPortInternal
+ li $5,1 # 0x1
+
+ bne $2,$0,$L173
+ addiu $16,$16,1
+
+ lw $2,%lo(rtl8651_totalExtPortNum)($17)
+ nop
+ addiu $2,$2,6
+ slt $2,$16,$2
+ bne $2,$0,$L174
+ move $4,$16
+
+$L172:
+ addiu $4,$sp,16
+ move $5,$0
+ jal memset
+ li $6,68 # 0x44
+
+ li $2,4 # 0x4
+ sw $2,24($sp)
+ sw $0,16($sp)
+ sw $0,20($sp)
+ sw $0,28($sp)
+ lw $3,76($sp)
+ li $2,2147418112 # 0x7fff0000
+ ori $2,$2,0xffff
+ and $3,$3,$2
+ sw $3,76($sp)
+ li $4,7 # 0x7
+ jal rtl8651_setAsicRouting
+ addiu $5,$sp,16
+
+ move $3,$0
+$L164:
+ move $2,$3
+ lw $31,104($sp)
+ lw $17,100($sp)
+ lw $16,96($sp)
+ j $31
+ addiu $sp,$sp,112
+
+ .set macro
+ .set reorder
+ .end rtl865x_initAsicL3
+ .ident "GCC: (GNU) 3.4.6-1.3.6"
diff --git a/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicBasic.S b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicBasic.S
new file mode 100644
index 000000000..c5b42ae50
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicBasic.S
@@ -0,0 +1,1469 @@
+ .file 1 "rtl865x_asicBasic.c"
+ .section .mdebug.abi32
+ .previous
+ .gnu_attribute 4, 3
+#APP
+ .macro _ssnop; sll $0, $0, 1; .endm
+ .macro _ehb; sll $0, $0, 3; .endm
+ .macro mtc0_tlbw_hazard; nop; nop; .endm
+ .macro tlbw_use_hazard; nop; nop; nop; .endm
+ .macro tlb_probe_hazard; nop; nop; nop; .endm
+ .macro irq_enable_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro irq_disable_hazard; nop; nop; nop; .endm
+ .macro back_to_back_c0_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro raw_local_irq_enable
+ .set push
+ .set reorder
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1e
+ mtc0 $1,$12
+ irq_enable_hazard
+ .set pop
+ .endm
+ .macro raw_local_irq_disable
+ .set push
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1f
+ .set noreorder
+ mtc0 $1,$12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_save_flags flags
+ .set push
+ .set reorder
+ mfc0 \flags, $12
+ .set pop
+ .endm
+
+ .macro raw_local_irq_save result
+ .set push
+ .set reorder
+ .set noat
+ mfc0 \result, $12
+ ori $1, \result, 0x1f
+ xori $1, 0x1f
+ .set noreorder
+ mtc0 $1, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_irq_restore flags
+ .set push
+ .set noreorder
+ .set noat
+ mfc0 $1, $12
+ andi \flags, 1
+ ori $1, 0x1f
+ xori $1, 0x1f
+ or \flags, $1
+ mtc0 \flags, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+#NO_APP
+ .section .text.prom_putchar,"ax",@progbits
+ .align 2
+ .set nomips16
+ .ent prom_putchar
+ .type prom_putchar, @function
+prom_putchar:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $2,1 # 0x1
+ li $5,-1207959552 # 0xb8000000
+ ori $5,$5,0x2014
+ j $L2
+ li $6,30000 # 0x7530
+
+$L5:
+ bne $2,$6,$L3
+ addiu $2,$2,1
+
+ li $3,-60 # 0xffffffc4
+ li $2,-1207959552 # 0xb8000000
+ ori $2,$2,0x2008
+ sb $3,0($2)
+ j $31
+ nop
+
+$L3:
+$L2:
+ lbu $3,0($5)
+ andi $3,$3,0x20
+ beq $3,$0,$L5
+ nop
+
+ andi $4,$4,0x00ff
+ li $2,-1207959552 # 0xb8000000
+ ori $2,$2,0x2000
+ sb $4,0($2)
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end prom_putchar
+ .size prom_putchar, .-prom_putchar
+ .section .text.early_console_write,"ax",@progbits
+ .align 2
+ .set nomips16
+ .ent early_console_write
+ .type early_console_write, @function
+early_console_write:
+ .frame $sp,32,$31 # vars= 0, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-32
+ sw $31,28($sp)
+ sw $18,24($sp)
+ sw $17,20($sp)
+ sw $16,16($sp)
+ beq $5,$0,$L11
+ move $16,$4
+
+ lb $2,0($4)
+ beq $2,$0,$L11
+ addiu $17,$5,-1
+
+ li $18,10 # 0xa
+$L10:
+ bne $2,$18,$L9
+ nop
+
+ jal prom_putchar
+ li $4,13 # 0xd
+
+$L9:
+ lb $4,0($16)
+ jal prom_putchar
+ nop
+
+ beq $17,$0,$L11
+ addiu $16,$16,1
+
+ lb $2,0($16)
+ bne $2,$0,$L10
+ addiu $17,$17,-1
+
+$L11:
+ lw $31,28($sp)
+ lw $18,24($sp)
+ lw $17,20($sp)
+ lw $16,16($sp)
+ j $31
+ addiu $sp,$sp,32
+
+ .set macro
+ .set reorder
+ .end early_console_write
+ .size early_console_write, .-early_console_write
+ .section .text.rtl865x_initAsicFun,"ax",@progbits
+ .align 2
+ .globl rtl865x_initAsicFun
+ .set nomips16
+ .ent rtl865x_initAsicFun
+ .type rtl865x_initAsicFun, @function
+rtl865x_initAsicFun:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ sw $0,0($4)
+ li $3,-1207959552 # 0xb8000000
+ lw $5,0($3)
+ li $2,-65536 # 0xffff0000
+ and $2,$5,$2
+ ori $3,$3,0xc
+ lw $3,0($3)
+ li $5,-1073741824 # 0xc0000000
+ bne $2,$5,$L13
+ andi $3,$3,0xf
+
+ li $2,9 # 0x9
+ beq $3,$2,$L25
+ li $2,46 # 0x2e
+
+ andi $2,$3,0x8
+ bne $2,$0,$L15
+ li $2,46 # 0x2e
+
+$L25:
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L15:
+ li $2,8 # 0x8
+ bne $3,$2,$L17
+ li $2,14 # 0xe
+
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L17:
+ addiu $3,$3,-10
+ sltu $3,$3,2
+ beq $3,$0,$L18
+ nop
+
+ li $2,10 # 0xa
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L18:
+ li $2,14 # 0xe
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L13:
+ li $5,-2147483648 # 0x80000000
+ bne $2,$5,$L19
+ nop
+
+ li $2,7 # 0x7
+ bne $3,$2,$L20
+ li $2,46 # 0x2e
+
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L20:
+ li $2,15 # 0xf
+ bne $3,$2,$L21
+ li $2,3 # 0x3
+
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L21:
+ bne $3,$2,$L22
+ nop
+
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L22:
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+$L19:
+ li $3,-2120810496 # 0x81970000
+ beq $2,$3,$L23
+ nop
+
+ j $31
+ li $2,-1 # 0xffffffff
+
+$L23:
+ li $2,14 # 0xe
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+ .set macro
+ .set reorder
+ .end rtl865x_initAsicFun
+ .size rtl865x_initAsicFun, .-rtl865x_initAsicFun
+ .section .text.rtl865x_getAsicFun,"ax",@progbits
+ .align 2
+ .globl rtl865x_getAsicFun
+ .set nomips16
+ .ent rtl865x_getAsicFun
+ .type rtl865x_getAsicFun, @function
+rtl865x_getAsicFun:
+ .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-32
+ sw $31,28($sp)
+ sw $17,24($sp)
+ sw $16,20($sp)
+ lui $2,%hi(fun_enable)
+ lw $3,%lo(fun_enable)($2)
+ sw $3,0($4)
+ lw $2,%lo(fun_enable)($2)
+ bne $2,$0,$L27
+ move $17,$4
+
+ lui $16,%hi(fun_enable)
+ jal rtl865x_initAsicFun
+ addiu $4,$16,%lo(fun_enable)
+
+ lw $2,%lo(fun_enable)($16)
+ sw $2,0($17)
+$L27:
+ move $2,$0
+ lw $31,28($sp)
+ lw $17,24($sp)
+ lw $16,20($sp)
+ j $31
+ addiu $sp,$sp,32
+
+ .set macro
+ .set reorder
+ .end rtl865x_getAsicFun
+ .size rtl865x_getAsicFun, .-rtl865x_getAsicFun
+ .section .rodata.str1.4,"aMS",@progbits,1
+ .align 2
+$LC0:
+ .ascii "init switch core failed!!!\012\000"
+ .section .text.bsp_swcore_init,"ax",@progbits
+ .align 2
+ .globl bsp_swcore_init
+ .set nomips16
+ .ent bsp_swcore_init
+ .type bsp_swcore_init, @function
+bsp_swcore_init:
+ .frame $sp,32,$31 # vars= 0, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-32
+ sw $31,28($sp)
+ sw $18,24($sp)
+ sw $17,20($sp)
+ sw $16,16($sp)
+ move $16,$4
+ li $2,-1207959552 # 0xb8000000
+ lw $17,0($2)
+ ori $2,$2,0xc
+ lw $18,0($2)
+ lui $4,%hi(fun_enable)
+ jal rtl865x_initAsicFun
+ addiu $4,$4,%lo(fun_enable)
+
+ li $3,-1 # 0xffffffff
+ beq $2,$3,$L31
+ li $2,-1 # 0xffffffff
+
+ li $2,-1207959552 # 0xb8000000
+ lw $3,0($2)
+ li $2,-65536 # 0xffff0000
+ and $3,$3,$2
+ li $2,-1073741824 # 0xc0000000
+ bne $3,$2,$L38
+ li $2,-65536 # 0xffff0000
+
+ li $2,-1207959552 # 0xb8000000
+ ori $2,$2,0xc
+ lw $2,0($2)
+ andi $2,$2,0x8
+ bne $2,$0,$L38
+ li $2,-65536 # 0xffff0000
+
+ addiu $2,$16,-8
+ sltu $2,$2,2
+ bne $2,$0,$L31
+ move $2,$0
+
+ li $2,-65536 # 0xffff0000
+$L38:
+ and $17,$17,$2
+ li $2,-1073741824 # 0xc0000000
+ bne $17,$2,$L33
+ andi $18,$18,0xf
+
+ li $2,9 # 0x9
+ bne $16,$2,$L34
+ nop
+
+ beq $18,$2,$L34
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L31
+ li $2,-1 # 0xffffffff
+
+$L33:
+ li $2,-2147483648 # 0x80000000
+ bne $17,$2,$L39
+ move $2,$0
+
+ li $2,7 # 0x7
+ bne $16,$2,$L35
+ nop
+
+ beq $18,$2,$L34
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L31
+ li $2,-1 # 0xffffffff
+
+$L35:
+ li $2,15 # 0xf
+ bne $16,$2,$L36
+ nop
+
+ beq $18,$2,$L36
+ li $2,7 # 0x7
+
+ beq $18,$2,$L34
+ li $2,3 # 0x3
+
+ beq $18,$2,$L34
+ li $2,11 # 0xb
+
+ beq $18,$2,$L34
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L31
+ li $2,-1 # 0xffffffff
+
+$L36:
+ li $2,3 # 0x3
+ bne $16,$2,$L34
+ nop
+
+ beq $18,$2,$L34
+ li $2,7 # 0x7
+
+ beq $18,$2,$L34
+ lui $4,%hi($LC0)
+
+ addiu $4,$4,%lo($LC0)
+ jal early_console_write
+ li $5,27 # 0x1b
+
+ j $L31
+ li $2,-1 # 0xffffffff
+
+$L34:
+ move $2,$0
+$L31:
+$L39:
+ lw $31,28($sp)
+ lw $18,24($sp)
+ lw $17,20($sp)
+ lw $16,16($sp)
+ j $31
+ addiu $sp,$sp,32
+
+ .set macro
+ .set reorder
+ .end bsp_swcore_init
+ .size bsp_swcore_init, .-bsp_swcore_init
+ .section .text.rtl865x_accessAsicTable,"ax",@progbits
+ .align 2
+ .globl rtl865x_accessAsicTable
+ .set nomips16
+ .ent rtl865x_accessAsicTable
+ .type rtl865x_accessAsicTable, @function
+rtl865x_accessAsicTable:
+ .frame $sp,40,$31 # vars= 8, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,36($sp)
+ sw $17,32($sp)
+ sw $16,28($sp)
+ move $16,$4
+ move $17,$5
+ jal rtl865x_getAsicFun
+ addiu $4,$sp,16
+
+ sltu $2,$16,15
+ beq $2,$0,$L41
+ li $2,1 # 0x1
+
+ sll $16,$2,$16
+ andi $2,$16,0xe22
+ bne $2,$0,$L42
+ andi $2,$16,0x4000
+
+ bne $2,$0,$L44
+ andi $16,$16,0x8
+
+ bne $16,$0,$L43
+ li $2,1 # 0x1
+
+ j $L46
+ sw $2,0($17)
+
+$L44:
+ lw $2,16($sp)
+ andi $2,$2,0x20
+ beq $2,$0,$L45
+ li $2,1 # 0x1
+
+ j $L46
+ sw $2,0($17)
+
+$L45:
+ j $L46
+ sw $0,0($17)
+
+$L42:
+ lw $2,16($sp)
+ andi $2,$2,0x4
+ beq $2,$0,$L47
+ li $2,1 # 0x1
+
+ j $L46
+ sw $2,0($17)
+
+$L47:
+ j $L46
+ sw $0,0($17)
+
+$L43:
+ lw $2,16($sp)
+ andi $2,$2,0x2
+ beq $2,$0,$L48
+ li $2,1 # 0x1
+
+ j $L46
+ sw $2,0($17)
+
+$L48:
+ j $L46
+ sw $0,0($17)
+
+$L41:
+ sw $2,0($17)
+$L46:
+ move $2,$0
+ lw $31,36($sp)
+ lw $17,32($sp)
+ lw $16,28($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end rtl865x_accessAsicTable
+ .size rtl865x_accessAsicTable, .-rtl865x_accessAsicTable
+ .section .text._rtl865x_getForceAddMcastOpCnt,"ax",@progbits
+ .align 2
+ .globl _rtl865x_getForceAddMcastOpCnt
+ .set nomips16
+ .ent _rtl865x_getForceAddMcastOpCnt
+ .type _rtl865x_getForceAddMcastOpCnt, @function
+_rtl865x_getForceAddMcastOpCnt:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ lui $2,%hi(mcastForceAddOpCnt)
+ lw $2,%lo(mcastForceAddOpCnt)($2)
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end _rtl865x_getForceAddMcastOpCnt
+ .size _rtl865x_getForceAddMcastOpCnt, .-_rtl865x_getForceAddMcastOpCnt
+ .section .text._rtl8651_delAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_delAsicEntry
+ .set nomips16
+ .ent _rtl8651_delAsicEntry
+ .type _rtl8651_delAsicEntry, @function
+_rtl8651_delAsicEntry:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $3,-1149239296 # 0xbb800000
+ ori $3,$3,0x4d00
+$L54:
+ lw $2,0($3)
+ andi $2,$2,0x1
+ bne $2,$0,$L54
+ lui $2,%hi(_rtl8651_asicTableSize)
+
+ sll $3,$4,2
+ addiu $2,$2,%lo(_rtl8651_asicTableSize)
+ addu $2,$3,$2
+ lw $7,0($2)
+ beq $7,$0,$L55
+ move $2,$0
+
+ li $8,-1149239296 # 0xbb800000
+ ori $8,$8,0x4d20
+ sll $3,$2,2
+$L67:
+ addu $3,$3,$8
+ sw $0,0($3)
+ addiu $2,$2,1
+ sltu $3,$2,$7
+ bne $3,$0,$L67
+ sll $3,$2,2
+
+$L55:
+ sltu $2,$6,$5
+ bne $2,$0,$L57
+ nop
+
+ sll $4,$4,16
+ li $2,-1157627904 # 0xbb000000
+ addu $4,$4,$2
+ sll $2,$5,5
+ addu $4,$4,$2
+ li $7,-1149239296 # 0xbb800000
+ ori $9,$7,0x4d08
+ ori $3,$7,0x4d00
+ li $8,9 # 0x9
+ ori $7,$7,0x4d04
+$L61:
+ sw $4,0($9)
+ sw $8,0($3)
+$L58:
+ lw $2,0($3)
+ andi $2,$2,0x1
+ bne $2,$0,$L58
+ nop
+
+ lw $2,0($7)
+ andi $2,$2,0x1
+ beq $2,$0,$L59
+ addiu $5,$5,1
+
+ addiu $5,$5,-1
+ j $31
+ li $2,-1 # 0xffffffff
+
+$L59:
+ sltu $2,$6,$5
+ beq $2,$0,$L61
+ addiu $4,$4,32
+
+$L57:
+ j $31
+ move $2,$0
+
+ .set macro
+ .set reorder
+ .end _rtl8651_delAsicEntry
+ .size _rtl8651_delAsicEntry, .-_rtl8651_delAsicEntry
+ .section .rodata.str1.4
+ .align 2
+$LC1:
+ .ascii "\012Assert Fail: %s %d\000"
+ .align 2
+$LC2:
+ .ascii "drivers/net/rtl819x/rtl865x/../AsicDriver/rtl865x_asicBa"
+ .ascii "sic.c\000"
+ .section .text._rtl8651_readAsicEntryStopTLU,"ax",@progbits
+ .align 2
+ .globl _rtl8651_readAsicEntryStopTLU
+ .set nomips16
+ .ent _rtl8651_readAsicEntryStopTLU
+ .type _rtl8651_readAsicEntryStopTLU, @function
+_rtl8651_readAsicEntryStopTLU:
+ .frame $sp,40,$31 # vars= 8, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,36($sp)
+ sw $18,32($sp)
+ sw $17,28($sp)
+ sw $16,24($sp)
+ move $17,$4
+ move $18,$5
+ move $16,$6
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,16
+
+ lw $2,16($sp)
+ beq $2,$0,$L70
+ li $2,-1 # 0xffffffff
+
+ bne $16,$0,$L71
+ sll $3,$17,16
+
+ lui $4,%hi($LC1)
+ addiu $4,$4,%lo($LC1)
+ lui $5,%hi($LC2)
+ addiu $5,$5,%lo($LC2)
+ jal panic_printk
+ li $6,550 # 0x226
+
+$L72:
+ j $L72
+ nop
+
+$L71:
+ li $2,-1157627904 # 0xbb000000
+ addu $2,$3,$2
+ sll $18,$18,5
+ addu $18,$2,$18
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+ lw $2,%lo(RtkHomeGatewayChipNameID)($2)
+ li $3,2 # 0x2
+ bne $2,$3,$L73
+ li $3,3 # 0x3
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ bgtz $2,$L85
+ li $2,-1149239296 # 0xbb800000
+
+ j $L83
+ sll $3,$17,2
+
+$L73:
+ beq $2,$3,$L74
+ li $3,4 # 0x4
+
+ bne $2,$3,$L83
+ sll $3,$17,2
+
+$L74:
+ li $2,-1149239296 # 0xbb800000
+$L85:
+ ori $2,$2,0x4418
+ lw $4,0($2)
+ li $3,262144 # 0x40000
+ or $3,$4,$3
+ sw $3,0($2)
+ sll $3,$17,2
+$L83:
+ lui $2,%hi(_rtl8651_asicTableSize)
+ addiu $2,$2,%lo(_rtl8651_asicTableSize)
+ addu $2,$3,$2
+ lw $2,0($2)
+ beq $2,$0,$L76
+ move $2,$0
+
+ move $17,$3
+ lui $3,%hi(_rtl8651_asicTableSize)
+ addiu $3,$3,%lo(_rtl8651_asicTableSize)
+ addu $17,$17,$3
+ lw $4,0($17)
+$L77:
+ lw $3,0($18)
+ sw $3,0($16)
+ addiu $2,$2,1
+ addiu $18,$18,4
+ sltu $3,$2,$4
+ bne $3,$0,$L77
+ addiu $16,$16,4
+
+$L76:
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+ lw $2,%lo(RtkHomeGatewayChipNameID)($2)
+ li $3,2 # 0x2
+ bne $2,$3,$L78
+ nop
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ bgtz $2,$L79
+ nop
+
+ j $L84
+ move $2,$0
+
+$L78:
+ li $3,3 # 0x3
+ beq $2,$3,$L79
+ li $3,4 # 0x4
+
+ bne $2,$3,$L80
+ nop
+
+$L79:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4418
+ lw $4,0($2)
+ li $3,-327680 # 0xfffb0000
+ ori $3,$3,0xffff
+ and $3,$4,$3
+ sw $3,0($2)
+ j $L70
+ move $2,$0
+
+$L80:
+ move $2,$0
+$L70:
+$L84:
+ lw $31,36($sp)
+ lw $18,32($sp)
+ lw $17,28($sp)
+ lw $16,24($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end _rtl8651_readAsicEntryStopTLU
+ .size _rtl8651_readAsicEntryStopTLU, .-_rtl8651_readAsicEntryStopTLU
+ .section .text._rtl8651_readAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_readAsicEntry
+ .set nomips16
+ .ent _rtl8651_readAsicEntry
+ .type _rtl8651_readAsicEntry, @function
+_rtl8651_readAsicEntry:
+ .frame $sp,120,$31 # vars= 72, regs= 7/0, args= 16, gp= 0
+ .mask 0x803f0000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-120
+ sw $31,116($sp)
+ sw $21,112($sp)
+ sw $20,108($sp)
+ sw $19,104($sp)
+ sw $18,100($sp)
+ sw $17,96($sp)
+ sw $16,92($sp)
+ move $17,$4
+ move $18,$5
+ move $16,$6
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,16
+
+ lw $2,16($sp)
+ beq $2,$0,$L88
+ li $2,-1 # 0xffffffff
+
+ bne $16,$0,$L89
+ sll $3,$17,16
+
+ lui $4,%hi($LC1)
+ addiu $4,$4,%lo($LC1)
+ lui $5,%hi($LC2)
+ addiu $5,$5,%lo($LC2)
+ jal panic_printk
+ li $6,444 # 0x1bc
+
+$L90:
+ j $L90
+ nop
+
+$L89:
+ li $2,-1157627904 # 0xbb000000
+ addu $2,$3,$2
+ sll $18,$18,5
+ addu $18,$2,$18
+ li $3,-1149239296 # 0xbb800000
+ ori $3,$3,0x4d00
+$L91:
+ lw $2,0($3)
+ andi $2,$2,0x1
+ bne $2,$0,$L91
+ li $25,10 # 0xa
+
+ li $11,2 # 0x2
+ addiu $10,$sp,20
+ move $19,$10
+ move $12,$0
+ li $15,2 # 0x2
+ li $7,8 # 0x8
+ li $14,1 # 0x1
+ move $24,$10
+$L110:
+ move $2,$19
+ move $3,$12
+$L93:
+ beq $11,$3,$L92
+ nop
+
+ lw $4,0($18)
+ sw $4,0($2)
+ lw $4,4($18)
+ sw $4,4($2)
+ lw $4,8($18)
+ sw $4,8($2)
+ lw $4,12($18)
+ sw $4,12($2)
+ lw $4,16($18)
+ sw $4,16($2)
+ lw $4,20($18)
+ sw $4,20($2)
+ lw $4,24($18)
+ sw $4,24($2)
+ lw $4,28($18)
+ sw $4,28($2)
+ move $11,$3
+$L92:
+ addiu $3,$3,1
+ bne $3,$15,$L93
+ addiu $2,$2,32
+
+ move $21,$12
+ j $L94
+ move $8,$12
+
+$L96:
+ lw $6,0($3)
+ lw $5,0($2)
+ bne $6,$5,$L95
+ addiu $4,$4,1
+
+ addiu $3,$3,4
+ bne $4,$7,$L96
+ addiu $2,$2,4
+
+ addiu $8,$8,1
+ sltu $2,$8,2
+ beq $2,$0,$L97
+ addiu $9,$9,32
+
+$L99:
+ lw $2,0($9)
+ bne $13,$2,$L95
+ move $3,$20
+
+ sll $2,$8,5
+ addiu $2,$2,4
+ addu $2,$10,$2
+ j $L96
+ move $4,$14
+
+$L97:
+ addiu $21,$21,1
+ beq $21,$15,$L98
+ addiu $24,$24,32
+
+ move $8,$21
+$L94:
+ sltu $2,$8,2
+ beq $2,$0,$L97
+ sll $9,$8,5
+
+ lw $13,0($24)
+ addu $9,$10,$9
+ sll $20,$21,5
+ addiu $20,$20,4
+ j $L99
+ addu $20,$10,$20
+
+$L95:
+ sll $11,$11,5
+$L109:
+ addiu $3,$sp,20
+ sll $4,$17,2
+ lui $2,%hi(_rtl8651_asicTableSize)
+ addiu $2,$2,%lo(_rtl8651_asicTableSize)
+ addu $2,$4,$2
+ lw $2,0($2)
+ beq $2,$0,$L100
+ addu $3,$3,$11
+
+ move $2,$0
+ move $17,$4
+ lui $4,%hi(_rtl8651_asicTableSize)
+ addiu $4,$4,%lo(_rtl8651_asicTableSize)
+ addu $17,$17,$4
+ lw $5,0($17)
+$L101:
+ lw $4,0($3)
+ sw $4,0($16)
+ addiu $2,$2,1
+ addiu $3,$3,4
+ sltu $4,$2,$5
+ bne $4,$0,$L101
+ addiu $16,$16,4
+
+$L100:
+ move $2,$0
+$L88:
+ lw $31,116($sp)
+ lw $21,112($sp)
+ lw $20,108($sp)
+ lw $19,104($sp)
+ lw $18,100($sp)
+ lw $17,96($sp)
+ lw $16,92($sp)
+ j $31
+ addiu $sp,$sp,120
+
+$L98:
+ addiu $25,$25,-1
+ bne $25,$0,$L110
+ move $24,$10
+
+ j $L109
+ sll $11,$11,5
+
+ .set macro
+ .set reorder
+ .end _rtl8651_readAsicEntry
+ .size _rtl8651_readAsicEntry, .-_rtl8651_readAsicEntry
+ .section .text._rtl8651_asicTableAccessForward,"ax",@progbits
+ .align 2
+ .set nomips16
+ .ent _rtl8651_asicTableAccessForward
+ .type _rtl8651_asicTableAccessForward, @function
+_rtl8651_asicTableAccessForward:
+ .frame $sp,24,$31 # vars= 0, regs= 1/0, args= 16, gp= 0
+ .mask 0x80000000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-24
+ sw $31,20($sp)
+ bne $6,$0,$L112
+ li $3,-1149239296 # 0xbb800000
+
+ lui $4,%hi($LC1)
+ addiu $4,$4,%lo($LC1)
+ lui $5,%hi($LC2)
+ addiu $5,$5,%lo($LC2)
+ jal panic_printk
+ li $6,306 # 0x132
+
+$L113:
+ j $L113
+ nop
+
+$L112:
+ ori $3,$3,0x4d00
+$L117:
+ lw $2,0($3)
+ andi $2,$2,0x1
+ bne $2,$0,$L117
+ lui $2,%hi(_rtl8651_asicTableSize)
+
+ sll $3,$4,2
+ addiu $2,$2,%lo(_rtl8651_asicTableSize)
+ addu $2,$3,$2
+ lw $2,0($2)
+ beq $2,$0,$L114
+ move $2,$0
+
+ li $9,-1149239296 # 0xbb800000
+ ori $9,$9,0x4d20
+ move $7,$3
+ lui $3,%hi(_rtl8651_asicTableSize)
+ addiu $3,$3,%lo(_rtl8651_asicTableSize)
+ addu $3,$7,$3
+ lw $8,0($3)
+$L115:
+ sll $3,$2,2
+ addu $3,$3,$9
+ lw $7,0($6)
+ sw $7,0($3)
+ addiu $2,$2,1
+ sltu $3,$2,$8
+ bne $3,$0,$L115
+ addiu $6,$6,4
+
+$L114:
+ sll $4,$4,16
+ li $2,-1157627904 # 0xbb000000
+ addu $4,$4,$2
+ sll $5,$5,5
+ addu $5,$4,$5
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4d08
+ sw $5,0($2)
+ lw $31,20($sp)
+ j $31
+ addiu $sp,$sp,24
+
+ .set macro
+ .set reorder
+ .end _rtl8651_asicTableAccessForward
+ .size _rtl8651_asicTableAccessForward, .-_rtl8651_asicTableAccessForward
+ .section .text._rtl8651_forceAddAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_forceAddAsicEntry
+ .set nomips16
+ .ent _rtl8651_forceAddAsicEntry
+ .type _rtl8651_forceAddAsicEntry, @function
+_rtl8651_forceAddAsicEntry:
+ .frame $sp,40,$31 # vars= 8, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,36($sp)
+ sw $18,32($sp)
+ sw $17,28($sp)
+ sw $16,24($sp)
+ move $18,$4
+ move $16,$5
+ move $17,$6
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,16
+
+ lw $2,16($sp)
+ beq $2,$0,$L122
+ li $2,-1 # 0xffffffff
+
+ li $2,3 # 0x3
+ bne $18,$2,$L137
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lui $2,%hi(mcastForceAddOpCnt)
+ lw $3,%lo(mcastForceAddOpCnt)($2)
+ addiu $3,$3,1
+ sw $3,%lo(mcastForceAddOpCnt)($2)
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+$L137:
+ lw $2,%lo(RtkHomeGatewayChipNameID)($2)
+ li $3,2 # 0x2
+ bne $2,$3,$L124
+ li $3,3 # 0x3
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ bgtz $2,$L138
+ li $2,-1149239296 # 0xbb800000
+
+ j $L135
+ move $4,$18
+
+$L124:
+ beq $2,$3,$L125
+ li $3,4 # 0x4
+
+ bne $2,$3,$L135
+ move $4,$18
+
+$L125:
+ li $2,-1149239296 # 0xbb800000
+$L138:
+ ori $2,$2,0x4418
+ lw $4,0($2)
+ li $3,262144 # 0x40000
+ or $3,$4,$3
+ sw $3,0($2)
+ move $4,$2
+ li $3,524288 # 0x80000
+$L127:
+ lw $2,0($4)
+ and $2,$2,$3
+ beq $2,$0,$L127
+ nop
+
+ move $4,$18
+$L135:
+ move $5,$16
+ jal _rtl8651_asicTableAccessForward
+ move $6,$17
+
+ li $3,9 # 0x9
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4d00
+ sw $3,0($2)
+ move $3,$2
+$L128:
+ lw $2,0($3)
+ andi $2,$2,0x1
+ bne $2,$0,$L128
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+
+ lw $2,%lo(RtkHomeGatewayChipNameID)($2)
+ li $3,2 # 0x2
+ bne $2,$3,$L129
+ nop
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ bgtz $2,$L130
+ nop
+
+ j $L136
+ move $2,$0
+
+$L129:
+ li $3,3 # 0x3
+ beq $2,$3,$L130
+ li $3,4 # 0x4
+
+ bne $2,$3,$L131
+ nop
+
+$L130:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4418
+ lw $4,0($2)
+ li $3,-327680 # 0xfffb0000
+ ori $3,$3,0xffff
+ and $3,$4,$3
+ sw $3,0($2)
+ j $L122
+ move $2,$0
+
+$L131:
+ move $2,$0
+$L122:
+$L136:
+ lw $31,36($sp)
+ lw $18,32($sp)
+ lw $17,28($sp)
+ lw $16,24($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end _rtl8651_forceAddAsicEntry
+ .size _rtl8651_forceAddAsicEntry, .-_rtl8651_forceAddAsicEntry
+ .section .text._rtl8651_addAsicEntry,"ax",@progbits
+ .align 2
+ .globl _rtl8651_addAsicEntry
+ .set nomips16
+ .ent _rtl8651_addAsicEntry
+ .type _rtl8651_addAsicEntry, @function
+_rtl8651_addAsicEntry:
+ .frame $sp,40,$31 # vars= 8, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-40
+ sw $31,36($sp)
+ sw $18,32($sp)
+ sw $17,28($sp)
+ sw $16,24($sp)
+ move $18,$4
+ move $16,$5
+ move $17,$6
+ jal rtl865x_accessAsicTable
+ addiu $5,$sp,16
+
+ lw $2,16($sp)
+ beq $2,$0,$L158
+ li $2,-1 # 0xffffffff
+
+ move $4,$18
+ move $5,$16
+ jal _rtl8651_asicTableAccessForward
+ move $6,$17
+
+ lui $2,%hi(RtkHomeGatewayChipNameID)
+ lw $4,%lo(RtkHomeGatewayChipNameID)($2)
+ li $2,2 # 0x2
+ bne $4,$2,$L141
+ li $2,3 # 0x3
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ bgtz $2,$L159
+ li $2,-1149239296 # 0xbb800000
+
+ j $L161
+ li $3,3 # 0x3
+
+$L141:
+ beq $4,$2,$L142
+ li $2,4 # 0x4
+
+ bne $4,$2,$L156
+ li $3,3 # 0x3
+
+$L142:
+ li $2,-1149239296 # 0xbb800000
+$L159:
+ ori $2,$2,0x4418
+ lw $5,0($2)
+ li $3,262144 # 0x40000
+ or $3,$5,$3
+ sw $3,0($2)
+ move $5,$2
+ li $3,524288 # 0x80000
+$L144:
+ lw $2,0($5)
+ and $2,$2,$3
+ beq $2,$0,$L144
+ nop
+
+ li $3,3 # 0x3
+$L156:
+ li $2,-1149239296 # 0xbb800000
+$L161:
+ ori $2,$2,0x4d00
+ sw $3,0($2)
+ move $3,$2
+$L145:
+ lw $2,0($3)
+ andi $2,$2,0x1
+ bne $2,$0,$L145
+ li $2,-1149239296 # 0xbb800000
+
+ ori $2,$2,0x4d04
+ lw $2,0($2)
+ andi $2,$2,0x1
+ beq $2,$0,$L146
+ li $2,2 # 0x2
+
+ bne $4,$2,$L147
+ li $2,3 # 0x3
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ blez $2,$L140
+ nop
+
+ j $L157
+ li $2,-1149239296 # 0xbb800000
+
+$L147:
+ beq $4,$2,$L157
+ li $2,-1149239296 # 0xbb800000
+
+ li $2,4 # 0x4
+ bne $4,$2,$L140
+ nop
+
+ li $2,-1149239296 # 0xbb800000
+$L157:
+ ori $2,$2,0x4418
+ lw $4,0($2)
+ li $3,-327680 # 0xfffb0000
+ ori $3,$3,0xffff
+ and $3,$4,$3
+ sw $3,0($2)
+ j $L149
+ li $2,-1 # 0xffffffff
+
+$L146:
+ bne $4,$2,$L150
+ li $2,3 # 0x3
+
+ lui $2,%hi(RtkHomeGatewayChipRevisionID)
+ lw $2,%lo(RtkHomeGatewayChipRevisionID)($2)
+ bgtz $2,$L151
+ nop
+
+ j $L158
+ move $2,$0
+
+$L150:
+ beq $4,$2,$L160
+ li $2,-1149239296 # 0xbb800000
+
+ li $2,4 # 0x4
+ bne $4,$2,$L152
+ nop
+
+$L151:
+ li $2,-1149239296 # 0xbb800000
+$L160:
+ ori $2,$2,0x4418
+ lw $4,0($2)
+ li $3,-327680 # 0xfffb0000
+ ori $3,$3,0xffff
+ and $3,$4,$3
+ sw $3,0($2)
+ j $L149
+ move $2,$0
+
+$L140:
+ j $L149
+ li $2,-1 # 0xffffffff
+
+$L152:
+ move $2,$0
+$L149:
+$L158:
+ lw $31,36($sp)
+ lw $18,32($sp)
+ lw $17,28($sp)
+ lw $16,24($sp)
+ j $31
+ addiu $sp,$sp,40
+
+ .set macro
+ .set reorder
+ .end _rtl8651_addAsicEntry
+ .size _rtl8651_addAsicEntry, .-_rtl8651_addAsicEntry
+ .rdata
+ .align 2
+ .type _rtl8651_asicTableSize, @object
+ .size _rtl8651_asicTableSize, 64
+_rtl8651_asicTableSize:
+ .word 2
+ .word 1
+ .word 2
+ .word 3
+ .word 5
+ .word 3
+ .word 3
+ .word 3
+ .word 4
+ .word 3
+ .word 3
+ .word 1
+ .word 8
+ .word 1
+ .word 3
+ .word 1
+ .local mcastForceAddOpCnt
+ .comm mcastForceAddOpCnt,4,4
+ .section .dram-fwd,"aw",@progbits
+ .align 2
+ .type fun_enable, @object
+ .size fun_enable, 4
+fun_enable:
+ .space 4
+ .globl RtkHomeGatewayChipName
+ .section .bss,"aw",@nobits
+ .align 2
+ .type RtkHomeGatewayChipName, @object
+ .size RtkHomeGatewayChipName, 16
+RtkHomeGatewayChipName:
+ .space 16
+ .globl RtkHomeGatewayChipNameID
+ .align 2
+ .type RtkHomeGatewayChipNameID, @object
+ .size RtkHomeGatewayChipNameID, 4
+RtkHomeGatewayChipNameID:
+ .space 4
+ .globl RtkHomeGatewayChipRevisionID
+ .align 2
+ .type RtkHomeGatewayChipRevisionID, @object
+ .size RtkHomeGatewayChipRevisionID, 4
+RtkHomeGatewayChipRevisionID:
+ .space 4
+ .ident "GCC: (GNU) 4.4.5-1.5.5p4"
diff --git a/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicL3.S b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicL3.S
new file mode 100644
index 000000000..a8627841b
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/rtl819x/AsicDriver/9xD/rtl865x_asicL3.S
@@ -0,0 +1,2346 @@
+ .file 1 "rtl865x_asicL3.c"
+ .section .mdebug.abi32
+ .previous
+ .gnu_attribute 4, 3
+#APP
+ .macro _ssnop; sll $0, $0, 1; .endm
+ .macro _ehb; sll $0, $0, 3; .endm
+ .macro mtc0_tlbw_hazard; nop; nop; .endm
+ .macro tlbw_use_hazard; nop; nop; nop; .endm
+ .macro tlb_probe_hazard; nop; nop; nop; .endm
+ .macro irq_enable_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro irq_disable_hazard; nop; nop; nop; .endm
+ .macro back_to_back_c0_hazard; _ssnop; _ssnop; _ssnop;; .endm
+ .macro raw_local_irq_enable
+ .set push
+ .set reorder
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1e
+ mtc0 $1,$12
+ irq_enable_hazard
+ .set pop
+ .endm
+ .macro raw_local_irq_disable
+ .set push
+ .set noat
+ mfc0 $1,$12
+ ori $1,0x1f
+ xori $1,0x1f
+ .set noreorder
+ mtc0 $1,$12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_save_flags flags
+ .set push
+ .set reorder
+ mfc0 \flags, $12
+ .set pop
+ .endm
+
+ .macro raw_local_irq_save result
+ .set push
+ .set reorder
+ .set noat
+ mfc0 \result, $12
+ ori $1, \result, 0x1f
+ xori $1, 0x1f
+ .set noreorder
+ mtc0 $1, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+ .macro raw_local_irq_restore flags
+ .set push
+ .set noreorder
+ .set noat
+ mfc0 $1, $12
+ andi \flags, 1
+ ori $1, 0x1f
+ xori $1, 0x1f
+ or \flags, $1
+ mtc0 \flags, $12
+ irq_disable_hazard
+ .set pop
+ .endm
+
+#NO_APP
+ .section .text.rtl8651_ipMulticastTableIndex,"ax",@progbits
+ .align 2
+ .globl rtl8651_ipMulticastTableIndex
+ .set nomips16
+ .ent rtl8651_ipMulticastTableIndex
+ .type rtl8651_ipMulticastTableIndex, @function
+rtl8651_ipMulticastTableIndex:
+ .frame $sp,288,$31 # vars= 288, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-288
+ addiu $11,$sp,256
+ addiu $12,$sp,284
+ move $2,$11
+$L2:
+ sw $0,0($2)
+ addiu $2,$2,4
+ bne $2,$12,$L2
+ addiu $7,$sp,128
+
+ move $6,$sp
+ move $2,$0
+ li $3,1 # 0x1
+ li $10,32 # 0x20
+$L7:
+ sll $8,$3,$2
+ and $9,$8,$4
+ move $13,$0
+ movn $13,$3,$9
+ sw $13,0($6)
+ and $8,$8,$5
+ move $9,$0
+ movn $9,$3,$8
+ sw $9,0($7)
+ addiu $2,$2,1
+ addiu $7,$7,4
+ bne $2,$10,$L7
+ addiu $6,$6,4
+
+ lw $2,0($sp)
+ lw $3,28($sp)
+ xor $2,$3,$2
+ lw $3,56($sp)
+ xor $2,$2,$3
+ lw $3,84($sp)
+ xor $2,$2,$3
+ lw $3,112($sp)
+ xor $2,$2,$3
+ lw $3,132($sp)
+ xor $2,$2,$3
+ lw $3,160($sp)
+ xor $2,$2,$3
+ lw $3,188($sp)
+ xor $2,$2,$3
+ lw $3,216($sp)
+ xor $2,$2,$3
+ lw $3,244($sp)
+ xor $2,$2,$3
+ sw $2,256($sp)
+ lw $2,4($sp)
+ lw $3,32($sp)
+ xor $2,$3,$2
+ lw $3,60($sp)
+ xor $2,$2,$3
+ lw $3,88($sp)
+ xor $2,$2,$3
+ lw $3,116($sp)
+ xor $2,$2,$3
+ lw $3,136($sp)
+ xor $2,$2,$3
+ lw $3,164($sp)
+ xor $2,$2,$3
+ lw $3,192($sp)
+ xor $2,$2,$3
+ lw $3,220($sp)
+ xor $2,$2,$3
+ lw $3,248($sp)
+ xor $2,$2,$3
+ sw $2,260($sp)
+ lw $2,8($sp)
+ lw $3,36($sp)
+ xor $2,$3,$2
+ lw $3,64($sp)
+ xor $2,$2,$3
+ lw $3,92($sp)
+ xor $2,$2,$3
+ lw $3,120($sp)
+ xor $2,$2,$3
+ lw $3,140($sp)
+ xor $2,$2,$3
+ lw $3,168($sp)
+ xor $2,$2,$3
+ lw $3,196($sp)
+ xor $2,$2,$3
+ lw $3,224($sp)
+ xor $2,$2,$3
+ lw $3,252($sp)
+ xor $2,$2,$3
+ sw $2,264($sp)
+ lw $2,12($sp)
+ lw $3,40($sp)
+ xor $2,$3,$2
+ lw $3,68($sp)
+ xor $2,$2,$3
+ lw $3,96($sp)
+ xor $2,$2,$3
+ lw $3,124($sp)
+ xor $2,$2,$3
+ lw $3,144($sp)
+ xor $2,$2,$3
+ lw $3,172($sp)
+ xor $2,$2,$3
+ lw $3,200($sp)
+ xor $2,$2,$3
+ lw $3,228($sp)
+ xor $2,$2,$3
+ sw $2,268($sp)
+ lw $2,16($sp)
+ lw $3,44($sp)
+ xor $2,$3,$2
+ lw $3,72($sp)
+ xor $2,$2,$3
+ lw $3,100($sp)
+ xor $2,$2,$3
+ lw $3,148($sp)
+ xor $2,$2,$3
+ lw $3,176($sp)
+ xor $2,$2,$3
+ lw $3,204($sp)
+ xor $2,$2,$3
+ lw $3,232($sp)
+ xor $2,$2,$3
+ sw $2,272($sp)
+ lw $2,20($sp)
+ lw $3,48($sp)
+ xor $2,$3,$2
+ lw $3,76($sp)
+ xor $2,$2,$3
+ lw $3,104($sp)
+ xor $2,$2,$3
+ lw $3,152($sp)
+ xor $2,$2,$3
+ lw $3,180($sp)
+ xor $2,$2,$3
+ lw $3,208($sp)
+ xor $2,$2,$3
+ lw $3,236($sp)
+ xor $2,$2,$3
+ sw $2,276($sp)
+ lw $2,24($sp)
+ lw $3,52($sp)
+ xor $2,$3,$2
+ lw $3,80($sp)
+ xor $2,$2,$3
+ lw $3,108($sp)
+ xor $2,$2,$3
+ lw $3,128($sp)
+ xor $2,$2,$3
+ lw $3,156($sp)
+ xor $2,$2,$3
+ lw $3,184($sp)
+ xor $2,$2,$3
+ lw $3,212($sp)
+ xor $2,$2,$3
+ lw $3,240($sp)
+ xor $2,$2,$3
+ sw $2,280($sp)
+ move $2,$11
+$L8:
+ lw $3,0($2)
+ andi $3,$3,0x1
+ sw $3,0($2)
+ addiu $2,$2,4
+ bne $12,$2,$L8
+ move $3,$0
+
+ move $2,$0
+ li $5,7 # 0x7
+$L9:
+ lw $4,0($11)
+ sll $4,$4,$3
+ addu $2,$2,$4
+ addiu $3,$3,1
+ bne $3,$5,$L9
+ addiu $11,$11,4
+
+ addiu $sp,$sp,288
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end rtl8651_ipMulticastTableIndex
+ .size rtl8651_ipMulticastTableIndex, .-rtl8651_ipMulticastTableIndex
+ .section .text.rtl8651_setAsicMulticastEnable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicMulticastEnable
+ .set nomips16
+ .ent rtl8651_setAsicMulticastEnable
+ .type rtl8651_setAsicMulticastEnable, @function
+rtl8651_setAsicMulticastEnable:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $2,1 # 0x1
+ bne $4,$2,$L16
+ nop
+
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4428
+ lw $3,0($2)
+ ori $3,$3,0x8
+ sw $3,0($2)
+ j $31
+ move $2,$0
+
+$L16:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4428
+ lw $4,0($2)
+ li $3,-9 # 0xfffffff7
+ and $3,$4,$3
+ sw $3,0($2)
+ move $2,$0
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicMulticastEnable
+ .size rtl8651_setAsicMulticastEnable, .-rtl8651_setAsicMulticastEnable
+ .section .text.rtl8651_getAsicMulticastEnable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicMulticastEnable
+ .set nomips16
+ .ent rtl8651_getAsicMulticastEnable
+ .type rtl8651_getAsicMulticastEnable, @function
+rtl8651_getAsicMulticastEnable:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ bne $4,$0,$L21
+ nop
+
+ j $31
+ li $2,-1 # 0xffffffff
+
+$L21:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4428
+ lw $2,0($2)
+ srl $2,$2,3
+ andi $2,$2,0x1
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicMulticastEnable
+ .size rtl8651_getAsicMulticastEnable, .-rtl8651_getAsicMulticastEnable
+ .section .text.rtl8651_setAsicMulticastPortInternal,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicMulticastPortInternal
+ .set nomips16
+ .ent rtl8651_setAsicMulticastPortInternal
+ .type rtl8651_setAsicMulticastPortInternal, @function
+rtl8651_setAsicMulticastPortInternal:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ sll $5,$5,24
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ addiu $2,$2,6
+ sltu $2,$4,$2
+ bne $2,$0,$L25
+ sra $5,$5,24
+
+ j $31
+ li $2,-1 # 0xffffffff
+
+$L25:
+ li $2,1 # 0x1
+ bne $5,$2,$L27
+ nop
+
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4418
+ lw $3,0($2)
+ li $5,1 # 0x1
+ sll $4,$5,$4
+ andi $4,$4,0x1ff
+ sll $4,$4,5
+ or $4,$4,$3
+ sw $4,0($2)
+ j $31
+ move $2,$0
+
+$L27:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4418
+ lw $3,0($2)
+ li $5,1 # 0x1
+ sll $4,$5,$4
+ andi $4,$4,0x1ff
+ sll $4,$4,5
+ nor $4,$0,$4
+ and $4,$4,$3
+ sw $4,0($2)
+ j $31
+ move $2,$0
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicMulticastPortInternal
+ .size rtl8651_setAsicMulticastPortInternal, .-rtl8651_setAsicMulticastPortInternal
+ .section .text.rtl8651_getAsicMulticastPortInternal,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicMulticastPortInternal
+ .set nomips16
+ .ent rtl8651_getAsicMulticastPortInternal
+ .type rtl8651_getAsicMulticastPortInternal, @function
+rtl8651_getAsicMulticastPortInternal:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ beq $5,$0,$L30
+ nop
+
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ addiu $2,$2,6
+ sltu $2,$4,$2
+ beq $2,$0,$L30
+ nop
+
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4418
+ lw $2,0($2)
+ li $3,1 # 0x1
+ sll $4,$3,$4
+ andi $4,$4,0x1ff
+ sll $4,$4,5
+ and $4,$4,$2
+ beq $4,$0,$L31
+ nop
+
+ li $2,1 # 0x1
+ sb $2,0($5)
+ j $31
+ move $2,$0
+
+$L31:
+ sb $0,0($5)
+ j $31
+ move $2,$0
+
+$L30:
+ j $31
+ li $2,-1 # 0xffffffff
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicMulticastPortInternal
+ .size rtl8651_getAsicMulticastPortInternal, .-rtl8651_getAsicMulticastPortInternal
+ .section .text.rtl8651_setAsicMulticastMTU,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicMulticastMTU
+ .set nomips16
+ .ent rtl8651_setAsicMulticastMTU
+ .type rtl8651_setAsicMulticastMTU, @function
+rtl8651_setAsicMulticastMTU:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $2,-16384 # 0xffffc000
+ and $2,$4,$2
+ beq $2,$0,$L35
+ nop
+
+ j $31
+ li $2,-1 # 0xffffffff
+
+$L35:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x440c
+ lw $5,0($2)
+ andi $4,$4,0x3fff
+ li $3,-16384 # 0xffffc000
+ and $3,$5,$3
+ or $4,$4,$3
+ sw $4,0($2)
+ j $31
+ move $2,$0
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicMulticastMTU
+ .size rtl8651_setAsicMulticastMTU, .-rtl8651_setAsicMulticastMTU
+ .section .text.rtl8651_getAsicMulticastMTU,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicMulticastMTU
+ .set nomips16
+ .ent rtl8651_getAsicMulticastMTU
+ .type rtl8651_getAsicMulticastMTU, @function
+rtl8651_getAsicMulticastMTU:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ bne $4,$0,$L39
+ nop
+
+ j $31
+ li $2,-1 # 0xffffffff
+
+$L39:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x440c
+ lw $2,0($2)
+ andi $2,$2,0x3fff
+ sw $2,0($4)
+ j $31
+ move $2,$0
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicMulticastMTU
+ .size rtl8651_getAsicMulticastMTU, .-rtl8651_getAsicMulticastMTU
+ .section .text.rtl865x_setAsicMulticastAging,"ax",@progbits
+ .align 2
+ .globl rtl865x_setAsicMulticastAging
+ .set nomips16
+ .ent rtl865x_setAsicMulticastAging
+ .type rtl865x_setAsicMulticastAging, @function
+rtl865x_setAsicMulticastAging:
+ .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ li $2,1 # 0x1
+ bne $4,$2,$L43
+ nop
+
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4400
+ lw $4,0($2)
+ li $3,-9 # 0xfffffff7
+ and $3,$4,$3
+ sw $3,0($2)
+ j $31
+ move $2,$0
+
+$L43:
+ li $2,-1149239296 # 0xbb800000
+ ori $2,$2,0x4400
+ lw $3,0($2)
+ ori $3,$3,0x8
+ sw $3,0($2)
+ move $2,$0
+ j $31
+ nop
+
+ .set macro
+ .set reorder
+ .end rtl865x_setAsicMulticastAging
+ .size rtl865x_setAsicMulticastAging, .-rtl865x_setAsicMulticastAging
+ .section .text.rtl8651_getAsicIpMulticastTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicIpMulticastTable
+ .set nomips16
+ .ent rtl8651_getAsicIpMulticastTable
+ .type rtl8651_getAsicIpMulticastTable, @function
+rtl8651_getAsicIpMulticastTable:
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $2,$4
+ beq $5,$0,$L48
+ move $16,$5
+
+ li $4,3 # 0x3
+ move $5,$2
+ jal _rtl8651_readAsicEntryStopTLU
+ addiu $6,$sp,16
+
+ lw $2,16($sp)
+ sw $2,0($16)
+ lw $2,24($sp)
+ andi $2,$2,0x2000
+ beq $2,$0,$L49
+ li $2,268369920 # 0xfff0000
+
+ ori $2,$2,0xffff
+ lw $3,20($sp)
+ and $2,$3,$2
+ li $3,-536870912 # 0xe0000000
+ or $2,$2,$3
+ j $L50
+ sw $2,4($16)
+
+$L49:
+ ori $2,$2,0xffff
+ lw $3,20($sp)
+ and $2,$3,$2
+ bne $2,$0,$L51
+ li $2,268369920 # 0xfff0000
+
+ ori $2,$2,0xffff
+ and $2,$3,$2
+ j $L50
+ sw $2,4($16)
+
+$L51:
+ ori $2,$2,0xffff
+ lw $3,20($sp)
+ and $3,$3,$2
+ li $2,-536870912 # 0xe0000000
+ or $2,$3,$2
+ sw $2,4($16)
+$L50:
+ sh $0,8($16)
+ lw $2,20($sp)
+ srl $2,$2,28
+ sh $2,10($16)
+ lw $2,24($sp)
+ andi $3,$2,0x1ff
+ sw $3,12($16)
+ srl $3,$2,9
+ andi $3,$3,0xf
+ sh $3,20($16)
+ srl $3,$2,15
+ andi $3,$3,0x7
+ sll $4,$3,2
+ addu $3,$4,$3
+ sh $3,16($16)
+ srl $3,$2,14
+ andi $3,$3,0x1
+ andi $2,$2,0x2000
+ beq $2,$0,$L48
+ sh $3,18($16)
+
+ j $L52
+ move $2,$0
+
+$L48:
+ li $2,-1 # 0xffffffff
+$L52:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicIpMulticastTable
+ .size rtl8651_getAsicIpMulticastTable, .-rtl8651_getAsicIpMulticastTable
+ .section .text.rtl8651_getAsicArp,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicArp
+ .set nomips16
+ .ent rtl8651_getAsicArp
+ .type rtl8651_getAsicArp, @function
+rtl8651_getAsicArp:
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $2,$4
+ sltu $3,$4,512
+ beq $3,$0,$L55
+ move $16,$5
+
+ beq $5,$0,$L55
+ li $4,1 # 0x1
+
+ move $5,$2
+ jal _rtl8651_readAsicEntryStopTLU
+ addiu $6,$sp,16
+
+ lw $2,16($sp)
+ andi $2,$2,0x1
+ beq $2,$0,$L55
+ nop
+
+ lw $2,16($sp)
+ srl $3,$2,1
+ andi $3,$3,0x3ff
+ sra $4,$3,2
+ sw $4,0($16)
+ andi $3,$3,0x3
+ sw $3,4($16)
+ srl $2,$2,11
+ andi $2,$2,0x1f
+ sw $2,8($16)
+ j $L56
+ move $2,$0
+
+$L55:
+ li $2,-1 # 0xffffffff
+$L56:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicArp
+ .size rtl8651_getAsicArp, .-rtl8651_getAsicArp
+ .section .text.rtl8651_delAsicIpMulticastTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicIpMulticastTable
+ .set nomips16
+ .ent rtl8651_delAsicIpMulticastTable
+ .type rtl8651_delAsicIpMulticastTable, @function
+rtl8651_delAsicIpMulticastTable:
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $17,56($sp)
+ sw $16,52($sp)
+ move $17,$4
+ addiu $16,$sp,16
+ move $4,$16
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ li $4,3 # 0x3
+ move $5,$17
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$16
+
+ lw $31,60($sp)
+ lw $17,56($sp)
+ lw $16,52($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicIpMulticastTable
+ .size rtl8651_delAsicIpMulticastTable, .-rtl8651_delAsicIpMulticastTable
+ .section .text.rtl8651_setAsicIpMulticastTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicIpMulticastTable
+ .set nomips16
+ .ent rtl8651_setAsicIpMulticastTable
+ .type rtl8651_setAsicIpMulticastTable, @function
+rtl8651_setAsicIpMulticastTable:
+ .frame $sp,64,$31 # vars= 32, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $18,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ lw $3,4($4)
+ srl $3,$3,28
+ li $2,14 # 0xe
+ bne $3,$2,$L61
+ move $16,$4
+
+ lhu $3,10($4)
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ addiu $2,$2,6
+ slt $2,$3,$2
+ beq $2,$0,$L61
+ addiu $17,$sp,16
+
+ move $4,$17
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $4,0($16)
+ sw $4,16($sp)
+ lw $5,4($16)
+ li $18,268369920 # 0xfff0000
+ ori $18,$18,0xffff
+ and $3,$5,$18
+ li $2,-268435456 # 0xf0000000
+ lw $6,20($sp)
+ and $2,$6,$2
+ or $2,$2,$3
+ jal rtl8651_ipMulticastTableIndex
+ sw $2,20($sp)
+
+ lbu $3,11($16)
+ sll $3,$3,28
+ lw $4,20($sp)
+ and $18,$4,$18
+ or $18,$18,$3
+ sw $18,20($sp)
+ lhu $3,14($16)
+ andi $3,$3,0x1ff
+ li $4,-512 # 0xfffffe00
+ lw $5,24($sp)
+ and $5,$5,$4
+ or $5,$5,$3
+ li $3,-16385 # 0xffffbfff
+ and $5,$5,$3
+ ori $5,$5,0x2000
+ lbu $3,21($16)
+ andi $3,$3,0xf
+ sll $3,$3,9
+ li $4,-7681 # 0xffffe1ff
+ and $4,$5,$4
+ or $4,$4,$3
+ li $3,196608 # 0x30000
+ ori $3,$3,0x8000
+ or $3,$4,$3
+ sw $3,24($sp)
+ li $4,3 # 0x3
+ move $5,$2
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$17
+
+ j $L62
+ nop
+
+$L61:
+ li $2,-1 # 0xffffffff
+$L62:
+ lw $31,60($sp)
+ lw $18,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicIpMulticastTable
+ .size rtl8651_setAsicIpMulticastTable, .-rtl8651_setAsicIpMulticastTable
+ .section .text.rtl8651_delAsicArp,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicArp
+ .set nomips16
+ .ent rtl8651_delAsicArp
+ .type rtl8651_delAsicArp, @function
+rtl8651_delAsicArp:
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $17,56($sp)
+ sw $16,52($sp)
+ sltu $2,$4,512
+ bne $2,$0,$L65
+ move $16,$4
+
+ j $L66
+ li $2,-1 # 0xffffffff
+
+$L65:
+ addiu $17,$sp,16
+ move $4,$17
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ li $2,-2 # 0xfffffffe
+ lw $3,16($sp)
+ and $2,$3,$2
+ sw $2,16($sp)
+ li $4,1 # 0x1
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$17
+
+$L66:
+ lw $31,60($sp)
+ lw $17,56($sp)
+ lw $16,52($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicArp
+ .size rtl8651_delAsicArp, .-rtl8651_delAsicArp
+ .section .text.rtl8651_setAsicArp,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicArp
+ .set nomips16
+ .ent rtl8651_setAsicArp
+ .type rtl8651_setAsicArp, @function
+rtl8651_setAsicArp:
+ .frame $sp,64,$31 # vars= 32, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $18,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,512
+ beq $2,$0,$L69
+ move $17,$5
+
+ beq $5,$0,$L69
+ addiu $18,$sp,16
+
+ move $4,$18
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lhu $3,6($17)
+ lhu $2,2($17)
+ andi $3,$3,0x3
+ sll $2,$2,2
+ or $2,$3,$2
+ andi $2,$2,0x3ff
+ sll $2,$2,1
+ li $3,-2047 # 0xfffff801
+ lw $4,16($sp)
+ and $4,$4,$3
+ or $4,$4,$2
+ ori $4,$4,0x1
+ lbu $3,11($17)
+ andi $3,$3,0x1f
+ sll $3,$3,11
+ li $2,-65536 # 0xffff0000
+ ori $2,$2,0x7ff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,16($sp)
+ li $4,1 # 0x1
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$18
+
+ j $L70
+ nop
+
+$L69:
+ li $2,-1 # 0xffffffff
+$L70:
+ lw $31,60($sp)
+ lw $18,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicArp
+ .size rtl8651_setAsicArp, .-rtl8651_setAsicArp
+ .section .text.rtl8651_delAsicRouting,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicRouting
+ .set nomips16
+ .ent rtl8651_delAsicRouting
+ .type rtl8651_delAsicRouting, @function
+rtl8651_delAsicRouting:
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $17,56($sp)
+ sw $16,52($sp)
+ sltu $2,$4,8
+ bne $2,$0,$L73
+ move $16,$4
+
+ j $L74
+ li $2,-1 # 0xffffffff
+
+$L73:
+ addiu $17,$sp,16
+ move $4,$17
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ li $2,-33 # 0xffffffdf
+ lw $3,20($sp)
+ and $2,$3,$2
+ sw $2,20($sp)
+ li $4,2 # 0x2
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$17
+
+$L74:
+ lw $31,60($sp)
+ lw $17,56($sp)
+ lw $16,52($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicRouting
+ .size rtl8651_delAsicRouting, .-rtl8651_delAsicRouting
+ .section .text.rtl8651_setAsicRouting,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicRouting
+ .set nomips16
+ .ent rtl8651_setAsicRouting
+ .type rtl8651_setAsicRouting, @function
+rtl8651_setAsicRouting:
+ .frame $sp,64,$31 # vars= 32, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $18,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,8
+ beq $2,$0,$L77
+ move $17,$5
+
+ beq $5,$0,$L100
+ li $2,-1 # 0xffffffff
+
+ lw $4,4($5)
+ bne $4,$0,$L78
+ andi $2,$4,0x1
+
+ j $L79
+ move $18,$0
+
+$L78:
+ beq $2,$0,$L80
+ li $5,1 # 0x1
+
+ j $L81
+ move $2,$0
+
+$L80:
+ li $2,1 # 0x1
+ li $6,32 # 0x20
+ sll $3,$5,$2
+$L102:
+ and $3,$3,$4
+ bne $3,$0,$L101
+ li $18,31 # 0x1f
+
+ addiu $2,$2,1
+ bne $2,$6,$L102
+ sll $3,$5,$2
+
+$L81:
+ li $18,31 # 0x1f
+$L101:
+ subu $18,$18,$2
+$L79:
+ addiu $4,$sp,16
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $2,0($17)
+ sw $2,16($sp)
+ lw $2,8($17)
+ sltu $2,$2,7
+ beq $2,$0,$L100
+ li $2,-1 # 0xffffffff
+
+ lw $3,8($17)
+ sll $3,$3,2
+ lui $2,%hi($L88)
+ addiu $2,$2,%lo($L88)
+ addu $2,$2,$3
+ lw $2,0($2)
+ j $2
+ nop
+
+ .rdata
+ .align 2
+ .align 2
+$L88:
+ .word $L83
+ .word $L84
+ .word $L85
+ .word $L77
+ .word $L86
+ .word $L87
+ .word $L86
+ .section .text.rtl8651_setAsicRouting
+$L83:
+ lbu $2,39($17)
+ andi $2,$2,0x7
+ sll $2,$2,24
+ li $3,-117506048 # 0xf8ff0000
+ ori $3,$3,0xffff
+ lw $5,20($sp)
+ and $5,$5,$3
+ or $5,$5,$2
+ lhu $3,30($17)
+ sll $3,$3,2
+ lhu $2,34($17)
+ or $2,$3,$2
+ andi $2,$2,0x3ff
+ sll $2,$2,14
+ li $3,-16777216 # 0xff000000
+ ori $3,$3,0x3fff
+ and $5,$5,$3
+ or $5,$5,$2
+ andi $18,$18,0x1f
+ li $2,-32 # 0xffffffe0
+ and $5,$5,$2
+ or $5,$5,$18
+ lbu $2,15($17)
+ andi $2,$2,0x7
+ sll $2,$2,11
+ li $3,-14337 # 0xffffc7ff
+ and $5,$5,$3
+ or $5,$5,$2
+ lw $2,60($17)
+ srl $3,$2,31
+ sll $3,$3,9
+ li $4,-513 # 0xfffffdff
+ and $4,$5,$4
+ or $4,$4,$3
+ srl $2,$2,20
+ andi $2,$2,0x400
+ li $3,-1025 # 0xfffffbff
+ and $4,$4,$3
+ or $4,$4,$2
+ lbu $3,11($17)
+ andi $3,$3,0x7
+ sll $3,$3,6
+ li $2,-449 # 0xfffffe3f
+ and $2,$4,$2
+ or $2,$2,$3
+ ori $2,$2,0x20
+ j $L89
+ sw $2,20($sp)
+
+$L84:
+ lhu $3,30($17)
+ sll $3,$3,2
+ lhu $2,34($17)
+ or $2,$3,$2
+ andi $2,$2,0x3ff
+ sll $2,$2,14
+ li $3,-16777216 # 0xff000000
+ ori $3,$3,0x3fff
+ lw $5,20($sp)
+ and $5,$5,$3
+ or $5,$5,$2
+ andi $18,$18,0x1f
+ li $2,-32 # 0xffffffe0
+ and $5,$5,$2
+ or $5,$5,$18
+ lbu $2,15($17)
+ andi $2,$2,0x7
+ sll $2,$2,11
+ li $3,-14337 # 0xffffc7ff
+ and $5,$5,$3
+ or $5,$5,$2
+ lw $2,60($17)
+ srl $3,$2,31
+ sll $3,$3,9
+ li $4,-513 # 0xfffffdff
+ and $4,$5,$4
+ or $4,$4,$3
+ srl $2,$2,20
+ andi $2,$2,0x400
+ li $3,-1025 # 0xfffffbff
+ and $4,$4,$3
+ or $4,$4,$2
+ lbu $3,11($17)
+ andi $3,$3,0x7
+ sll $3,$3,6
+ li $2,-449 # 0xfffffe3f
+ and $2,$4,$2
+ or $2,$2,$3
+ ori $2,$2,0x20
+ j $L89
+ sw $2,20($sp)
+
+$L85:
+ lw $2,20($17)
+ srl $2,$2,3
+ andi $2,$2,0x3f
+ sll $2,$2,20
+ li $3,-66125824 # 0xfc0f0000
+ ori $3,$3,0xffff
+ lw $5,20($sp)
+ and $5,$5,$3
+ or $5,$5,$2
+ lw $2,16($17)
+ srl $2,$2,3
+ andi $2,$2,0x3f
+ sll $2,$2,14
+ li $3,-1048576 # 0xfff00000
+ ori $3,$3,0x3fff
+ and $5,$5,$3
+ or $5,$5,$2
+ andi $18,$18,0x1f
+ li $2,-32 # 0xffffffe0
+ and $5,$5,$2
+ or $5,$5,$18
+ lbu $2,15($17)
+ andi $2,$2,0x7
+ sll $2,$2,11
+ li $3,-14337 # 0xffffc7ff
+ and $5,$5,$3
+ or $5,$5,$2
+ lw $2,60($17)
+ srl $3,$2,31
+ sll $3,$3,9
+ li $4,-513 # 0xfffffdff
+ and $4,$5,$4
+ or $4,$4,$3
+ srl $2,$2,20
+ andi $2,$2,0x400
+ li $3,-1025 # 0xfffffbff
+ and $4,$4,$3
+ or $4,$4,$2
+ lbu $2,11($17)
+ andi $2,$2,0x7
+ sll $2,$2,6
+ li $3,-449 # 0xfffffe3f
+ and $4,$4,$3
+ or $4,$4,$2
+ ori $4,$4,0x20
+ lbu $3,27($17)
+ andi $3,$3,0x7
+ sll $3,$3,26
+ li $2,-469827584 # 0xe3ff0000
+ ori $2,$2,0xffff
+ and $2,$4,$2
+ or $2,$2,$3
+ j $L89
+ sw $2,20($sp)
+
+$L86:
+ lbu $2,15($17)
+ andi $2,$2,0x7
+ sll $2,$2,11
+ li $3,-14337 # 0xffffc7ff
+ lw $4,20($sp)
+ and $4,$4,$3
+ or $4,$4,$2
+ andi $18,$18,0x1f
+ li $2,-32 # 0xffffffe0
+ and $4,$4,$2
+ or $4,$4,$18
+ lbu $2,11($17)
+ andi $2,$2,0x7
+ sll $2,$2,6
+ li $3,-449 # 0xfffffe3f
+ and $4,$4,$3
+ or $4,$4,$2
+ ori $4,$4,0x20
+ lw $3,60($17)
+ srl $3,$3,31
+ sll $3,$3,9
+ li $2,-513 # 0xfffffdff
+ and $2,$4,$2
+ or $2,$2,$3
+ j $L89
+ sw $2,20($sp)
+
+$L87:
+ lw $3,40($17)
+ srl $3,$3,1
+ andi $3,$3,0xf
+ sll $3,$3,14
+ li $2,-262144 # 0xfffc0000
+ ori $2,$2,0x3fff
+ lw $4,20($sp)
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,20($sp)
+ lw $2,44($17)
+ sltu $2,$2,33
+ beq $2,$0,$L100
+ li $2,-1 # 0xffffffff
+
+ lw $3,44($17)
+ sll $3,$3,2
+ lui $2,%hi($L95)
+ addiu $2,$2,%lo($L95)
+ addu $2,$2,$3
+ lw $2,0($2)
+ j $2
+ nop
+
+ .rdata
+ .align 2
+ .align 2
+$L95:
+ .word $L77
+ .word $L77
+ .word $L90
+ .word $L77
+ .word $L91
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L92
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L93
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L77
+ .word $L94
+ .section .text.rtl8651_setAsicRouting
+$L90:
+ li $2,-14337 # 0xffffc7ff
+ lw $3,20($sp)
+ and $2,$3,$2
+ j $L96
+ sw $2,20($sp)
+
+$L91:
+ li $2,-14337 # 0xffffc7ff
+ lw $3,20($sp)
+ and $2,$3,$2
+ ori $2,$2,0x800
+ j $L96
+ sw $2,20($sp)
+
+$L92:
+ li $2,-14337 # 0xffffc7ff
+ lw $3,20($sp)
+ and $2,$3,$2
+ ori $2,$2,0x1000
+ j $L96
+ sw $2,20($sp)
+
+$L93:
+ li $2,-14337 # 0xffffc7ff
+ lw $3,20($sp)
+ and $2,$3,$2
+ ori $2,$2,0x1800
+ j $L96
+ sw $2,20($sp)
+
+$L94:
+ li $2,-14337 # 0xffffc7ff
+ lw $3,20($sp)
+ and $2,$3,$2
+ ori $2,$2,0x2000
+ sw $2,20($sp)
+$L96:
+ lbu $2,51($17)
+ andi $2,$2,0x1f
+ sll $2,$2,18
+ li $3,-8192000 # 0xff830000
+ ori $3,$3,0xffff
+ lw $5,20($sp)
+ and $5,$5,$3
+ or $5,$5,$2
+ lbu $2,55($17)
+ andi $2,$2,0x3
+ sll $2,$2,23
+ li $3,-25231360 # 0xfe7f0000
+ ori $3,$3,0xffff
+ and $5,$5,$3
+ or $5,$5,$2
+ andi $18,$18,0x1f
+ li $2,-32 # 0xffffffe0
+ and $5,$5,$2
+ or $5,$5,$18
+ lbu $2,11($17)
+ andi $2,$2,0x7
+ sll $2,$2,6
+ li $3,-449 # 0xfffffe3f
+ and $5,$5,$3
+ or $5,$5,$2
+ ori $5,$5,0x20
+ lbu $2,59($17)
+ andi $2,$2,0x7
+ sll $2,$2,25
+ li $3,-234946560 # 0xf1ff0000
+ ori $3,$3,0xffff
+ and $5,$5,$3
+ or $5,$5,$2
+ lw $2,60($17)
+ srl $3,$2,31
+ sll $3,$3,9
+ li $4,-513 # 0xfffffdff
+ and $4,$5,$4
+ or $4,$4,$3
+ srl $2,$2,20
+ andi $3,$2,0x400
+ li $2,-1025 # 0xfffffbff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,20($sp)
+$L89:
+ li $4,2 # 0x2
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ addiu $6,$sp,16
+
+ j $L97
+ nop
+
+$L77:
+ li $2,-1 # 0xffffffff
+$L97:
+$L100:
+ lw $31,60($sp)
+ lw $18,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicRouting
+ .size rtl8651_setAsicRouting, .-rtl8651_setAsicRouting
+ .section .text.rtl865x_initAsicL3,"ax",@progbits
+ .align 2
+ .globl rtl865x_initAsicL3
+ .set nomips16
+ .ent rtl865x_initAsicL3
+ .type rtl865x_initAsicL3, @function
+rtl865x_initAsicL3:
+ .frame $sp,104,$31 # vars= 72, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-104
+ sw $31,100($sp)
+ sw $17,96($sp)
+ sw $16,92($sp)
+ jal rtl865x_getAsicFun
+ addiu $4,$sp,84
+
+ lw $2,84($sp)
+ andi $2,$2,0x2
+ beq $2,$0,$L110
+ li $2,-1 # 0xffffffff
+
+ li $4,5 # 0x5
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,16 # 0x10
+
+ li $4,1 # 0x1
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,512 # 0x200
+
+ li $4,11 # 0xb
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,8 # 0x8
+
+ li $4,13 # 0xd
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,32 # 0x20
+
+ li $4,2 # 0x2
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,8 # 0x8
+
+ li $4,3 # 0x3
+ jal rtl8651_clearSpecifiedAsicTable
+ li $5,128 # 0x80
+
+ jal rtl8651_setAsicMulticastEnable
+ li $4,1 # 0x1
+
+ li $16,-1149239296 # 0xbb800000
+ ori $16,$16,0x440c
+ lw $3,0($16)
+ li $2,262144 # 0x40000
+ or $2,$3,$2
+ sw $2,0($16)
+ jal rtl8651_setAsicMulticastMTU
+ li $4,1522 # 0x5f2
+
+ lw $3,0($16)
+ li $2,65536 # 0x10000
+ or $2,$3,$2
+ sw $2,0($16)
+ lui $2,%hi(rtl8651_totalExtPortNum)
+ lw $2,%lo(rtl8651_totalExtPortNum)($2)
+ addiu $2,$2,6
+ blez $2,$L105
+ move $16,$0
+
+ lui $17,%hi(rtl8651_totalExtPortNum)
+ move $4,$16
+$L111:
+ jal rtl8651_setAsicMulticastPortInternal
+ li $5,1 # 0x1
+
+ bne $2,$0,$L104
+ addiu $16,$16,1
+
+ lw $2,%lo(rtl8651_totalExtPortNum)($17)
+ addiu $2,$2,6
+ slt $2,$16,$2
+ bne $2,$0,$L111
+ move $4,$16
+
+$L105:
+ addiu $16,$sp,16
+ move $4,$16
+ move $5,$0
+ jal memset
+ li $6,68 # 0x44
+
+ li $2,4 # 0x4
+ sw $2,24($sp)
+ sw $0,16($sp)
+ sw $0,20($sp)
+ sw $0,28($sp)
+ li $2,2147418112 # 0x7fff0000
+ ori $2,$2,0xffff
+ lw $3,76($sp)
+ and $2,$3,$2
+ sw $2,76($sp)
+ li $4,7 # 0x7
+ jal rtl8651_setAsicRouting
+ move $5,$16
+
+ j $L107
+ move $2,$0
+
+$L104:
+ li $2,-1 # 0xffffffff
+$L107:
+$L110:
+ lw $31,100($sp)
+ lw $17,96($sp)
+ lw $16,92($sp)
+ j $31
+ addiu $sp,$sp,104
+
+ .set macro
+ .set reorder
+ .end rtl865x_initAsicL3
+ .size rtl865x_initAsicL3, .-rtl865x_initAsicL3
+ .section .text.rtl8651_setAsicNextHopTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicNextHopTable
+ .set nomips16
+ .ent rtl8651_setAsicNextHopTable
+ .type rtl8651_setAsicNextHopTable, @function
+rtl8651_setAsicNextHopTable:
+ .frame $sp,64,$31 # vars= 32, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $18,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,32
+ beq $2,$0,$L113
+ move $17,$5
+
+ beq $5,$0,$L113
+ addiu $18,$sp,16
+
+ move $4,$18
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lhu $3,2($17)
+ sll $3,$3,2
+ lhu $2,6($17)
+ or $3,$3,$2
+ andi $3,$3,0x3ff
+ sll $3,$3,11
+ li $2,-2097152 # 0xffe00000
+ ori $2,$2,0x7ff
+ lw $4,16($sp)
+ and $2,$4,$2
+ or $2,$2,$3
+ lbu $3,11($17)
+ andi $3,$3,0x7
+ sll $3,$3,8
+ li $4,-1793 # 0xfffff8ff
+ and $2,$2,$4
+ or $2,$2,$3
+ lbu $3,15($17)
+ andi $3,$3,0x7
+ sll $3,$3,5
+ li $4,-225 # 0xffffff1f
+ and $2,$2,$4
+ or $2,$2,$3
+ lbu $3,19($17)
+ andi $3,$3,0xf
+ sll $3,$3,1
+ li $4,-31 # 0xffffffe1
+ and $2,$2,$4
+ or $2,$2,$3
+ lw $3,20($17)
+ srl $3,$3,31
+ li $4,-2 # 0xfffffffe
+ and $2,$2,$4
+ or $2,$2,$3
+ sw $2,16($sp)
+ li $4,13 # 0xd
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$18
+
+ j $L114
+ nop
+
+$L113:
+ li $2,-1 # 0xffffffff
+$L114:
+ lw $31,60($sp)
+ lw $18,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicNextHopTable
+ .size rtl8651_setAsicNextHopTable, .-rtl8651_setAsicNextHopTable
+ .section .text.rtl8651_setAsicPppoe,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicPppoe
+ .set nomips16
+ .ent rtl8651_setAsicPppoe
+ .type rtl8651_setAsicPppoe, @function
+rtl8651_setAsicPppoe:
+ .frame $sp,64,$31 # vars= 32, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $18,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,8
+ beq $2,$0,$L117
+ move $17,$5
+
+ beq $5,$0,$L120
+ li $2,-1 # 0xffffffff
+
+ lhu $3,0($5)
+ li $2,65535 # 0xffff
+ beq $3,$2,$L117
+ addiu $18,$sp,16
+
+ move $4,$18
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lhu $2,0($17)
+ sh $2,18($sp)
+ lbu $3,3($17)
+ andi $3,$3,0x7
+ sll $3,$3,16
+ li $2,-524288 # 0xfff80000
+ ori $2,$2,0xffff
+ lw $4,16($sp)
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,16($sp)
+ li $4,11 # 0xb
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$18
+
+ j $L118
+ nop
+
+$L117:
+ li $2,-1 # 0xffffffff
+$L118:
+$L120:
+ lw $31,60($sp)
+ lw $18,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicPppoe
+ .size rtl8651_setAsicPppoe, .-rtl8651_setAsicPppoe
+ .section .text.rtl8651_delAsicExtIntIpTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_delAsicExtIntIpTable
+ .set nomips16
+ .ent rtl8651_delAsicExtIntIpTable
+ .type rtl8651_delAsicExtIntIpTable, @function
+rtl8651_delAsicExtIntIpTable:
+ .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0
+ .mask 0x80030000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $17,56($sp)
+ sw $16,52($sp)
+ sltu $2,$4,16
+ bne $2,$0,$L122
+ move $16,$4
+
+ j $L123
+ li $2,-1 # 0xffffffff
+
+$L122:
+ addiu $17,$sp,16
+ move $4,$17
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ li $2,-2 # 0xfffffffe
+ lw $3,24($sp)
+ and $2,$3,$2
+ sw $2,24($sp)
+ li $4,5 # 0x5
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$17
+
+$L123:
+ lw $31,60($sp)
+ lw $17,56($sp)
+ lw $16,52($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_delAsicExtIntIpTable
+ .size rtl8651_delAsicExtIntIpTable, .-rtl8651_delAsicExtIntIpTable
+ .section .text.rtl8651_setAsicExtIntIpTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_setAsicExtIntIpTable
+ .set nomips16
+ .ent rtl8651_setAsicExtIntIpTable
+ .type rtl8651_setAsicExtIntIpTable, @function
+rtl8651_setAsicExtIntIpTable:
+ .frame $sp,64,$31 # vars= 32, regs= 4/0, args= 16, gp= 0
+ .mask 0x80070000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-64
+ sw $31,60($sp)
+ sw $18,56($sp)
+ sw $17,52($sp)
+ sw $16,48($sp)
+ move $16,$4
+ sltu $2,$4,16
+ beq $2,$0,$L126
+ move $17,$5
+
+ beq $5,$0,$L129
+ li $2,-1 # 0xffffffff
+
+ lw $3,12($5)
+ li $2,-1073741824 # 0xc0000000
+ and $3,$3,$2
+ beq $3,$2,$L126
+ addiu $18,$sp,16
+
+ move $4,$18
+ move $5,$0
+ jal memset
+ li $6,32 # 0x20
+
+ lw $2,0($17)
+ sw $2,20($sp)
+ lw $2,4($17)
+ sw $2,16($sp)
+ lw $2,12($17)
+ srl $3,$2,31
+ sll $3,$3,2
+ li $4,-5 # 0xfffffffb
+ lw $5,24($sp)
+ and $4,$5,$4
+ or $4,$4,$3
+ srl $2,$2,29
+ andi $2,$2,0x2
+ li $3,-3 # 0xfffffffd
+ and $4,$4,$3
+ or $4,$4,$2
+ lbu $3,11($17)
+ andi $3,$3,0x1f
+ sll $3,$3,3
+ li $2,-249 # 0xffffff07
+ and $2,$4,$2
+ or $2,$2,$3
+ ori $2,$2,0x1
+ sw $2,24($sp)
+ li $4,5 # 0x5
+ move $5,$16
+ jal _rtl8651_forceAddAsicEntry
+ move $6,$18
+
+ j $L127
+ nop
+
+$L126:
+ li $2,-1 # 0xffffffff
+$L127:
+$L129:
+ lw $31,60($sp)
+ lw $18,56($sp)
+ lw $17,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,64
+
+ .set macro
+ .set reorder
+ .end rtl8651_setAsicExtIntIpTable
+ .size rtl8651_setAsicExtIntIpTable, .-rtl8651_setAsicExtIntIpTable
+ .section .text.rtl8651_getAsicRouting,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicRouting
+ .set nomips16
+ .ent rtl8651_getAsicRouting
+ .type rtl8651_getAsicRouting, @function
+rtl8651_getAsicRouting:
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $2,$4
+ sltu $3,$4,8
+ beq $3,$0,$L131
+ move $16,$5
+
+ beq $5,$0,$L131
+ li $4,2 # 0x2
+
+ move $5,$2
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lw $2,20($sp)
+ andi $2,$2,0x20
+ beq $2,$0,$L149
+ li $2,-1 # 0xffffffff
+
+ lw $2,16($sp)
+ sw $2,0($16)
+ lw $2,20($sp)
+ srl $2,$2,6
+ andi $2,$2,0x7
+ sw $2,8($16)
+ sw $0,4($16)
+ move $2,$0
+ li $4,31 # 0x1f
+ li $3,1 # 0x1
+$L132:
+ subu $5,$4,$2
+ sll $5,$3,$5
+ lw $6,4($16)
+ or $5,$6,$5
+ sw $5,4($16)
+ addiu $2,$2,1
+ lbu $5,23($sp)
+ andi $5,$5,0x1f
+ sltu $5,$5,$2
+ beq $5,$0,$L132
+ nop
+
+ lw $2,20($sp)
+ srl $3,$2,11
+ andi $3,$3,0x7
+ sw $3,12($16)
+ srl $2,$2,9
+ sll $3,$2,31
+ lw $4,60($16)
+ li $2,2147418112 # 0x7fff0000
+ ori $2,$2,0xffff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,60($16)
+ lw $2,8($16)
+ sltu $2,$2,7
+ beq $2,$0,$L149
+ li $2,-1 # 0xffffffff
+
+ lw $3,8($16)
+ sll $3,$3,2
+ lui $2,%hi($L138)
+ addiu $2,$2,%lo($L138)
+ addu $2,$2,$3
+ lw $2,0($2)
+ j $2
+ nop
+
+ .rdata
+ .align 2
+ .align 2
+$L138:
+ .word $L133
+ .word $L134
+ .word $L135
+ .word $L131
+ .word $L136
+ .word $L137
+ .word $L136
+ .section .text.rtl8651_getAsicRouting
+$L133:
+ sw $0,16($16)
+ sw $0,20($16)
+ lw $2,20($sp)
+ srl $3,$2,24
+ andi $3,$3,0x7
+ sw $3,36($16)
+ srl $3,$2,14
+ andi $3,$3,0x3ff
+ sra $4,$3,2
+ sw $4,28($16)
+ andi $3,$3,0x3
+ sw $3,32($16)
+ srl $3,$2,10
+ andi $3,$3,0x1
+ sll $3,$3,30
+ lw $4,60($16)
+ li $2,-1073807360 # 0xbfff0000
+ ori $2,$2,0xffff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,60($16)
+ j $L139
+ move $2,$0
+
+$L134:
+ sw $0,16($16)
+ sw $0,20($16)
+ sw $0,36($16)
+ lw $2,20($sp)
+ srl $3,$2,14
+ andi $3,$3,0x3ff
+ sra $4,$3,2
+ sw $4,28($16)
+ andi $3,$3,0x3
+ sw $3,32($16)
+ srl $3,$2,10
+ andi $3,$3,0x1
+ sll $3,$3,30
+ lw $4,60($16)
+ li $2,-1073807360 # 0xbfff0000
+ ori $2,$2,0xffff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,60($16)
+ j $L139
+ move $2,$0
+
+$L135:
+ lw $2,20($sp)
+ srl $3,$2,20
+ andi $3,$3,0x3f
+ sw $3,20($16)
+ srl $3,$2,14
+ andi $3,$3,0x3f
+ sw $3,16($16)
+ sw $0,36($16)
+ sw $0,28($16)
+ sw $0,32($16)
+ srl $3,$2,26
+ andi $3,$3,0x7
+ sw $3,24($16)
+ srl $3,$2,10
+ andi $3,$3,0x1
+ sll $3,$3,30
+ lw $4,60($16)
+ li $2,-1073807360 # 0xbfff0000
+ ori $2,$2,0xffff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,60($16)
+ j $L139
+ move $2,$0
+
+$L136:
+ sw $0,16($16)
+ sw $0,20($16)
+ sw $0,36($16)
+ sw $0,28($16)
+ sw $0,32($16)
+ lw $3,20($sp)
+ srl $3,$3,10
+ andi $3,$3,0x1
+ sll $3,$3,30
+ lw $4,60($16)
+ li $2,-1073807360 # 0xbfff0000
+ ori $2,$2,0xffff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,60($16)
+ j $L139
+ move $2,$0
+
+$L137:
+ lw $2,20($sp)
+ srl $3,$2,13
+ andi $3,$3,0x1e
+ sw $3,40($16)
+ srl $2,$2,11
+ andi $2,$2,0x7
+ sltu $3,$2,5
+ beq $3,$0,$L131
+ sll $2,$2,2
+
+ lui $3,%hi($L145)
+ addiu $3,$3,%lo($L145)
+ addu $2,$3,$2
+ lw $2,0($2)
+ j $2
+ nop
+
+ .rdata
+ .align 2
+ .align 2
+$L145:
+ .word $L140
+ .word $L141
+ .word $L142
+ .word $L143
+ .word $L144
+ .section .text.rtl8651_getAsicRouting
+$L140:
+ li $2,2 # 0x2
+ j $L146
+ sw $2,44($16)
+
+$L141:
+ li $2,4 # 0x4
+ j $L146
+ sw $2,44($16)
+
+$L142:
+ li $2,8 # 0x8
+ j $L146
+ sw $2,44($16)
+
+$L143:
+ li $2,16 # 0x10
+ j $L146
+ sw $2,44($16)
+
+$L144:
+ li $2,32 # 0x20
+ sw $2,44($16)
+$L146:
+ lw $2,20($sp)
+ srl $3,$2,18
+ andi $3,$3,0x1f
+ sw $3,48($16)
+ srl $3,$2,23
+ andi $3,$3,0x3
+ sw $3,52($16)
+ srl $3,$2,25
+ andi $3,$3,0x7
+ sw $3,56($16)
+ srl $3,$2,9
+ sll $3,$3,31
+ lw $5,60($16)
+ li $4,2147418112 # 0x7fff0000
+ ori $4,$4,0xffff
+ and $4,$5,$4
+ or $4,$4,$3
+ srl $3,$2,10
+ andi $3,$3,0x1
+ sll $3,$3,30
+ li $2,-1073807360 # 0xbfff0000
+ ori $2,$2,0xffff
+ and $2,$4,$2
+ or $2,$2,$3
+ sw $2,60($16)
+ j $L139
+ move $2,$0
+
+$L131:
+ li $2,-1 # 0xffffffff
+$L139:
+$L149:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicRouting
+ .size rtl8651_getAsicRouting, .-rtl8651_getAsicRouting
+ .section .text.rtl8651_getAsicNextHopTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicNextHopTable
+ .set nomips16
+ .ent rtl8651_getAsicNextHopTable
+ .type rtl8651_getAsicNextHopTable, @function
+rtl8651_getAsicNextHopTable:
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $2,$4
+ sltu $3,$4,32
+ beq $3,$0,$L151
+ move $16,$5
+
+ beq $5,$0,$L151
+ li $4,13 # 0xd
+
+ move $5,$2
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lw $2,16($sp)
+ srl $3,$2,11
+ andi $3,$3,0x3ff
+ sra $4,$3,2
+ sw $4,0($16)
+ andi $3,$3,0x3
+ sw $3,4($16)
+ srl $3,$2,8
+ andi $3,$3,0x7
+ sw $3,8($16)
+ srl $3,$2,5
+ andi $3,$3,0x7
+ sw $3,12($16)
+ srl $3,$2,1
+ andi $3,$3,0xf
+ sw $3,16($16)
+ sll $2,$2,31
+ lw $4,20($16)
+ li $3,2147418112 # 0x7fff0000
+ ori $3,$3,0xffff
+ and $3,$4,$3
+ or $2,$3,$2
+ sw $2,20($16)
+ j $L152
+ move $2,$0
+
+$L151:
+ li $2,-1 # 0xffffffff
+$L152:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicNextHopTable
+ .size rtl8651_getAsicNextHopTable, .-rtl8651_getAsicNextHopTable
+ .section .text.rtl8651_getAsicPppoe,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicPppoe
+ .set nomips16
+ .ent rtl8651_getAsicPppoe
+ .type rtl8651_getAsicPppoe, @function
+rtl8651_getAsicPppoe:
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $2,$4
+ sltu $3,$4,8
+ beq $3,$0,$L155
+ move $16,$5
+
+ beq $5,$0,$L155
+ li $4,11 # 0xb
+
+ move $5,$2
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lhu $2,18($sp)
+ sh $2,0($16)
+ lbu $2,17($sp)
+ andi $2,$2,0x7
+ sh $2,2($16)
+ j $L156
+ move $2,$0
+
+$L155:
+ li $2,-1 # 0xffffffff
+$L156:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicPppoe
+ .size rtl8651_getAsicPppoe, .-rtl8651_getAsicPppoe
+ .section .text.rtl8651_getAsicExtIntIpTable,"ax",@progbits
+ .align 2
+ .globl rtl8651_getAsicExtIntIpTable
+ .set nomips16
+ .ent rtl8651_getAsicExtIntIpTable
+ .type rtl8651_getAsicExtIntIpTable, @function
+rtl8651_getAsicExtIntIpTable:
+ .frame $sp,56,$31 # vars= 32, regs= 2/0, args= 16, gp= 0
+ .mask 0x80010000,-4
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ addiu $sp,$sp,-56
+ sw $31,52($sp)
+ sw $16,48($sp)
+ move $2,$4
+ sltu $3,$4,16
+ beq $3,$0,$L159
+ move $16,$5
+
+ beq $5,$0,$L159
+ li $4,5 # 0x5
+
+ move $5,$2
+ jal _rtl8651_readAsicEntry
+ addiu $6,$sp,16
+
+ lw $2,24($sp)
+ andi $2,$2,0x1
+ beq $2,$0,$L159
+ li $4,2147418112 # 0x7fff0000
+
+ lw $2,20($sp)
+ sw $2,0($16)
+ lw $2,16($sp)
+ sw $2,4($16)
+ lw $2,24($sp)
+ srl $3,$2,2
+ sll $3,$3,31
+ lw $5,12($16)
+ ori $4,$4,0xffff
+ and $5,$5,$4
+ or $5,$5,$3
+ srl $4,$2,1
+ andi $4,$4,0x1
+ sll $4,$4,30
+ li $3,-1073807360 # 0xbfff0000
+ ori $3,$3,0xffff
+ and $3,$5,$3
+ or $3,$3,$4
+ sw $3,12($16)
+ srl $2,$2,3
+ andi $2,$2,0x1f
+ sw $2,8($16)
+ j $L160
+ move $2,$0
+
+$L159:
+ li $2,-1 # 0xffffffff
+$L160:
+ lw $31,52($sp)
+ lw $16,48($sp)
+ j $31
+ addiu $sp,$sp,56
+
+ .set macro
+ .set reorder
+ .end rtl8651_getAsicExtIntIpTable
+ .size rtl8651_getAsicExtIntIpTable, .-rtl8651_getAsicExtIntIpTable
+ .ident "GCC: (GNU) 4.4.5-1.5.5p4"
diff --git a/target/linux/realtek/files/drivers/net/rtl819x/l2Driver/rtl865x_hw_qos_config.c b/target/linux/realtek/files/drivers/net/rtl819x/l2Driver/rtl865x_hw_qos_config.c
new file mode 100644
index 000000000..60a5dca2a
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/rtl819x/l2Driver/rtl865x_hw_qos_config.c
@@ -0,0 +1,571 @@
+#include <linux/module.h>
+#include <linux/proc_fs.h>
+#include <linux/types.h>
+#include <linux/errno.h>
+#include <linux/sched.h>
+#include <linux/kernel.h>
+#include <linux/kernel_stat.h>
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <asm/uaccess.h>
+#include <linux/net.h>
+#include <linux/socket.h>
+
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/string.h>
+#include <net/ip.h>
+#include <net/protocol.h>
+#include <net/route.h>
+#include <net/sock.h>
+#include <net/arp.h>
+#include <net/raw.h>
+#include <net/checksum.h>
+#include <linux/netfilter.h>
+#include <linux/netfilter_ipv4.h>
+#include <linux/netlink.h>
+#include <linux/inetdevice.h>
+#include <linux/icmp.h>
+#include <net/udp.h>
+#include <net/tcp.h>
+
+#include <net/rtl/rtl_types.h>
+#ifdef CONFIG_NETFILTER
+#include <net/netfilter/nf_conntrack.h>
+#include <net/rtl/fastpath/fastpath_core.h>
+#endif
+#include <net/rtl/rtl865x_netif.h>
+#include <net/rtl/rtl_nic.h>
+
+#ifdef CONFIG_RTL_LAYERED_ASIC_DRIVER
+#include <AsicDriver/asicRegs.h>
+#include <AsicDriver/rtl865x_asicCom.h>
+#include <AsicDriver/rtl865x_asicL2.h>
+#else
+#include <AsicDriver/asicRegs.h>
+#include <AsicDriver/rtl8651_tblAsicDrv.h>
+#endif
+
+
+struct sock *hw_qos_sk = NULL;
+
+struct qos_cmd_info_s{
+ int action;
+ union{
+ struct{
+ char port[8];
+ unsigned int portmask;
+ } port_based_priority, queue_num;
+ struct{
+ char vlan[8];
+ unsigned int vlanmask;
+ }vlan_based_priority;
+ struct{
+ char dscp[64];
+ unsigned int dscpmask1;
+ unsigned int dscpmask2;
+ }dscp_based_priority;
+ struct{
+ unsigned char queue[8][6];
+ unsigned int portmask;
+ unsigned int queuemask;
+ }queue_type;
+ struct{
+ char priority[8];
+ unsigned int prioritymask;
+ }sys_priority;
+ struct{
+ char decision[5];
+ }pri_decision;
+ struct{
+ char remark[8][8];
+ unsigned int portmask;
+ unsigned int prioritymask;
+ }vlan_remark, dscp_remark;
+ struct{
+ unsigned short apr[8][6];
+ unsigned char burst[8][6];
+ unsigned char ppr[8][6];
+ unsigned int portmask;
+ unsigned int queuemask;
+ }queue_rate;
+ } qos_data;
+};
+
+#define PORT_BASED_PRIORITY_ASSIGN 1
+#define VLAN_BASED_PRIORITY_ASSIGN 2
+#define DSCP_BASED_PRIORITY_ASSIGN 3
+#define QUEUE_NUMBER 4
+#define QUEUE_TYPE_STRICT 5
+#define QUEUE_TYPE_WEIGHTED 6
+#define PRIORITY_TO_QID 7
+#define PRIORITY_DECISION 8
+#define VLAN_REMARK 9
+#define DSCP_REMARK 10
+#define PORT_BASED_PRIORITY_SHOW 11
+#define VLAN_BASED_PRIORITY_SHOW 12
+#define DSCP_BASED_PRIORITY_SHOW 13
+#define QUEUE_NUMBER_SHOW 14
+#define QUEUE_TYPE_STRICT_SHOW 15
+#define QUEUE_TYPE_WEIGHTED_SHOW 16
+#define PRIORITY_TO_QID_SHOW 17
+#define PRIORITY_DECISION_SHOW 18
+#define VLAN_REMARK_SHOW 19
+#define DSCP_REMARK_SHOW 20
+#define QUEUE_RATE 21
+#define QUEUE_RATE_SHOW 22
+#define FLOW_CONTROL_ENABLE 23
+#define FLOW_CONTROL_DISABLE 24
+#define FLOW_CONTROL_CONFIGURATION_SHOW 25
+
+
+static inline void port_based_priority_show(void)
+{
+ int i, ret;
+ enum PRIORITYVALUE priority;
+
+ printk("PORT_BASED_PRIORITY: \n");
+ for(i=0; i<9; i++){
+ ret = rtl8651_getAsicPortBasedPriority(i, &priority);
+ if(ret == SUCCESS)
+ printk(" Priority of port[%d] is %d\n", i, priority);
+ }
+
+ return;
+}
+
+static inline void vlan_based_priority_show(void)
+{
+ int i, ret;
+ enum PRIORITYVALUE priority;
+
+ printk("VLAN_BASED_PRIORITY: \n");
+ for(i=0; i<9; i++){
+ ret = rtl8651_getAsicDot1qAbsolutelyPriority(i, &priority);
+ if(ret == SUCCESS)
+ printk(" Priority of vlan_pri[%d] is %d\n", i, priority);
+ }
+
+ return;
+}
+
+static inline void dscp_based_priority_show(void)
+{
+ int i, ret;
+ enum PRIORITYVALUE priority;
+
+ printk("DSCP_BASED_PRIORITY: \n");
+ for(i=0; i<64; i++){
+ ret = rtl8651_getAsicDscpPriority(i, &priority);
+ if(ret == SUCCESS)
+ printk(" Priority of dscp[%d] is %d\n", i, priority);
+ }
+
+ return;
+}
+
+static inline void queue_number_show(void)
+{
+ int i, ret;
+ enum QUEUENUM qnum;
+
+ printk("QUEUE_NUMBER: \n");
+ for(i=0; i<8; i++){
+ ret = rtl8651_getAsicOutputQueueNumber(i, &qnum);
+ if(ret == SUCCESS)
+ printk(" Queue number of port[%d] is %d\n", i, qnum);
+ }
+
+ return;
+}
+
+static inline void queue_type_strict_show(void)
+{
+ int i, ret, j;
+ enum QUEUETYPE queueType;
+
+ printk("QUEUE_TYPE_STRICT: \n");
+ for(i=0; i<8; i++){
+ for(j=0; j<5; j++){
+ ret = rtl8651_getAsicQueueStrict(i, j, &queueType);
+ if((ret == SUCCESS) && (queueType == 0))
+ printk(" Port[%d]'s Queue[%d] type is STRICT\n", i, j);
+ }
+ }
+
+ return;
+}
+
+static inline void queue_type_weighted_show(void)
+{
+ int i, ret, j, weight;
+ enum QUEUETYPE queueType;
+
+ printk("QUEUE_TYPE_WEIGHTED: \n");
+ for(i=0; i<8; i++){
+ for(j=0; j<5; j++){
+ ret = rtl8651_getAsicQueueWeight(i, j, &queueType, &weight);
+ if((ret == SUCCESS) && (queueType == 1))
+ printk(" Port[%d]'s Queue[%d] type is WEIGHTED, and weight is %u\n", i, j, weight);
+ }
+ }
+
+ return;
+}
+
+static inline void priority_to_qid_show(void)
+{
+ int i, j, ret;
+ enum QUEUEID qid;
+
+ printk("PRIORITY_TO_QID: \n");
+ for(i=1; i<7; i++){
+ for(j=0; j<8; j++){
+ ret = rtl8651_getAsicPriorityToQIDMappingTable(i, j, &qid);
+ if(ret == SUCCESS)
+ printk(" For Queue number[%d], priority[%d] is mapping to qid[%d]\n", i, j, qid);
+ }
+ }
+
+ return;
+}
+
+
+static inline void priority_decision_show(void)
+{
+ unsigned int portpri, dot1qpri, dscppri, aclpri, natpri;
+ int ret;
+
+ printk("PRIORITY_DECISION: \n");
+ ret = rtl8651_getAsicPriorityDecision(&portpri, &dot1qpri, &dscppri, &aclpri, &natpri);
+ if(ret == SUCCESS){
+ printk(" Port based decision priority is %d\n", portpri);
+ printk(" Vlan based decision priority is %d\n", dot1qpri);
+ printk(" Dscp based decision priority is %d\n", dscppri);
+ printk(" Acl based decision priority is %d\n", aclpri);
+ printk(" Nat based decision priority is %d\n", natpri);
+ }
+
+ return;
+}
+
+static inline void vlan_remark_show(void)
+{
+ int i, j, ret, remark;
+
+ printk("VLAN_REMARK: \n");
+ for(i=0; i<8; i++){
+ for(j=0; j<8; j++){
+ ret = rtl8651_getAsicVlanRemark(i, j, &remark);
+ if(ret == SUCCESS)
+ printk(" Port[%d]'s sys_pri[%d] is remarked as vlan_pri[%d]\n", i, j, remark);
+ }
+
+ }
+
+ return;
+}
+
+static inline void dscp_remark_show(void)
+{
+ int i, j, ret, remark;
+
+ printk("DSCP_REMARK: \n");
+ for(i=0; i<8; i++){
+ for(j=0; j<8; j++){
+ ret = rtl8651_getAsicDscpRemark(i, j, &remark);
+ if(ret == SUCCESS)
+ printk(" Port[%d]'s sys_pri[%d] is remarked as dscp[%d]\n", i, j, remark);
+ }
+
+ }
+
+ return;
+}
+
+static inline void queue_rate_show(void)
+{
+ int i, j, ret;
+ unsigned int ppr, apr, burst;
+
+ printk("QUEUE_RATE: \n");
+ for(i=0; i<8; i++){
+ for(j=0; j<6; j++){
+ ret = rtl8651_getAsicQueueRate(i, j, &ppr, &burst, &apr);
+ if(ret == SUCCESS)
+ printk(" Port[%d] queue[%d]'s ppr is %d, burst is %d, apr is %d\n", i, j, ppr, burst, apr);
+ }
+
+ }
+
+ return;
+}
+
+static inline void flow_control_config_show(void)
+{
+ unsigned int flow_control_enable = 0;
+ int ret;
+
+ ret = rtl8651_getAsicQueueFlowControlConfigureRegister(0, 0, &flow_control_enable);
+ if(ret == SUCCESS){
+ if(flow_control_enable == 1){
+ printk(" QOS Flow Control is enabled!\n");
+ }else{
+ printk(" QOS Flow Control is disabled!\n");
+ }
+ }
+}
+
+
+void hw_qos_netlink_receive (struct sk_buff *__skb)
+{
+ unsigned int i, j;
+ enum QUEUENUM queue_num;
+ int ret;
+ int pid = 0;
+ struct qos_cmd_info_s send_data,recv_data;
+
+ pid=rtk_nlrecvmsg(__skb, sizeof(struct qos_cmd_info_s), &recv_data);
+ if(pid<0)
+ return;
+
+ switch(recv_data.action)
+ {
+ case PORT_BASED_PRIORITY_ASSIGN:
+ for(i=0; i<8; i++){
+ if((1<<i) & recv_data.qos_data.port_based_priority.portmask){
+ ret = rtl8651_setAsicPortBasedPriority(i, recv_data.qos_data.port_based_priority.port[i]);
+ if(ret == FAILED){
+ printk("Port based priority set to PBPCR register failed\n ");
+ }
+
+ }
+ }
+ send_data.action = PORT_BASED_PRIORITY_ASSIGN;
+ break;
+ case VLAN_BASED_PRIORITY_ASSIGN:
+ for(i=0; i<8; i++){
+ if((1<<i) & recv_data.qos_data.vlan_based_priority.vlanmask){
+ ret = rtl8651_setAsicDot1qAbsolutelyPriority(i, recv_data.qos_data.vlan_based_priority.vlan[i]);
+ if(ret == FAILED){
+ printk("Vlan based priority set to LPTM8021Q register failed\n ");
+ }
+ }
+ }
+ send_data.action = VLAN_BASED_PRIORITY_ASSIGN;
+ break;
+ case DSCP_BASED_PRIORITY_ASSIGN:
+ for(i=0; i<64; i++){
+ if(((i<32) && ((1<<i) & recv_data.qos_data.dscp_based_priority.dscpmask1)) ||
+ ((i>=32) && ((1<<(i-32)) & recv_data.qos_data.dscp_based_priority.dscpmask2))){
+ ret = rtl8651_setAsicDscpPriority(i, recv_data.qos_data.dscp_based_priority.dscp[i]);
+ if(ret == FAILED){
+ printk("Dscp based priority set to DSCPCR register failed\n ");
+ }
+ }
+ }
+ send_data.action = DSCP_BASED_PRIORITY_ASSIGN;
+ break;
+ case QUEUE_NUMBER:
+ for(i=0; i<8; i++){
+ if((1<<i) && recv_data.qos_data.queue_num.portmask){
+ ret = rtl8651_setAsicOutputQueueNumber(i, recv_data.qos_data.queue_num.port[i]);
+ if(ret == FAILED){
+ printk("Queue number set to QNUMCR register failed\n ");
+ }
+ }
+ }
+ send_data.action = QUEUE_NUMBER;
+ break;
+ case QUEUE_TYPE_STRICT:
+ for(i=0; i<8; i++){
+ if((1<<i) & recv_data.qos_data.queue_type.portmask){
+ for(j=0; j<6; j++){
+ if((1<<j) & recv_data.qos_data.queue_type.queuemask){
+ if(recv_data.qos_data.queue_type.queue[i][j] == 255){
+ ret = rtl8651_setAsicQueueStrict(i, j, STR_PRIO);
+ if(ret == FAILED){
+ printk("Queue type STRICT set to WFQWCR0P0 register failed\n ");
+ }
+ }
+ }
+ }
+ }
+ }
+ send_data.action = QUEUE_TYPE_STRICT;
+ break;
+ case QUEUE_TYPE_WEIGHTED:
+ for(i=0; i<8; i++){
+ if((1<<i) & recv_data.qos_data.queue_type.portmask){
+ for(j=0; j<6; j++){
+ if((1<<j) & recv_data.qos_data.queue_type.queuemask){
+ if((recv_data.qos_data.queue_type.queue[i][j] > 0) &&
+ (recv_data.qos_data.queue_type.queue[i][j] != 255)){
+ ret = rtl8651_setAsicQueueWeight(i, j, WFQ_PRIO, recv_data.qos_data.queue_type.queue[i][j]);
+ if(ret == FAILED){
+ printk("Queue type WEIGHTED set to WFQWCR0P0 register failed\n ");
+ }
+ }
+ }
+ }
+ }
+ }
+ send_data.action = QUEUE_TYPE_WEIGHTED;
+ break;
+ case PRIORITY_TO_QID:
+ for(i=0; i<8; i++){
+ ret = rtl8651_getAsicOutputQueueNumber(i, &queue_num);
+ if(ret == SUCCESS){
+ for(j=0; j<8; j++)
+ {
+ if((1<<j) & recv_data.qos_data.sys_priority.prioritymask){
+ ret = rtl8651_setAsicPriorityToQIDMappingTable(queue_num, j, recv_data.qos_data.sys_priority.priority[j]);
+ if(ret == FAILED){
+ printk("Priority to qid set to UPTCMCR register failed\n ");
+ }
+ }
+ }
+ }
+ }
+ send_data.action = PRIORITY_TO_QID;
+ break;
+ case PRIORITY_DECISION:
+ ret = rtl8651_setAsicPriorityDecision(recv_data.qos_data.pri_decision.decision[0], recv_data.qos_data.pri_decision.decision[1],
+ recv_data.qos_data.pri_decision.decision[2], recv_data.qos_data.pri_decision.decision[3],
+ recv_data.qos_data.pri_decision.decision[4]);
+ if(ret == FAILED){
+ printk("Priority decision set to QIDDPCR register failed\n ");
+ }
+ send_data.action = PRIORITY_DECISION;
+ break;
+ case VLAN_REMARK:
+ for(i=0; i<8; i++){
+ if((1<<i) & recv_data.qos_data.vlan_remark.portmask){
+ for(j=0; j<8; j++){
+ if((1<<j) & recv_data.qos_data.vlan_remark.prioritymask){
+ ret = rtl8651_setAsicVlanRemark(i, j, recv_data.qos_data.vlan_remark.remark[i][j]);
+ if(ret == FAILED){
+ printk("Vlan remark set to RMCR1P register failed\n ");
+ }
+ }
+ }
+ }
+ }
+ send_data.action = VLAN_REMARK;
+ break;
+ case DSCP_REMARK:
+ for(i=0; i<8; i++){
+ if((1<<i) & recv_data.qos_data.dscp_remark.portmask){
+ for(j=0; j<8; j++){
+ if((1<<j) & recv_data.qos_data.dscp_remark.prioritymask){
+ ret = rtl8651_setAsicDscpRemark(i, j, recv_data.qos_data.dscp_remark.remark[i][j]);
+ if(ret == FAILED){
+ printk("Dscp remark set to DSCPRM register failed\n ");
+ }
+ }
+ }
+ }
+ }
+ send_data.action = DSCP_REMARK;
+ break;
+ case QUEUE_RATE:
+ for(i=0; i<8; i++){
+ if((1<<i) & recv_data.qos_data.queue_rate.portmask){
+ for(j=0; j<6; j++){
+ if((1<<j) & recv_data.qos_data.queue_rate.queuemask){
+ ret = rtl8651_setAsicQueueRate(i, j, recv_data.qos_data.queue_rate.ppr[i][j],
+ recv_data.qos_data.queue_rate.burst[i][j],
+ recv_data.qos_data.queue_rate.apr[i][j]);
+ if(ret == FAILED){
+ printk("Queue rate set to P0Q0RGCR register failed\n ");
+ }
+ }
+ }
+ }
+ }
+ send_data.action = QUEUE_RATE;
+ break;
+ case FLOW_CONTROL_ENABLE:
+ for(i=0; i<7; i++){
+ for(j=0; j<6; j++){
+ ret = rtl8651_setAsicQueueFlowControlConfigureRegister(i, j, 1);
+ if(ret == FAILED){
+ printk("Set Flow Control Enable failed\n ");
+ }
+ }
+ }
+ break;
+ case FLOW_CONTROL_DISABLE:
+ for(i=0; i<7; i++){
+ for(j=0; j<6; j++){
+ ret = rtl8651_setAsicQueueFlowControlConfigureRegister(i, j, 0);
+ if(ret == FAILED){
+ printk("Set Flow Control Disable failed\n ");
+ }
+ }
+ }
+ break;
+ case PORT_BASED_PRIORITY_SHOW:
+ port_based_priority_show();
+ break;
+ case VLAN_BASED_PRIORITY_SHOW:
+ vlan_based_priority_show();
+ break;
+ case DSCP_BASED_PRIORITY_SHOW:
+ dscp_based_priority_show();
+ break;
+ case QUEUE_NUMBER_SHOW:
+ queue_number_show();
+ break;
+ case QUEUE_TYPE_STRICT_SHOW:
+ queue_type_strict_show();
+ break;
+ case QUEUE_TYPE_WEIGHTED_SHOW:
+ queue_type_weighted_show();
+ break;
+ case PRIORITY_TO_QID_SHOW:
+ priority_to_qid_show();
+ break;
+ case PRIORITY_DECISION_SHOW:
+ priority_decision_show();
+ break;
+ case VLAN_REMARK_SHOW:
+ vlan_remark_show();
+ break;
+ case DSCP_REMARK_SHOW:
+ dscp_remark_show();
+ break;
+ case QUEUE_RATE_SHOW:
+ queue_rate_show();
+ break;
+ case FLOW_CONTROL_CONFIGURATION_SHOW:
+ flow_control_config_show();
+ break;
+ default:
+ break;
+ }
+
+ rtk_nlsendmsg(pid, hw_qos_sk, sizeof(struct qos_cmd_info_s), &send_data);
+ return;
+
+}
+
+
+int hw_qos_init_netlink(void)
+{
+ hw_qos_sk = netlink_kernel_create(&init_net, NETLINK_RTK_HW_QOS, 0, hw_qos_netlink_receive, NULL, THIS_MODULE);
+
+ if (!hw_qos_sk) {
+ printk(KERN_ERR "Netlink[Kernel] Cannot create netlink socket for hw qos config.\n");
+ return -EIO;
+ }
+ printk("Netlink[Kernel] create socket for hw qos config ok.\n");
+ return 0;
+}
+
+
+
+
+
+
diff --git a/target/linux/realtek/files/drivers/net/rtl819x/l3Driver/rtl865x_multipleWan.h b/target/linux/realtek/files/drivers/net/rtl819x/l3Driver/rtl865x_multipleWan.h
new file mode 100644
index 000000000..c523becd5
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/rtl819x/l3Driver/rtl865x_multipleWan.h
@@ -0,0 +1,23 @@
+/*
+* Copyright c Realtek Semiconductor Corporation, 2010
+* All rights reserved.
+*
+* Program : multiple wan device driver header file
+* Abstract :
+* Author : hyking (hyking_liu@realsil.com.cn)
+*/
+
+#ifndef RTL865X_MULTIPLEWAN_H
+#define RTL865X_MULTIPLEWAN_H
+
+#define RTL_ADVRT_MAX_NUM 4
+
+rtl_advRoute_entry_t* rtl_get_advRt_entry_by_nexthop(ipaddr_t nexthop);
+int rtl_init_advRt(void);
+int rtl_exit_advRt(void);
+int rtl_add_advRt_entry(rtl_advRoute_entry_t *entry);
+int rtl_del_advRt_entry(rtl_advRoute_entry_t *entry);
+int rtl_disable_advRt_by_netifName(const char *name);
+
+#endif
+
diff --git a/target/linux/realtek/files/drivers/net/rtl819x/rtl865x_log.h b/target/linux/realtek/files/drivers/net/rtl819x/rtl865x_log.h
new file mode 100644
index 000000000..0150891ff
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/rtl819x/rtl865x_log.h
@@ -0,0 +1,43 @@
+#ifndef RTL865X_LOG_H
+#define RTL865X_LOG_H
+
+#if defined(CONFIG_RTL_LOG_DEBUG)
+
+ #if defined(LOG_ERROR)
+ #undef LOG_ERROR
+ #define LOG_ERROR(fmt, args...) do{ \
+ if(RTL_LogTypeMask.ERROR&&RTL_LogModuleMask.NIC&&LOG_LIMIT)scrlog_printk("NIC-ERROR:"fmt, ## args); \
+ }while(0)
+ #endif
+
+ #if defined(LOG_MEM_ERROR)
+ #undef LOG_MEM_ERROR
+ #define LOG_MEM_ERROR(fmt, args...) do{ \
+ if(RTL_LogTypeMask.ERROR&&RTL_LogErrorMask.MEM&&RTL_LogModuleMask.NIC&&LOG_LIMIT)scrlog_printk("NIC-MEM-ERROR:"fmt, ## args); \
+ }while(0)
+ #endif
+
+ #if defined(LOG_SKB_ERROR)
+ #undef LOG_SKB_ERROR
+ #define LOG_SKB_ERROR(fmt, args...) do{ \
+ if(RTL_LogTypeMask.ERROR&&RTL_LogErrorMask.SKB&&RTL_LogModuleMask.NIC&&LOG_LIMIT)scrlog_printk("NIC-SKB-ERROR:"fmt, ## args); \
+ }while(0)
+ #endif
+
+ #if defined(LOG_WARN)
+ #undef LOG_WARN
+ #define LOG_WARN(fmt, args...) do{ \
+ if(RTL_LogTypeMask.WARN&&RTL_LogModuleMask.NIC&&LOG_LIMIT)scrlog_printk("NIC-WARN:"fmt, ## args); \
+ }while(0)
+ #endif
+
+ #if defined(LOG_INFO)
+ #undef LOG_INFO
+ #define LOG_INFO(fmt, args...) do{ \
+ if(RTL_LogTypeMask.INFO&&RTL_LogModuleMask.NIC&&LOG_LIMIT)scrlog_printk("NIC-INFO:"fmt, ## args); \
+ }while(0)
+ #endif
+
+#endif
+
+#endif