printf_a9.asm
来自「OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI」· 汇编 代码 · 共 1,611 行 · 第 1/5 页
ASM
1,611 行
;******************************************************************************
;* TMS470 C/C++ Codegen PC v4.1.4 *
;* Date/Time created: Wed Jun 25 14:12:18 2008 *
;******************************************************************************
.compiler_opts --abi=ti_arm9_abi --endian=little --float_support=fpalib --quiet --silicon_version=5e
.state32
DW$CU .dwtag DW_TAG_compile_unit
.dwattr DW$CU, DW_AT_name("printf_a9.c")
.dwattr DW$CU, DW_AT_producer("TMS470 C/C++ Codegen PC v4.1.4 Copyright (c) 1996-2006 Texas Instruments Incorporated")
.dwattr DW$CU, DW_AT_stmt_list(0x00)
.dwattr DW$CU, DW_AT_TI_VERSION(0x01)
;*****************************************************************************
;* CINIT RECORDS *
;*****************************************************************************
.sect ".cinit"
.align 4
.field 2,32
.field _uart_in_use+0,32
.field 0,16 ; _uart_in_use @ 0
DW$1 .dwtag DW_TAG_subprogram, DW_AT_name("read"), DW_AT_symbol_name("_read")
.dwattr DW$1, DW_AT_type(*DW$T$10)
.dwattr DW$1, DW_AT_declaration(0x01)
.dwattr DW$1, DW_AT_external(0x01)
DW$2 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$10)
DW$3 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$29)
DW$4 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$11)
.dwendtag DW$1
DW$5 .dwtag DW_TAG_subprogram, DW_AT_name("setvbuf"), DW_AT_symbol_name("_setvbuf")
.dwattr DW$5, DW_AT_type(*DW$T$10)
.dwattr DW$5, DW_AT_declaration(0x01)
.dwattr DW$5, DW_AT_external(0x01)
DW$6 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$68)
DW$7 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$29)
DW$8 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$10)
DW$9 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$69)
.dwendtag DW$5
DW$10 .dwtag DW_TAG_subprogram, DW_AT_name("fflush"), DW_AT_symbol_name("_fflush")
.dwattr DW$10, DW_AT_type(*DW$T$10)
.dwattr DW$10, DW_AT_declaration(0x01)
.dwattr DW$10, DW_AT_external(0x01)
DW$11 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$68)
.dwendtag DW$10
DW$12 .dwtag DW_TAG_subprogram, DW_AT_name("printf"), DW_AT_symbol_name("_printf")
.dwattr DW$12, DW_AT_type(*DW$T$10)
.dwattr DW$12, DW_AT_declaration(0x01)
.dwattr DW$12, DW_AT_external(0x01)
DW$13 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$24)
DW$14 .dwtag DW_TAG_unspecified_parameters
.dwendtag DW$12
DW$15 .dwtag DW_TAG_subprogram, DW_AT_name("scanf"), DW_AT_symbol_name("_scanf")
.dwattr DW$15, DW_AT_type(*DW$T$10)
.dwattr DW$15, DW_AT_declaration(0x01)
.dwattr DW$15, DW_AT_external(0x01)
DW$16 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$24)
DW$17 .dwtag DW_TAG_unspecified_parameters
.dwendtag DW$15
DW$18 .dwtag DW_TAG_subprogram, DW_AT_name("getchar"), DW_AT_symbol_name("_getchar")
.dwattr DW$18, DW_AT_type(*DW$T$10)
.dwattr DW$18, DW_AT_declaration(0x01)
.dwattr DW$18, DW_AT_external(0x01)
DW$19 .dwtag DW_TAG_subprogram, DW_AT_name("CONFIG_SetModePin"), DW_AT_symbol_name("_CONFIG_SetModePin")
.dwattr DW$19, DW_AT_declaration(0x01)
.dwattr DW$19, DW_AT_external(0x01)
DW$20 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$42)
DW$21 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$42)
.dwendtag DW$19
DW$22 .dwtag DW_TAG_subprogram, DW_AT_name("ULPD_SoftReqEnable"), DW_AT_symbol_name("_ULPD_SoftReqEnable")
.dwattr DW$22, DW_AT_declaration(0x01)
.dwattr DW$22, DW_AT_external(0x01)
DW$23 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$46)
.dwendtag DW$22
DW$24 .dwtag DW_TAG_subprogram, DW_AT_name("ULPD_SoftReqDisable"), DW_AT_symbol_name("_ULPD_SoftReqDisable")
.dwattr DW$24, DW_AT_declaration(0x01)
.dwattr DW$24, DW_AT_external(0x01)
DW$25 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$46)
.dwendtag DW$24
DW$26 .dwtag DW_TAG_subprogram, DW_AT_name("SSW_Grab"), DW_AT_symbol_name("_SSW_Grab")
.dwattr DW$26, DW_AT_type(*DW$T$64)
.dwattr DW$26, DW_AT_declaration(0x01)
.dwattr DW$26, DW_AT_external(0x01)
DW$27 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$50)
.dwendtag DW$26
DW$28 .dwtag DW_TAG_subprogram, DW_AT_name("SSW_Release"), DW_AT_symbol_name("_SSW_Release")
.dwattr DW$28, DW_AT_declaration(0x01)
.dwattr DW$28, DW_AT_external(0x01)
DW$29 .dwtag DW_TAG_formal_parameter, DW_AT_type(*DW$T$50)
.dwendtag DW$28
DW$30 .dwtag DW_TAG_subprogram, DW_AT_name("FPGA_EnableUART1"), DW_AT_symbol_name("_FPGA_EnableUART1")
.dwattr DW$30, DW_AT_declaration(0x01)
.dwattr DW$30, DW_AT_external(0x01)
DW$31 .dwtag DW_TAG_variable, DW_AT_name("_ftable"), DW_AT_symbol_name("__ftable")
.dwattr DW$31, DW_AT_type(*DW$T$107)
.dwattr DW$31, DW_AT_declaration(0x01)
.dwattr DW$31, DW_AT_external(0x01)
.global _uart_in_use
.bss _uart_in_use,2,2
DW$32 .dwtag DW_TAG_variable, DW_AT_name("uart_in_use"), DW_AT_symbol_name("_uart_in_use")
.dwattr DW$32, DW_AT_location[DW_OP_addr _uart_in_use]
.dwattr DW$32, DW_AT_type(*DW$T$64)
.dwattr DW$32, DW_AT_external(0x01)
.global _devUART
.sect ".const"
.align 4
_devUART:
.field 85,8 ; _devUART[0]._name[0] @ 0
.field 65,8 ; _devUART[0]._name[1] @ 8
.field 82,8 ; _devUART[0]._name[2] @ 16
.field 84,8 ; _devUART[0]._name[3] @ 24
.field 49,8 ; _devUART[0]._name[4] @ 32
.field 0,8 ; _devUART[0]._name[5] @ 40
.space 4
.field 0,16 ; _devUART[0]._flags @ 80
.field _UART1open,32 ; _devUART[0]._OPEN @ 96
.field _UART1close,32 ; _devUART[0]._CLOSE @ 128
.field _UART1read,32 ; _devUART[0]._READ @ 160
.field _UART1write,32 ; _devUART[0]._WRITE @ 192
.field _UARTseek,32 ; _devUART[0]._LSEEK @ 224
.field _UARTunlink,32 ; _devUART[0]._UNLINK @ 256
.field _UARTrename,32 ; _devUART[0]._RENAME @ 288
.field 85,8 ; _devUART[1]._name[0] @ 320
.field 65,8 ; _devUART[1]._name[1] @ 328
.field 82,8 ; _devUART[1]._name[2] @ 336
.field 84,8 ; _devUART[1]._name[3] @ 344
.field 50,8 ; _devUART[1]._name[4] @ 352
.field 0,8 ; _devUART[1]._name[5] @ 360
.space 4
.field 0,16 ; _devUART[1]._flags @ 400
.field _UART2open,32 ; _devUART[1]._OPEN @ 416
.field _UART2close,32 ; _devUART[1]._CLOSE @ 448
.field _UART2read,32 ; _devUART[1]._READ @ 480
.field _UART2write,32 ; _devUART[1]._WRITE @ 512
.field _UARTseek,32 ; _devUART[1]._LSEEK @ 544
.field _UARTunlink,32 ; _devUART[1]._UNLINK @ 576
.field _UARTrename,32 ; _devUART[1]._RENAME @ 608
.field 85,8 ; _devUART[2]._name[0] @ 640
.field 65,8 ; _devUART[2]._name[1] @ 648
.field 82,8 ; _devUART[2]._name[2] @ 656
.field 84,8 ; _devUART[2]._name[3] @ 664
.field 51,8 ; _devUART[2]._name[4] @ 672
.field 0,8 ; _devUART[2]._name[5] @ 680
.space 4
.field 0,16 ; _devUART[2]._flags @ 720
.field _UART3open,32 ; _devUART[2]._OPEN @ 736
.field _UART3close,32 ; _devUART[2]._CLOSE @ 768
.field _UART3read,32 ; _devUART[2]._READ @ 800
.field _UART3write,32 ; _devUART[2]._WRITE @ 832
.field _UARTseek,32 ; _devUART[2]._LSEEK @ 864
.field _UARTunlink,32 ; _devUART[2]._UNLINK @ 896
.field _UARTrename,32 ; _devUART[2]._RENAME @ 928
DW$33 .dwtag DW_TAG_variable, DW_AT_name("devUART"), DW_AT_symbol_name("_devUART")
.dwattr DW$33, DW_AT_location[DW_OP_addr _devUART]
.dwattr DW$33, DW_AT_type(*DW$T$108)
.dwattr DW$33, DW_AT_external(0x01)
DW$34 .dwtag DW_TAG_variable, DW_AT_name("UartSerialType"), DW_AT_symbol_name("_UartSerialType")
.dwattr DW$34, DW_AT_type(*DW$T$112)
.dwattr DW$34, DW_AT_declaration(0x01)
.dwattr DW$34, DW_AT_external(0x01)
; C:\CCStudio_v3.3\tms470\cgtools\bin\acp470.exe -@C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TI24012
.sect ".text"
.align 4
.clink
.armfunc _UART_reset
.state32
.global _UART_reset
DW$35 .dwtag DW_TAG_subprogram, DW_AT_name("UART_reset"), DW_AT_symbol_name("_UART_reset")
.dwattr DW$35, DW_AT_low_pc(_UART_reset)
.dwattr DW$35, DW_AT_high_pc(0x00)
.dwattr DW$35, DW_AT_begin_file("printf_a9.c")
.dwattr DW$35, DW_AT_begin_line(0x20)
.dwattr DW$35, DW_AT_begin_column(0x06)
.dwpsn "printf_a9.c",36,1
.dwfde DW$CIE
;*****************************************************************************
;* FUNCTION NAME: UART_reset *
;* *
;* Regs Modified : A1,V9,SP,SR *
;* Regs Used : A1,V9,SP,SR *
;* Local Frame Size : 0 Args + 4 Auto + 0 Save = 4 byte *
;*****************************************************************************
_UART_reset:
;* --------------------------------------------------------------------------*
.dwcfa 0x0e, 0
.dwcfa 0x09, 26, 14
SUB SP, SP, #4
.dwcfa 0x0e, 4
;* A1 assigned to _inBaseAddress
DW$36 .dwtag DW_TAG_formal_parameter, DW_AT_name("inBaseAddress"), DW_AT_symbol_name("_inBaseAddress")
.dwattr DW$36, DW_AT_type(*DW$T$3)
.dwattr DW$36, DW_AT_location[DW_OP_reg0]
DW$37 .dwtag DW_TAG_variable, DW_AT_name("inBaseAddress"), DW_AT_symbol_name("_inBaseAddress")
.dwattr DW$37, DW_AT_type(*DW$T$3)
.dwattr DW$37, DW_AT_location[DW_OP_breg13 0]
STR A1, [SP, #0] ; |36|
.dwpsn "printf_a9.c",37,3
LDR V9, [SP, #0] ; |37|
LDRB A1, [V9, #84] ; |37|
ORR A1, A1, #2 ; |37|
STRB A1, [V9, #84] ; |37|
.dwpsn "printf_a9.c",38,3
;* --------------------------------------------------------------------------*
;* BEGIN LOOP L1
;*
;* Loop source line : 38
;* Known Minimum Trip Count : 1
;* Known Maximum Trip Count : 4294967295
;* Known Max Trip Count Factor : 1
;* --------------------------------------------------------------------------*
L1:
DW$L$_UART_reset$2$B:
.dwpsn "printf_a9.c",38,10
LDR V9, [SP, #0] ; |38|
LDRB V9, [V9, #88] ; |38|
CMP V9, #1 ; |38|
BNE L1 ; |38|
; |38|
DW$L$_UART_reset$2$E:
;* --------------------------------------------------------------------------*
.dwpsn "printf_a9.c",41,3
;* --------------------------------------------------------------------------*
;* BEGIN LOOP L2
;*
;* Loop source line : 41
;* Known Minimum Trip Count : 1
;* Known Maximum Trip Count : 4294967295
;* Known Max Trip Count Factor : 1
;* --------------------------------------------------------------------------*
L2:
DW$L$_UART_reset$4$B:
.dwpsn "printf_a9.c",41,10
LDR V9, [SP, #0] ; |41|
LDRB V9, [V9, #32] ; |41|
AND V9, V9, #7 ; |41|
CMP V9, #7 ; |41|
BNE L2 ; |41|
; |41|
DW$L$_UART_reset$4$E:
;* --------------------------------------------------------------------------*
.dwpsn "printf_a9.c",43,3
.dwpsn "printf_a9.c",44,1
ADD SP, SP, #4
.dwcfa 0x0e, 0
BX LR
DW$38 .dwtag DW_TAG_loop
.dwattr DW$38, DW_AT_name("D:\src\boston_board_test\ARM\ti\printf_a9.asm:L2:1:1214374338")
.dwattr DW$38, DW_AT_begin_file("printf_a9.c")
.dwattr DW$38, DW_AT_begin_line(0x29)
.dwattr DW$38, DW_AT_end_line(0x29)
DW$39 .dwtag DW_TAG_loop_range
.dwattr DW$39, DW_AT_low_pc(DW$L$_UART_reset$4$B)
.dwattr DW$39, DW_AT_high_pc(DW$L$_UART_reset$4$E)
.dwendtag DW$38
DW$40 .dwtag DW_TAG_loop
.dwattr DW$40, DW_AT_name("D:\src\boston_board_test\ARM\ti\printf_a9.asm:L1:1:1214374338")
.dwattr DW$40, DW_AT_begin_file("printf_a9.c")
.dwattr DW$40, DW_AT_begin_line(0x26)
.dwattr DW$40, DW_AT_end_line(0x26)
DW$41 .dwtag DW_TAG_loop_range
.dwattr DW$41, DW_AT_low_pc(DW$L$_UART_reset$2$B)
.dwattr DW$41, DW_AT_high_pc(DW$L$_UART_reset$2$E)
.dwendtag DW$40
.dwattr DW$35, DW_AT_end_file("printf_a9.c")
.dwattr DW$35, DW_AT_end_line(0x2c)
.dwattr DW$35, DW_AT_end_column(0x01)
.dwendentry
.dwendtag DW$35
.sect ".text"
.align 4
.clink
.armfunc _UART_configure
.state32
.global _UART_configure
DW$42 .dwtag DW_TAG_subprogram, DW_AT_name("UART_configure"), DW_AT_symbol_name("_UART_configure")
.dwattr DW$42, DW_AT_low_pc(_UART_configure)
.dwattr DW$42, DW_AT_high_pc(0x00)
.dwattr DW$42, DW_AT_begin_file("printf_a9.c")
.dwattr DW$42, DW_AT_begin_line(0x30)
.dwattr DW$42, DW_AT_begin_column(0x06)
.dwpsn "printf_a9.c",52,1
.dwfde DW$CIE
;*****************************************************************************
;* FUNCTION NAME: UART_configure *
;* *
;* Regs Modified : A1,V9,SP,SR *
;* Regs Used : A1,V9,SP,SR *
;* Local Frame Size : 0 Args + 4 Auto + 0 Save = 4 byte *
;*****************************************************************************
_UART_configure:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?