📄 lib_at91.s
字号:
.file "c:/at91/software/projects/bench/source/lib_at91.c"
.option svr4
.option arm_code
.option inter
.ident "hc4.5a -O7 \n"
.option noswst
.seg ".rodata1",rodata
.L00STRING2:
.align 4
.global PIO_DESC
PIO_DESC:
.size PIO_DESC,0x8
.type PIO_DESC, @object
.long 0xffff0000
.byte 0x8
.byte 0x1f
.block 0x2
.align 4
.global USART0_DESC
USART0_DESC:
.size USART0_DESC,0xc
.type USART0_DESC, @object
.long 0xfffd0000
.long PIO_DESC
.byte 0xf
.byte 0xe
.byte 0xd
.byte 0x2
.align 4
.global USART1_DESC
USART1_DESC:
.size USART1_DESC,0xc
.type USART1_DESC, @object
.long 0xfffcc000
.long PIO_DESC
.byte 0x16
.byte 0x15
.byte 0x14
.byte 0x3
.align 4
.global TC0_DESC
TC0_DESC:
.size TC0_DESC,0xc
.type TC0_DESC, @object
.long 0xfffe0000
.long PIO_DESC
.byte 0x4
.byte 0x1
.byte 0x2
.byte 0x0
.align 4
.global TC1_DESC
TC1_DESC:
.size TC1_DESC,0xc
.type TC1_DESC, @object
.long 0xfffe0040
.long PIO_DESC
.byte 0x5
.byte 0x4
.byte 0x5
.byte 0x3
.align 4
.global TC2_DESC
TC2_DESC:
.size TC2_DESC,0xc
.type TC2_DESC, @object
.long 0xfffe0080
.long PIO_DESC
.byte 0x6
.byte 0x7
.byte 0x8
.byte 0x6
.align 4
.global TCB_DESC
TCB_DESC:
.size TCB_DESC,0xc
.type TCB_DESC, @object
.long TC0_DESC
.long TC1_DESC
.long TC2_DESC
.seg ".data",data
.L00DATA:
.align 4
.global Pio
Pio:
.size Pio,0x4
.type Pio, @object
.long 0xffff0000
.seg ".text",text
.option code32,inter
.L00TEXT:
;-------------| at91_spurious_handler |-------------------
.align 4
.global at91_spurious_handler
at91_spurious_handler:
.cfa_bf at91_spurious_handler
.L0014:
b .L0014
.cfa_ef
.type at91_spurious_handler, @function
.size at91_spurious_handler, . - at91_spurious_handler
;-------------| at91_default_irq_handler |-------------------
.align 4
.global at91_default_irq_handler
at91_default_irq_handler:
.cfa_bf at91_default_irq_handler
.L0024:
b .L0024
.cfa_ef
.type at91_default_irq_handler, @function
.size at91_default_irq_handler, . - at91_default_irq_handler
;-------------| at91_default_fiq_handler |-------------------
.align 4
.global at91_default_fiq_handler
at91_default_fiq_handler:
.cfa_bf at91_default_fiq_handler
.L0034:
b .L0034
.cfa_ef
.type at91_default_fiq_handler, @function
.size at91_default_fiq_handler, . - at91_default_fiq_handler
;-------------| at91_pio_open |-------------------
.align 4
.global at91_pio_open
at91_pio_open:
.cfa_bf at91_pio_open
tsts %r2,#1
ldr %ip,[%r0, #0]
beq .L0085
tsts %r2,#2
str %r1,[%ip, #16]
bne .L0087
.L0088:
tsts %r2,#4
str %r1,[%ip, #36]
beq .L00811
.L00810:
tsts %r2,#8
str %r1,[%ip, #0x50]
bne .L00813
.L00814:
str %r1,[%ip, #0x44]
str %r1,[%ip, #0]
bx %lr
.L0085:
tsts %r2,#2
str %r1,[%ip, #20]
beq .L0088
.L0087:
tsts %r2,#4
str %r1,[%ip, #32]
bne .L00810
.L00811:
tsts %r2,#8
str %r1,[%ip, #0x58]
beq .L00814
.L00813:
ldr %r3,[%ip, #0x4c]
str %r1,[%ip, #64]
str %r1,[%ip, #0]
bx %lr
.cfa_ef
.type at91_pio_open, @function
.size at91_pio_open, . - at91_pio_open
;-------------| at91_pio_close |-------------------
.align 4
.global at91_pio_close
at91_pio_close:
.cfa_bf at91_pio_close
ldr %ip,[%r0, #0]
str %r1,[%ip, #4]
bx %lr
.cfa_ef
.type at91_pio_close, @function
.size at91_pio_close, . - at91_pio_close
;-------------| at91_pio_write |-------------------
.align 4
.global at91_pio_write
at91_pio_write:
.cfa_bf at91_pio_write
ldr %ip,[%r0, #0]
cmp %r2,#1
strne %r1,[%ip, #48]
streq %r1,[%ip, #52]
bx %lr
.cfa_ef
.type at91_pio_write, @function
.size at91_pio_write, . - at91_pio_write
;-------------| at91_pio_read |-------------------
.align 4
.global at91_pio_read
at91_pio_read:
.cfa_bf at91_pio_read
ldrb %r3,[%r0, #4]
mov %ip,#1
mvn %r2,#255
mov %r3,%ip,lsl %r3
sub %r2,%r2,#0xbf00
ldr %ip,[%r2, #12]
str %r3,[%r2, #4]
and %r1,%ip,%r3
ldr %ip,[%r0, #0]
cmp %r1,#0
ldr %r0,[%ip, #60]
streq %r3,[%r2, #8]
bx %lr
.cfa_ef
.type at91_pio_read, @function
.size at91_pio_read, . - at91_pio_read
;-------------| at91_pio_set_mode |-------------------
.align 4
.global at91_pio_set_mode
at91_pio_set_mode:
.cfa_bf at91_pio_set_mode
tsts %r2,#2
ldr %ip,[%r0, #0]
beq .L0125
str %r1,[%ip, #32]
tsts %r2,#4
streq %r1,[%ip, #0x58]
strne %r1,[%ip, #0x50]
bx %lr
str %r1,[%ip, #0x58]
bx %lr
.L0125:
str %r1,[%ip, #36]
tsts %r2,#4
streq %r1,[%ip, #0x58]
strne %r1,[%ip, #0x50]
bx %lr
str %r1,[%ip, #0x50]
bx %lr
.cfa_ef
.type at91_pio_set_mode, @function
.size at91_pio_set_mode, . - at91_pio_set_mode
;-------------| at91_clock_set_mode |-------------------
.align 4
.global at91_clock_set_mode
at91_clock_set_mode:
.cfa_bf at91_clock_set_mode
cmp %r0,#1
bne .L0148
mvn %ip,#255
mov %r3,#1
sub %ip,%ip,#0xbf00
str %r3,[%ip, #0]
b .L01411
.L0145:
mvn %ip,#255
mvn %r3,#0
sub %ip,%ip,#0xbf00
str %r3,[%ip, #4]
b .L01411
.L0146:
mvn %ip,#255
mvn %r3,#0
sub %ip,%ip,#0xbf00
str %r3,[%ip, #8]
b .L01411
.L0148:
cmp %r0,#2
beq .L0145
cmp %r0,#3
beq .L0146
.L01411:
bx %lr
.cfa_ef
.type at91_clock_set_mode, @function
.size at91_clock_set_mode, . - at91_clock_set_mode
;-------------| at91_clock_get_status |-------------------
.align 4
.global at91_clock_get_status
at91_clock_get_status:
.cfa_bf at91_clock_get_status
mvn %ip,#255
sub %ip,%ip,#0xbf00
ldr %ip,[%ip, #12]
mov %r3,#1
and %r0,%ip,%r3,lsl %r0
bx %lr
.cfa_ef
.type at91_clock_get_status, @function
.size at91_clock_get_status, . - at91_clock_get_status
;-------------| at91_clock_open |-------------------
.align 4
.global at91_clock_open
at91_clock_open:
.cfa_bf at91_clock_open
mov %ip,#1
mov %r3,%ip,lsl %r0
mvn %ip,#255
sub %ip,%ip,#0xbf00
str %r3,[%ip, #4]
bx %lr
.cfa_ef
.type at91_clock_open, @function
.size at91_clock_open, . - at91_clock_open
;-------------| at91_clock_close |-------------------
.align 4
.global at91_clock_close
at91_clock_close:
.cfa_bf at91_clock_close
mov %ip,#1
mov %r3,%ip,lsl %r0
mvn %ip,#255
sub %ip,%ip,#0xbf00
str %r3,[%ip, #8]
bx %lr
.cfa_ef
.type at91_clock_close, @function
.size at91_clock_close, . - at91_clock_close
;-------------| at91_usart_open |-------------------
.align 4
.global at91_usart_open
at91_usart_open:
.cfa_bf at91_usart_open
stmdb %sp!,{%r8,%r9,%lr}
.cfa_push {%r8,%r9,%lr}
ldrb %ip,[%r0, #11]
mov %lr,#1
mov %r8,%lr,lsl %ip
mvn %ip,#255
sub %ip,%ip,#0xbf00
str %r8,[%ip, #4]
mov %ip,#32
add %ip,%ip,#0x40000
tsts %r1,%ip
ldrb %ip,[%r0, #9]
ldr %r9,[%r0, #4]
mov %r8,%lr,lsl %ip
ldrb %ip,[%r0, #8]
orrne %r8,%r8,%lr,lsl %ip
ldrneb %ip,[%r0, #10]
orr %lr,%r8,%lr,lsl %ip
ldr %ip,[%r9, #0]
str %lr,[%ip, #4]
mov %ip,#172
ldr %r0,[%r0, #0]
str %ip,[%r0, #0]
mov %ip,#0
str %ip,[%r0, #52]
str %ip,[%r0, #60]
str %r2,[%r0, #32]
str %r1,[%r0, #4]
str %r3,[%r0, #40]
mov %ip,#80
str %ip,[%r0, #0]
.cfa_remember_state
ldmia %sp!,{%r8,%r9,%ip}
.cfa_pop {%r8,%r9,%ip}
bx %ip
.cfa_restore_state
.cfa_ef
.type at91_usart_open, @function
.size at91_usart_open, . - at91_usart_open
;-------------| at91_usart_close |-------------------
.align 4
.global at91_usart_close
at91_usart_close:
.cfa_bf at91_usart_close
stmdb %sp!,{%r8,%lr}
.cfa_push {%r8,%lr}
mov %r8,%r0
ldrb %ip,[%r8, #11]
mov %r3,#1
mov %r2,%r3,lsl %ip
mvn %ip,#255
sub %ip,%ip,#0xbf00
str %r2,[%ip, #8]
ldrb %ip,[%r8, #9]
ldr %r0,[%r8, #4]
mov %r2,%r3,lsl %ip
ldrb %ip,[%r8, #8]
orr %r2,%r2,%r3,lsl %ip
ldrb %ip,[%r8, #10]
orr %r1,%r2,%r3,lsl %ip
mov %r2,#0
bl at91_pio_open
mvn %r3,#0
ldr %ip,[%r8, #0]
str %r3,[%ip, #12]
mov %r3,#0
str %r3,[%ip, #52]
str %r3,[%ip, #60]
mov %r3,#172
str %r3,[%ip, #0]
.cfa_remember_state
ldmia %sp!,{%r8,%ip}
.cfa_pop {%r8,%ip}
bx %ip
.cfa_restore_state
.cfa_ef
.type at91_usart_close, @function
.size at91_usart_close, . - at91_usart_close
;-------------| at91_usart_get_status |-------------------
.align 4
.global at91_usart_get_status
at91_usart_get_status:
.cfa_bf at91_usart_get_status
ldr %ip,[%r0, #0]
ldr %r0,[%ip, #20]
bx %lr
.cfa_ef
.type at91_usart_get_status, @function
.size at91_usart_get_status, . - at91_usart_get_status
;-------------| at91_usart_trig_cmd |-------------------
.align 4
.global at91_usart_trig_cmd
at91_usart_trig_cmd:
.cfa_bf at91_usart_trig_cmd
ldr %ip,[%r0, #0]
str %r1,[%ip, #0]
bx %lr
.cfa_ef
.type at91_usart_trig_cmd, @function
.size at91_usart_trig_cmd, . - at91_usart_trig_cmd
;-------------| at91_usart_write |-------------------
.align 4
.global at91_usart_write
at91_usart_write:
.cfa_bf at91_usart_write
ldr %ip,[%r0, #0]
str %r1,[%ip, #28]
bx %lr
.cfa_ef
.type at91_usart_write, @function
.size at91_usart_write, . - at91_usart_write
;-------------| at91_usart_read |-------------------
.align 4
.global at91_usart_read
at91_usart_read:
.cfa_bf at91_usart_read
ldr %ip,[%r0, #0]
ldr %ip,[%ip, #24]
str %ip,[%r1, #0]
bx %lr
.cfa_ef
.type at91_usart_read, @function
.size at91_usart_read, . - at91_usart_read
;-------------| at91_usart_receive_frame |-------------------
.align 4
.global at91_usart_receive_frame
at91_usart_receive_frame:
.cfa_bf at91_usart_receive_frame
add %ip,%r3,%r3,lsl #2
ldr %r3,[%r0, #0]
mov %ip,%ip,lsl #1
mov %ip,%ip,lsr #2
str %ip,[%r3, #36]
mov %ip,#0x800
str %ip,[%r3, #0]
str %r1,[%r3, #48]
str %r2,[%r3, #52]
mov %r0,#1
bx %lr
.cfa_ef
.type at91_usart_receive_frame, @function
.size at91_usart_receive_frame, . - at91_usart_receive_frame
;-------------| at91_usart_send_frame |-------------------
.align 4
.global at91_usart_send_frame
at91_usart_send_frame:
.cfa_bf at91_usart_send_frame
ldr %r3,[%r0, #0]
.L0364:
ldr %ip,[%r3, #20]
tsts %ip,#16
beq .L0364
str %r1,[%r3, #56]
str %r2,[%r3, #60]
mov %r0,#1
bx %lr
.cfa_ef
.type at91_usart_send_frame, @function
.size at91_usart_send_frame, . - at91_usart_send_frame
;-------------| at91_tc_open |-------------------
.align 4
.global at91_tc_open
at91_tc_open:
.cfa_bf at91_tc_open
stmdb %sp!,{%r8,%lr}
.cfa_push {%r8,%lr}
ldrb %lr,[%r0, #8]
mov %ip,#1
mov %r8,%ip,lsl %lr
mvn %lr,#255
sub %lr,%lr,#0xbf00
str %r8,[%lr, #4]
ldrb %lr,[%r0, #11]
cmp %r2,#1
ldreqb %r2,[%r0, #9]
mov %lr,%ip,lsl %lr
orreq %lr,%lr,%ip,lsl %r2
cmp %r3,#1
ldreqb %r3,[%r0, #10]
orreq %lr,%lr,%ip,lsl %r3
ldr %r3,[%r0, #4]
ldr %r3,[%r3, #0]
str %lr,[%r3, #4]
ldr %r2,[%r0, #0]
mov %r3,#2
str %r3,[%r2, #0]
mvn %r3,#0
str %r3,[%r2, #40]
ldr %r3,[%r2, #32]
str %r1,[%r2, #4]
str %ip,[%r2, #0]
.cfa_remember_state
ldmia %sp!,{%r8,%ip}
.cfa_pop {%r8,%ip}
bx %ip
.cfa_restore_state
.cfa_ef
.type at91_tc_open, @function
.size at91_tc_open, . - at91_tc_open
;-------------| at91_tc_close |-------------------
.align 4
.global at91_tc_close
at91_tc_close:
.cfa_bf at91_tc_close
ldr %r3,[%r0, #0]
mov %ip,#2
str %ip,[%r3, #0]
mvn %ip,#0
str %ip,[%r3, #40]
mov %ip,#1
ldrb %r3,[%r0, #8]
mov %r3,%ip,lsl %r3
mvn %ip,#255
sub %ip,%ip,#0xbf00
str %r3,[%ip, #8]
bx %lr
.cfa_ef
.type at91_tc_close, @function
.size at91_tc_close, . - at91_tc_close
;-------------| at91_tc_get_status |-------------------
.align 4
.global at91_tc_get_status
at91_tc_get_status:
.cfa_bf at91_tc_get_status
ldr %ip,[%r0, #0]
ldr %r0,[%ip, #32]
bx %lr
.cfa_ef
.type at91_tc_get_status, @function
.size at91_tc_get_status, . - at91_tc_get_status
;-------------| at91_tc_trig_cmd |-------------------
.align 4
.global at91_tc_trig_cmd
at91_tc_trig_cmd:
.cfa_bf at91_tc_trig_cmd
cmp %r1,#1
bne .L0467
ldr %ip,[%r0, #0]
mov %r3,#4
str %r3,[%ip, #0]
b .L0469
.L0465:
ldr %ip,[%r0, #0]
and %r3,%ip,#240
mov %ip,#1
str %ip,[%r3, #0xc0]
b .L0469
.L0467:
cmp %r1,#2
beq .L0465
.L0469:
bx %lr
.cfa_ef
.type at91_tc_trig_cmd, @function
.size at91_tc_trig_cmd, . - at91_tc_trig_cmd
;-------------| at91_tc_set_mode |-------------------
.align 4
.global at91_tc_set_mode
at91_tc_set_mode:
.cfa_bf at91_tc_set_mode
ldr %r3,[%r0, #0]
cmp %r2,#0
ldr %ip,[%r3, #4]
beq .L0475
orr %ip,%ip,%r1
str %ip,[%r3, #4]
bx %lr
.L0475:
bic %ip,%ip,%r1
str %ip,[%r3, #4]
bx %lr
.cfa_ef
.type at91_tc_set_mode, @function
.size at91_tc_set_mode, . - at91_tc_set_mode
;-------------| at91_tc_read |-------------------
.align 4
.global at91_tc_read
at91_tc_read:
.cfa_bf at91_tc_read
ldr %r3,[%r0, #0]
ldr %ip,[%r3, #20]
str %ip,[%r1, #0]
ldr %ip,[%r3, #24]
str %ip,[%r1, #4]
ldr %ip,[%r3, #28]
str %ip,[%r1, #8]
ldr %ip,[%r3, #16]
str %ip,[%r1, #12]
bx %lr
.cfa_ef
.type at91_tc_read, @function
.size at91_tc_read, . - at91_tc_read
;-------------| at91_tc_write |-------------------
.align 4
.global at91_tc_write
at91_tc_write:
.cfa_bf at91_tc_write
ldr %r3,[%r0, #0]
ldr %ip,[%r1, #0]
str %ip,[%r3, #20]
ldr %ip,[%r1, #4]
str %ip,[%r3, #24]
ldr %ip,[%r1, #8]
str %ip,[%r3, #28]
bx %lr
.cfa_ef
.type at91_tc_write, @function
.size at91_tc_write, . - at91_tc_write
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -