lib_udp.paf.arm
来自「ARM9200开发板的ROM boot程序源码1.0」· ARM 代码 · 共 2,376 行 · 第 1/2 页
ARM
2,376 行
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#define APMC_CPU_EN 0x1
#line 19
#define APMC_USB_EN 0x2
#line 19
#define APMC_PCK0 0x100
#line 19
#define APMC_PCK1 0x100
#line 19
#define APMC_PCK2 0x100
#line 19
#define APMC_PCK3 0x100
#line 19
#define APMC_PCK4 0x100
#line 19
#define APMC_PCK5 0x100
#line 19
#define APMC_PCK6 0x100
#line 19
#define APMC_PCK7 0x100
#line 19
#line 19
#define APMC_SSC0 0x4
#line 19
#define APMC_SSC1 0x8
#line 19
#define APMC_SSC2 0x10
#line 19
#define APMC_US0 0x20
#line 19
#define APMC_US1 0x40
#line 19
#define APMC_US2 0x80
#line 19
#define APMC_US3 0x100
#line 19
#define APMC_SPI0 0x200
#line 19
#define APMC_SPI1 0x400
#line 19
#define APMC_TC0 0x800
#line 19
#define APMC_TC1 0x1000
#line 19
#define APMC_TC2 0x2000
#line 19
#define APMC_TC3 0x4000
#line 19
#define APMC_TC4 0x8000
#line 19
#define APMC_TC5 0x10000
#line 19
#define APMC_PIO0 0x20000
#line 19
#define APMC_PIO1 0x40000
#line 19
#define APMC_DAC 0x80000
#line 19
#define APMC_ADC0 0x100000
#line 19
#define APMC_ADC1 0x200000
#line 19
#define APMC_ADC2 0x400000
#line 19
#define APMC_ADC3 0x800000
#line 19
#define APMC_USB 0x1000000
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#define APMC_MOSCEN 0x1
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#define APMC_DIVIDER_NONE 0x0
#line 19
#define APMC_DIVIDER_INPUT 0x1
#line 19
#line 19
#define APMC_CLK_RANGE_40_TO_250MHZ 0x0000
#line 19
#define APMC_CLK_RANGE_20_TO_40MHZ 0x4000
#line 19
#define APMC_CLK_RANGE_10_TO_20MHZ 0x8000
#line 19
#define APMC_CLK_RANGE_5_TO_10MHZ 0xC000
#line 19
#line 19
#define APCM_USB_PLL 0x20000000
#line 19
#define APMC_PLL_TEST 0x40000000
#line 19
#define APMC_PLL_EN 0x80000000
#line 19
#line 19
#define APMC_PLL_MULT_FACTOR_SHIFT 16
#line 19
#define APMC_CLK_RANGE_OUT_SHIFT 14
#line 19
#define APMC_PLL_STARTUP_MAX_SHIFT 8
#line 19
#line 19
#line 19
#line 19
#line 19
#define APMC_MCK 0x0
#line 19
#define APMC_MCKS_32K 0x0
#line 19
#define APMC_MCKS_MAIN 0x1
#line 19
#define APMC_MCKS_PLLA 0x2
#line 19
#define APMC_MCKS_PLLB 0x3
#line 19
#line 19
#define APMC_DIVMCK_NONE 0x0
#line 19
#define APMC_DIVMCK_DIV2 0x04
#line 19
#define APMC_DIVMCK_DIV4 0x08
#line 19
#define APMC_DIVMCK_DIV8 0x0C
#line 19
#define APMC_DIVMCK_DIV16 0x10
#line 19
#define APMC_DIVMCK_DIV32 0x14
#line 19
#define APMC_DIVMCK_DIV64 0x18
#line 19
#line 19
#define APMC_DIVMCK_SHIFT 2
#line 19
#line 19
#line 19
#line 19
#line 19
#define APMC_PCKS_32K 0x0
#line 19
#define APMC_PCKS_MAIN 0x1
#line 19
#define APMC_PCKS_PLLA 0x2
#line 19
#define APMC_PCKS_PLLB 0x3
#line 19
#line 19
#define APMC_DIVPCK_NONE 0x0
#line 19
#define APMC_DIVPCK_DIV2 0x04
#line 19
#define APMC_DIVPCK_DIV4 0x08
#line 19
#define APMC_DIVPCK_DIV8 0x0C
#line 19
#define APMC_DIVPCK_DIV16 0x10
#line 19
#define APMC_DIVPCK_DIV32 0x14
#line 19
#define APMC_DIVPCK_DIV64 0x18
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#define APMC_MAIN_RDY 0x1
#line 19
#define APMC_PLLA_RDY 0x2
#line 19
#define APMC_PLLB_RDY 0x4
#line 19
#define APMC_MCK_RDY 0x8
#line 19
#define APMC_PCK0_RDY 0x100
#line 19
#define APMC_PCK1_RDY 0x200
#line 19
#define APMC_PCK2_RDY 0x400
#line 19
#define APMC_PCK3_RDY 0x800
#line 19
#define APMC_PCK4_RDY 0x1000
#line 19
#define APMC_PCK5_RDY 0x2000
#line 19
#define APMC_PCK6_RDY 0x4000
#line 19
#define APMC_PCK7_RDY 0x8000
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
END
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#define ST_BASE 0xFFFFF400
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#define ST_WDRST 0x1
#line 19
#line 19
#line 19
#line 19
#line 19
#define ST_RSTEN 0x10000
#line 19
#define ST_EXTEN 0x20000
#line 19
#line 19
#line 19
#line 19
#line 19
#define ST_PITS 0x1
#line 19
#define ST_WDOVF 0x2
#line 19
#define ST_RTTINC 0x4
#line 19
#define ST_ALMS 0x8
#line 19
#line 19
#line 19
END
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#line 19
#define PA0 (1 << 0)
#line 19
#define PA1 (1 << 1)
#line 19
#define PA2 (1 << 2)
#line 19
#define PA3 (1 << 3)
#line 19
#define PA4 (1 << 4)
#line 19
#define PA5 (1 << 5)
#line 19
#define PA6 (1 << 6)
#line 19
#define PA7 (1 << 7)
#line 19
#define PA8 (1 << 8)
#line 19
#define PA9 (1 << 9)
#line 19
#define PA10 (1 << 10)
#line 19
#define PA11 (1 << 11)
#line 19
#define PA12 (1 << 12)
#line 19
#define PA13 (1 << 13)
#line 19
#define PA14 (1 << 14)
#line 19
#define PA15 (1 << 15)
#line 19
#define PA16 (1 << 16)
#line 19
#define PA17 (1 << 17)
#line 19
#define PA18 (1 << 18)
#line 19
#define PA19 (1 << 19)
#line 19
#define PA20 (1 << 20)
#line 19
#define PA21 (1 << 21)
#line 19
#define PA22 (1 << 22)
#line 19
#define PA23 (1 << 23)
#line 19
#define PA24 (1 << 24)
#line 19
#define PA25 (1 << 25)
#line 19
#define PA26 (1 << 26)
#line 19
#define PA27 (1 << 27)
#line 19
#define PA28 (1 << 28)
#line 19
#define PA29 (1 << 29)
#line 19
#define PA30 (1 << 30)
#line 19
#define PA31 (1 << 31)
#line 19
#line 19
END
#line 19
#line 19
#line 19
#line 19
END
#line 19
#line 20
BeginFiqHandler
ldr r9, [r8, 0x20]
mov r10, sp
ands r11, r9, UDP_EP0INT
ldmneia r10, {r11, r12, pc}
ands r11, r9, UDP_EP1INT
ldmneia r10, {r11, r12, pc}
ands r11, r9, UDP_EP2INT
ldmneia r10, {r11, r12, pc}
b dma_notify_isr
dma_achieve_fiq
sub pc, lr, 4
dma_notify_isr
ldr r9, =AIC_BASE
mov r10, AIC_UDP_ISR
str r10, [r9, 324]
str r10, [r9, 328]
sub pc, lr, 4
fiq_udp_ep0
ldr r9, [r8, 0x60]
#line 73
fiq_udp_ep0_rcv
#line 73
#line 73
ands r10, r9, UDP_RCV_DATA_BANK0 | UDP_RCV_DATA_BANK1
#line 73
bne fiq_udp_ep0_rcvexit
#line 73
#line 73
#line 73
stmfd sp!, {r9, r10, lr}
#line 73
bl dma_rx
#line 73
ldmfd sp!, {r9, r10, lr}
#line 73
#line 73
#line 73
eor r10, r10, r9
#line 73
ldr r10, [r8, 0x60]
#line 73
#line 73
#line 73
tst r12, 1
#line 73
bne dma_achieve_fiq
#line 73
beq dma_notify_isr
#line 73
#line 73
fiq_udp_ep0_rcvexit
#line 73
#line 73
ldr r9, [r8, 0x60]
#line 75
fiq_udp_ep0_tx
#line 75
#line 75
ands r10, r9, UDP_TXCOMPLETE
#line 75
bne fiq_udp_ep0_txexit
#line 75
#line 75
#line 75
stmfd sp!, {r9, r10, lr}
#line 75
bl dma_tx
#line 75
ldmfd sp!, {r9, r10, lr}
#line 75
#line 75
#line 75
eor r10, r10, r9
#line 75
ldr r10, [r8, 0x60]
#line 75
#line 75
#line 75
tst r12, 1
#line 75
bne dma_achieve_fiq
#line 75
beq dma_notify_isr
#line 75
#line 75
fiq_udp_ep0_txexit
#line 75
b dma_notify_isr
fiq_udp_ep1
ldr r9, [r8, 0x64]
#line 80
fiq_udp_ep1_rcv
#line 80
#line 80
ands r10, r9, UDP_RCV_DATA_BANK0 | UDP_RCV_DATA_BANK1
#line 80
bne fiq_udp_ep1_rcvexit
#line 80
#line 80
#line 80
stmfd sp!, {r9, r10, lr}
#line 80
bl dma_rx
#line 80
ldmfd sp!, {r9, r10, lr}
#line 80
#line 80
#line 80
eor r10, r10, r9
#line 80
ldr r10, [r8, 0x60]
#line 80
#line 80
#line 80
tst r12, 1
#line 80
bne dma_achieve_fiq
#line 80
beq dma_notify_isr
#line 80
#line 80
fiq_udp_ep1_rcvexit
#line 80
#line 80
b dma_notify_isr
fiq_udp_ep2
ldr r9, [r8, 0x68]
#line 85
fiq_udp_ep2_rcv
#line 85
#line 85
ands r10, r9, UDP_RCV_DATA_BANK0 | UDP_RCV_DATA_BANK1
#line 85
bne fiq_udp_ep2_rcvexit
#line 85
#line 85
#line 85
stmfd sp!, {r9, r10, lr}
#line 85
bl dma_rx
#line 85
ldmfd sp!, {r9, r10, lr}
#line 85
#line 85
#line 85
eor r10, r10, r9
#line 85
ldr r10, [r8, 0x60]
#line 85
#line 85
#line 85
tst r12, 1
#line 85
bne dma_achieve_fiq
#line 85
beq dma_notify_isr
#line 85
#line 85
fiq_udp_ep2_rcvexit
#line 85
#line 85
b dma_notify_isr
dma_rx
mov r9, r9, LSR 16
cmp r9, r12
movge r9, r12
add r12, r12, r9
str r12, [r10, 0]
add r12, r11, r9
str r11, [r10, 1]
#line 105
#line 105
#line 105
movs r10, r9, LSR 7
#line 105
beq dma_rxloop64
#line 105
dma_rxloop128
#line 105
#line 105
#line 105
#line 105
#line 105
#line 105
.rept 128
#line 105
ldrb r12, [r8]
#line 105
strb r12, [r11],1
#line 105
.endr
#line 105
#line 105
#line 105
subs r10, r10, 1
#line 105
beq dma_rxloop128
#line 105
and r9, r9, 0x7F
#line 105
#line 105
#line 105
movs r10, r9, LSR 6
#line 105
beq dma_rxloop32
#line 105
dma_rxloop64
#line 105
#line 105
#line 105
#line 105
#line 105
#line 105
.rept 64
#line 105
ldrb r12, [r8]
#line 105
strb r12, [r11],1
#line 105
.endr
#line 105
#line 105
#line 105
subs r10, r10, 1
#line 105
beq dma_rxloop64
#line 105
and r9, r9, 0x3F
#line 105
#line 105
#line 105
movs r10, r9, LSR 5
#line 105
beq dma_rxloop8
#line 105
dma_rxloop32
#line 105
#line 105
#line 105
#line 105
#line 105
#line 105
.rept 32
#line 105
ldrb r12, [r8]
#line 105
strb r12, [r11],1
#line 105
.endr
#line 105
#line 105
#line 105
subs r10, r10, 1
#line 105
beq dma_rxloop32
#line 105
and r9, r9, 0x1F
#line 105
#line 105
#line 105
movs r10, r9, LSR 3
#line 105
beq dma_rxloop1
#line 105
dma_rxloop8
#line 105
#line 105
#line 105
#line 105
#line 105
#line 105
.rept 8
#line 105
ldrb r12, [r8]
#line 105
strb r12, [r11],1
#line 105
.endr
#line 105
#line 105
#line 105
subs r10, r10, 1
#line 105
beq dma_rxloop8
#line 105
and r9, r9, 0x7
#line 105
#line 105
#line 105
beq dma_rxexit
#line 105
dma_rxloop1
#line 105
#line 105
#line 105
#line 105
#line 105
#line 105
.rept 1
#line 105
ldrb r12, [r8]
#line 105
strb r12, [r11],1
#line 105
.endr
#line 105
#line 105
#line 105
subs r9, r9, 1
#line 105
beq dma_rxloop1
#line 105
#line 105
dma_rxexit
#line 105
ret
dma_tx
mov r9, r9, LSR 16
cmp r9, r12
movge r9, r12
sub r12, r12, r9
str r12, [r10, 0]
add r12, r11, r9
str r11, [r10, 1]
#line 126
#line 126
#line 126
movs r10, r9, LSR 7
#line 126
beq dma_txloop64
#line 126
dma_txloop128
#line 126
#line 126
#line 126
#line 126
#line 126
#line 126
.rept 128
#line 126
ldrb r12, [r8], 1
#line 126
strb r12, [r11]
#line 126
.endr
#line 126
#line 126
#line 126
subs r10, r10, 1
#line 126
beq dma_txloop128
#line 126
and r9, r9, 0x7F
#line 126
#line 126
#line 126
movs r10, r9, LSR 6
#line 126
beq dma_txloop32
#line 126
dma_txloop64
#line 126
#line 126
#line 126
#line 126
#line 126
#line 126
.rept 64
#line 126
ldrb r12, [r8], 1
#line 126
strb r12, [r11]
#line 126
.endr
#line 126
#line 126
#line 126
subs r10, r10, 1
#line 126
beq dma_txloop64
#line 126
and r9, r9, 0x3F
#line 126
#line 126
#line 126
movs r10, r9, LSR 5
#line 126
beq dma_txloop8
#line 126
dma_txloop32
#line 126
#line 126
#line 126
#line 126
#line 126
#line 126
.rept 32
#line 126
ldrb r12, [r8], 1
#line 126
strb r12, [r11]
#line 126
.endr
#line 126
#line 126
#line 126
subs r10, r10, 1
#line 126
beq dma_txloop32
#line 126
and r9, r9, 0x1F
#line 126
#line 126
#line 126
movs r10, r9, LSR 3
#line 126
beq dma_txloop1
#line 126
dma_txloop8
#line 126
#line 126
#line 126
#line 126
#line 126
#line 126
.rept 8
#line 126
ldrb r12, [r8], 1
#line 126
strb r12, [r11]
#line 126
.endr
#line 126
#line 126
#line 126
subs r10, r10, 1
#line 126
beq dma_txloop8
#line 126
and r9, r9, 0x7
#line 126
#line 126
#line 126
beq dma_txexit
#line 126
dma_txloop1
#line 126
#line 126
#line 126
#line 126
#line 126
#line 126
.rept 1
#line 126
ldrb r12, [r8], 1
#line 126
strb r12, [r11]
#line 126
.endr
#line 126
#line 126
#line 126
subs r9, r9, 1
#line 126
beq dma_txloop1
#line 126
#line 126
dma_txexit
#line 126
ret
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?