📄 lib_at91.s79
字号:
NAME lib_at91
RTMODEL "__code_model", "small"
RTMODEL "__cpu_mode", "arm"
RTMODEL "__data_model", "absolute"
RTMODEL "__endian", "little"
RTMODEL "__rt_version", "2"
RTMODEL "__thumb_aware", "enabled"
RSEG CSTACK:DATA:NOROOT(2)
RSEG HUGE_I:HUGEDATA:SORT:NOROOT(2)
RSEG HUGE_ID:HUGECONST:SORT:NOROOT(2)
PUBWEAK `?*?HUGE_ID`
PUBWEAK ?init?tab?HUGE_I
PUBLIC PIO_DESC
PUBLIC Pio
PUBLIC TC0_DESC
PUBLIC TC1_DESC
PUBLIC TC2_DESC
PUBLIC TCB_DESC
PUBLIC USART0_DESC
PUBLIC USART1_DESC
PUBLIC at91_clock_close
FUNCTION at91_clock_close,0203H
PUBLIC at91_clock_get_status
FUNCTION at91_clock_get_status,0203H
PUBLIC at91_clock_open
FUNCTION at91_clock_open,0203H
PUBLIC at91_clock_set_mode
FUNCTION at91_clock_set_mode,0203H
LOCFRAME CSTACK, 4, STACK
PUBLIC at91_default_fiq_handler
FUNCTION at91_default_fiq_handler,0203H
PUBLIC at91_default_irq_handler
FUNCTION at91_default_irq_handler,0203H
PUBLIC at91_pio_close
FUNCTION at91_pio_close,0203H
PUBLIC at91_pio_open
FUNCTION at91_pio_open,0203H
PUBLIC at91_pio_read
FUNCTION at91_pio_read,0203H
LOCFRAME CSTACK, 20, STACK
PUBLIC at91_pio_set_mode
FUNCTION at91_pio_set_mode,0203H
PUBLIC at91_pio_write
FUNCTION at91_pio_write,0203H
PUBLIC at91_spurious_handler
FUNCTION at91_spurious_handler,0203H
PUBLIC at91_tc_close
FUNCTION at91_tc_close,0203H
LOCFRAME CSTACK, 4, STACK
PUBLIC at91_tc_get_status
FUNCTION at91_tc_get_status,0203H
PUBLIC at91_tc_open
FUNCTION at91_tc_open,0203H
LOCFRAME CSTACK, 24, STACK
PUBLIC at91_tc_read
FUNCTION at91_tc_read,0203H
PUBLIC at91_tc_set_mode
FUNCTION at91_tc_set_mode,0203H
PUBLIC at91_tc_trig_cmd
FUNCTION at91_tc_trig_cmd,0203H
LOCFRAME CSTACK, 4, STACK
PUBLIC at91_tc_write
FUNCTION at91_tc_write,0203H
PUBLIC at91_usart_close
FUNCTION at91_usart_close,0203H
LOCFRAME CSTACK, 12, STACK
PUBLIC at91_usart_get_status
FUNCTION at91_usart_get_status,0203H
PUBLIC at91_usart_open
FUNCTION at91_usart_open,0203H
LOCFRAME CSTACK, 24, STACK
PUBLIC at91_usart_read
FUNCTION at91_usart_read,0203H
PUBLIC at91_usart_receive_frame
FUNCTION at91_usart_receive_frame,0203H
LOCFRAME CSTACK, 8, STACK
PUBLIC at91_usart_send_frame
FUNCTION at91_usart_send_frame,0203H
LOCFRAME CSTACK, 4, STACK
PUBLIC at91_usart_trig_cmd
FUNCTION at91_usart_trig_cmd,0203H
PUBLIC at91_usart_write
FUNCTION at91_usart_write,0203H
RSEG HUGE_I:HUGEDATA:SORT:NOROOT(2)
Pio:
DS8 4
REQUIRE `?<Initializer for Pio>`
RSEG HUGE_C:HUGECONST:SORT:NOROOT(2)
PIO_DESC:
DC32 0FFFF0000H
DC8 8
DC8 31
DC8 0, 0
RSEG HUGE_C:HUGECONST:SORT:NOROOT(2)
USART0_DESC:
DC32 0FFFD0000H
DC32 PIO_DESC
DC8 15
DC8 14
DC8 13
DC8 2
RSEG HUGE_C:HUGECONST:SORT:NOROOT(2)
USART1_DESC:
DC32 0FFFCC000H
DC32 PIO_DESC
DC8 22
DC8 21
DC8 20
DC8 3
RSEG HUGE_C:HUGECONST:SORT:NOROOT(2)
TC0_DESC:
DC32 0FFFE0000H
DC32 PIO_DESC
DC8 4
DC8 1
DC8 2
DC8 0
RSEG HUGE_C:HUGECONST:SORT:NOROOT(2)
TC1_DESC:
DC32 0FFFE0040H
DC32 PIO_DESC
DC8 5
DC8 4
DC8 5
DC8 3
RSEG HUGE_C:HUGECONST:SORT:NOROOT(2)
TC2_DESC:
DC32 0FFFE0080H
DC32 PIO_DESC
DC8 6
DC8 7
DC8 8
DC8 6
RSEG HUGE_C:HUGECONST:SORT:NOROOT(2)
TCB_DESC:
DC32 TC0_DESC
DC32 TC1_DESC
DC32 TC2_DESC
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Names cfiNames0
CFI StackFrame CFA SP HUGEDATA
CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, SP:32, LR:32
CFI VirtualResource RET:32
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 4
CFI DataAlign 4
CFI ReturnAddress RET CODE
CFI CFA SP+0
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 SameValue
CFI R5 SameValue
CFI R6 SameValue
CFI R7 SameValue
CFI R8 SameValue
CFI R9 SameValue
CFI R10 SameValue
CFI R11 SameValue
CFI R12 Undefined
CFI LR Undefined
CFI RET LR
CFI EndCommon cfiCommon0
CFI Block cfiBlock0 Using cfiCommon0
CFI Function at91_pio_open
CODE32
at91_pio_open:
AND R3,R2,#+0xFF ;; Zero extend
TST R3,#+0x1
LDR R3,[R0, #+0]
STRNE R1,[R3, #+16]
STREQ R1,[R3, #+20]
AND R3,R2,#+0xFF ;; Zero extend
TST R3,#+0x2
LDR R3,[R0, #+0]
STRNE R1,[R3, #+32]
STREQ R1,[R3, #+36]
AND R3,R2,#+0xFF ;; Zero extend
TST R3,#+0x4
LDR R3,[R0, #+0]
STRNE R1,[R3, #+80]
STREQ R1,[R3, #+88]
AND R2,R2,#+0xFF ;; Zero extend
TST R2,#+0x8
LDR R2,[R0, #+0]
LDRNE R3,[R2, #+76]
STRNE R1,[R2, #+64]
STREQ R1,[R2, #+68]
B ??Subroutine0_0
CFI EndBlock cfiBlock0
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock1 Using cfiCommon0
CFI Function at91_pio_close
CODE32
at91_pio_close:
LDR R2,[R0, #+0]
STR R1,[R2, #+4]
MOV PC,LR ;; return
CFI EndBlock cfiBlock1
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock2 Using cfiCommon0
CFI Function at91_pio_write
CODE32
at91_pio_write:
CMP R2,#+0x1
LDR R2,[R0, #+0]
STREQ R1,[R2, #+52]
MOVEQ PC,LR ;; return
STR R1,[R2, #+48]
MOV PC,LR ;; return
CFI EndBlock cfiBlock2
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock3 Using cfiCommon0
CFI Function at91_pio_read
CODE32
at91_pio_read:
STMDB SP!,{R4-R7,LR} ;; Push
CFI RET Frame(CFA, -4)
CFI R7 Frame(CFA, -8)
CFI R6 Frame(CFA, -12)
CFI R5 Frame(CFA, -16)
CFI R4 Frame(CFA, -20)
CFI CFA SP+20
MOV R4,R0
MOV R5,R4
LDRB R0,[R5, #+4]
MVN R1,#+0xF3
SUB R1,R1,#+0xBF00
LDR R2,[R1, #+0]
MOV R1,#+0x1
AND R7,R2,R1, LSL R0
BL at91_clock_open
LDR R0,[R5, #+0]
LDR R6,[R0, #+60]
LDRB R0,[R5, #+4]
MOV R1,#+0x1
AND R1,R7,R1, LSL R0
CMP R1,#+0x0
BLEQ at91_clock_close
MOV R0,R6
LDMIA SP!,{R4-R7,PC} ;; return
CFI EndBlock cfiBlock3
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock4 Using cfiCommon0
CFI Function at91_pio_set_mode
CODE32
at91_pio_set_mode:
AND R3,R2,#+0xFF ;; Zero extend
TST R3,#+0x2
LDR R3,[R0, #+0]
STRNE R1,[R3, #+32]
STREQ R1,[R3, #+36]
AND R2,R2,#+0xFF ;; Zero extend
TST R2,#+0x4
LDR R2,[R0, #+0]
STRNE R1,[R2, #+80]
MOVNE PC,LR ;; return
STR R1,[R2, #+88]
MOV PC,LR ;; return
CFI EndBlock cfiBlock4
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock5 Using cfiCommon0
CFI Function at91_clock_set_mode
CODE32
at91_clock_set_mode:
STMDB SP!,{LR} ;; Push
CFI RET Frame(CFA, -4)
CFI CFA SP+4
CMP R0,#+0x1
BEQ ??at91_clock_set_mode_0
CMP R0,#+0x2
BEQ ??at91_clock_set_mode_1
CMP R0,#+0x3
BEQ ??at91_clock_set_mode_2
LDMIA SP!,{PC} ;; return
??at91_clock_set_mode_0:
MOV R0,#+0x1
MVN R1,#+0xFF
B ??at91_clock_set_mode_3
??at91_clock_set_mode_1:
MVN R0,#+0x0
MVN R1,#+0xFB
B ??at91_clock_set_mode_3
??at91_clock_set_mode_2:
MVN R0,#+0x0
MVN R1,#+0xF7
??at91_clock_set_mode_3:
SUB R1,R1,#+0xBF00
STR R0,[R1, #+0]
LDMIA SP!,{PC} ;; return
CFI EndBlock cfiBlock5
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock6 Using cfiCommon0
CFI Function at91_clock_open
CODE32
at91_clock_open:
MOV R1,#+0x1
AND R0,R0,#+0xFF ;; Zero extend
MOV R0,R1, LSL R0
MVN R1,#+0xFB
B ??Subroutine1_0
CFI EndBlock cfiBlock6
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock7 Using cfiCommon0
CFI Function at91_clock_close
CODE32
at91_clock_close:
REQUIRE ??Subroutine1_0
MOV R1,#+0x1
AND R0,R0,#+0xFF ;; Zero extend
MOV R0,R1, LSL R0
MVN R1,#+0xF7
CFI EndBlock cfiBlock7
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock8 Using cfiCommon0
CFI NoFunction
??Subroutine1_0:
SUB R1,R1,#+0xBF00
??Subroutine1_1:
STR R0,[R1, #+0]
MOV PC,LR ;; return
CFI EndBlock cfiBlock8
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock9 Using cfiCommon0
CFI Function at91_clock_get_status
CODE32
at91_clock_get_status:
MVN R1,#+0xF3
SUB R1,R1,#+0xBF00
LDR R2,[R1, #+0]
MOV R1,#+0x1
AND R0,R0,#+0xFF ;; Zero extend
AND R0,R2,R1, LSL R0
MOV PC,LR ;; return
CFI EndBlock cfiBlock9
RSEG NEARFUNC_A:CODE:NOROOT(2)
CFI Block cfiBlock10 Using cfiCommon0
CFI Function at91_usart_open
CODE32
at91_usart_open:
STMDB SP!,{R4-R8,LR} ;; Push
CFI RET Frame(CFA, -4)
CFI R8 Frame(CFA, -8)
CFI R7 Frame(CFA, -12)
CFI R6 Frame(CFA, -16)
CFI R5 Frame(CFA, -20)
CFI R4 Frame(CFA, -24)
CFI CFA SP+24
MOV R4,R0
MOV R5,R1
MOV R6,R2
MOV R7,R3
MOV R8,R4
LDRB R0,[R8, #+11]
BL at91_clock_open
MOV R0,#+0x20
ADD R0,R0,#+0x40000
TST R5,R0
MOV R0,#+0x1
LDRB R1,[R8, #+9]
MOV R2,R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -