diff options
author | Roman Yeryomin <roman@advem.lv> | 2013-02-06 02:59:31 +0200 |
---|---|---|
committer | Roman Yeryomin <roman@advem.lv> | 2013-02-06 02:59:31 +0200 |
commit | 691cc9529efe8ea7abaab170c452ae4470bf3ac2 (patch) | |
tree | 8d18d131720975fc63c8c2abc7bd933efe503e5f /target/linux/realtek/files/drivers/net/rtl819x | |
parent | 62da0fe6152d0025e570ca41a6f9ae68df7da89b (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')
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
|