128 lines
2.5 KiB
ArmAsm
128 lines
2.5 KiB
ArmAsm
.file 1 "xmcs_epon.c"
|
|
.section .mdebug.abi32
|
|
.previous
|
|
.nan legacy
|
|
.gnu_attribute 4, 3
|
|
#APP
|
|
.macro _ssnop; sll $0, $0, 1; .endm
|
|
.macro _ehb; sll $0, $0, 3; .endm
|
|
.macro mtc0_tlbw_hazard; _ehb; .endm
|
|
.macro tlbw_use_hazard; _ehb; .endm
|
|
.macro tlb_probe_hazard; _ehb; .endm
|
|
.macro irq_enable_hazard; _ehb; .endm
|
|
.macro irq_disable_hazard; _ehb; .endm
|
|
.macro back_to_back_c0_hazard; _ehb; .endm
|
|
.macro enable_fpu_hazard; _ehb; .endm
|
|
.macro disable_fpu_hazard; _ehb; .endm
|
|
.macro raw_local_irq_enable
|
|
.set push
|
|
.set reorder
|
|
.set noat
|
|
mfc0 $1, $2, 1 # SMTC - clear TCStatus.IXMT
|
|
ori $1, 0x400
|
|
xori $1, 0x400
|
|
mtc0 $1, $2, 1
|
|
irq_enable_hazard
|
|
.set pop
|
|
.endm
|
|
.macro raw_local_irq_disable
|
|
.set push
|
|
.set noat
|
|
mfc0 $1, $2, 1
|
|
ori $1, 0x400
|
|
.set noreorder
|
|
mtc0 $1, $2, 1
|
|
irq_disable_hazard
|
|
.set pop
|
|
.endm
|
|
|
|
.macro raw_local_save_flags flags
|
|
.set push
|
|
.set reorder
|
|
mfc0 \flags, $2, 1
|
|
.set pop
|
|
.endm
|
|
|
|
.macro raw_local_irq_save result
|
|
.set push
|
|
.set reorder
|
|
.set noat
|
|
mfc0 \result, $2, 1
|
|
ori $1, \result, 0x400
|
|
.set noreorder
|
|
mtc0 $1, $2, 1
|
|
andi \result, \result, 0x400
|
|
irq_disable_hazard
|
|
.set pop
|
|
.endm
|
|
|
|
.macro raw_local_irq_restore flags
|
|
.set push
|
|
.set noreorder
|
|
.set noat
|
|
mfc0 $1, $2, 1
|
|
andi \flags, 0x400
|
|
ori $1, 0x400
|
|
xori $1, 0x400
|
|
or \flags, $1
|
|
mtc0 \flags, $2, 1
|
|
irq_disable_hazard
|
|
.set pop
|
|
.endm
|
|
|
|
.rdata
|
|
.align 2
|
|
$LC0:
|
|
.ascii "[%lu0ms]No such I/O command, cmd: %d\012\000"
|
|
#NO_APP
|
|
.section .text.epon_cmd_proc,"ax",@progbits
|
|
.align 2
|
|
.globl epon_cmd_proc
|
|
.set nomips16
|
|
.set nomicromips
|
|
.ent epon_cmd_proc
|
|
.type epon_cmd_proc, @function
|
|
epon_cmd_proc:
|
|
.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)
|
|
sw $4,24($sp)
|
|
sw $5,28($sp)
|
|
lui $2,%hi(gpPonSysData)
|
|
lw $3,%lo(gpPonSysData)($2)
|
|
li $2,65536 # 0x10000
|
|
addu $2,$3,$2
|
|
lhu $2,-30816($2)
|
|
andi $2,$2,0x1
|
|
beq $2,$0,$L2
|
|
nop
|
|
|
|
lui $2,%hi(jiffies)
|
|
lw $3,%lo(jiffies)($2)
|
|
lui $2,%hi($LC0)
|
|
addiu $4,$2,%lo($LC0)
|
|
move $5,$3
|
|
lw $6,24($sp)
|
|
lui $2,%hi(printk)
|
|
addiu $2,$2,%lo(printk)
|
|
jalr $2
|
|
nop
|
|
|
|
$L2:
|
|
nop
|
|
move $2,$0
|
|
lw $31,20($sp)
|
|
addiu $sp,$sp,24
|
|
j $31
|
|
nop
|
|
|
|
.set macro
|
|
.set reorder
|
|
.end epon_cmd_proc
|
|
.size epon_cmd_proc, .-epon_cmd_proc
|
|
.ident "GCC: (Buildroot 2015.08.1) 4.9.3"
|