📄 ddma2.lst
字号:
887 .loc 1 276 0 888 0578 0000438E lw $3,%lo(ddma)($18) 889 057c 002A1000 sll $5,$16,8 277:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].avail = TRUE; 278:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].d_head = NULL; 279:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].d_tail = NULL; 280:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].ptr->cfg = 0; 281:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].ptr->stat_ptr = CPHYSADDR(&channels[i].status); 890 .loc 1 281 0 891 0580 21103602 addu $2,$17,$22 892 .loc 1 276 0 893 0584 2128A300 addu $5,$5,$3 894 .loc 1 281 0 895 0588 24105500 and $2,$2,$21 896 .loc 1 276 0 897 058c 21183402 addu $3,$17,$20 898 .loc 1 277 0 899 0590 040073AC sw $19,4($3) 282:/mnt/hgfs/boot/booter/source/ddma2.c **** 283:/mnt/hgfs/boot/booter/source/ddma2.c **** ddma2_disable_channel(i); 900 .loc 1 283 0 901 0594 21200002 move $4,$16 902 .loc 1 280 0 903 0598 0000A0AC sw $0,0($5)GAS LISTING /tmp/ccSUImwK.s page 22 904 .loc 1 274 0 905 059c 01001026 addiu $16,$16,1 906 .loc 1 281 0 907 05a0 0800A2AC sw $2,8($5) 908 .loc 1 279 0 909 05a4 100060AC sw $0,16($3) 910 .loc 1 276 0 911 05a8 000065AC sw $5,0($3) 912 .loc 1 278 0 913 .loc 1 283 0 914 05ac 0000000C jal ddma2_disable_channel 915 05b0 0C0060AC sw $0,12($3) 916 917 .loc 1 274 0 918 05b4 1000022A slt $2,$16,16 919 05b8 EFFF4014 bne $2,$0,$L56 920 05bc 30003126 addiu $17,$17,48 921 284:/mnt/hgfs/boot/booter/source/ddma2.c **** //spin_lock_init( &channels[i].descriptor_lock ); 285:/mnt/hgfs/boot/booter/source/ddma2.c **** } 286:/mnt/hgfs/boot/booter/source/ddma2.c **** 287:/mnt/hgfs/boot/booter/source/ddma2.c **** /* Let the user specify the ddma config settings */ 288:/mnt/hgfs/boot/booter/source/ddma2.c **** ddma->config = 0; 922 .loc 1 288 0 923 05c0 0000428E lw $2,%lo(ddma)($18) 289:/mnt/hgfs/boot/booter/source/ddma2.c **** 290:/mnt/hgfs/boot/booter/source/ddma2.c **** /* Disable all channel interrupts */ 291:/mnt/hgfs/boot/booter/source/ddma2.c **** ddma->inten = 0; 292:/mnt/hgfs/boot/booter/source/ddma2.c **** 293:/mnt/hgfs/boot/booter/source/ddma2.c **** /* Install the generic DDMA interrupt handler */ 294:/mnt/hgfs/boot/booter/source/ddma2.c **** 295:/mnt/hgfs/boot/booter/source/ddma2.c **** cpuIrqDisable(IRQ_DDMA); 924 .loc 1 295 0 925 05c4 0B000424 li $4,11 # 0xb 926 .loc 1 288 0 927 05c8 001040AC sw $0,4096($2) 928 .loc 1 291 0 929 05cc 0C1040AC sw $0,4108($2) 930 .loc 1 295 0 931 05d0 0000000C jal cpuIrqDisable 932 05d4 00000000 nop 933 296:/mnt/hgfs/boot/booter/source/ddma2.c **** cpuIrqEnable( IRQ_DDMA, INT_HIGH_LEVEL, ddma2_interrupt, channels ); 934 .loc 1 296 0 935 05d8 0000063C lui $6,%hi(ddma2_interrupt) 936 05dc 0000E726 addiu $7,$23,%lo(channels) 937 05e0 0000C624 addiu $6,$6,%lo(ddma2_interrupt) 938 05e4 0B000424 li $4,11 # 0xb 939 05e8 0000000C jal cpuIrqEnable 940 05ec 01000524 li $5,1 # 0x1 941 297:/mnt/hgfs/boot/booter/source/ddma2.c **** 298:/mnt/hgfs/boot/booter/source/ddma2.c **** return 1; 299:/mnt/hgfs/boot/booter/source/ddma2.c **** } 942 .loc 1 299 0 943 05f0 3000BF8F lw $31,48($sp) 944 05f4 2C00B78F lw $23,44($sp)GAS LISTING /tmp/ccSUImwK.s page 23 945 05f8 2800B68F lw $22,40($sp) 946 05fc 2400B58F lw $21,36($sp) 947 0600 2000B48F lw $20,32($sp) 948 0604 1C00B38F lw $19,28($sp) 949 0608 1800B28F lw $18,24($sp) 950 060c 1400B18F lw $17,20($sp) 951 0610 1000B08F lw $16,16($sp) 952 0614 01000224 li $2,1 # 0x1 953 0618 0800E003 j $31 954 061c 3800BD27 addiu $sp,$sp,56 955 956 .set macro 957 .set reorder 958 $LFE21: 959 .end ddma2_init 960 .align 2 961 .globl ddma2_get_byte_count 962 .ent ddma2_get_byte_count 963 .type ddma2_get_byte_count, @function 964 ddma2_get_byte_count: 965 $LFB22: 300:/mnt/hgfs/boot/booter/source/ddma2.c **** 301:/mnt/hgfs/boot/booter/source/ddma2.c **** 302:/mnt/hgfs/boot/booter/source/ddma2.c **** int ddma2_get_byte_count(CHANNEL_ID id) 303:/mnt/hgfs/boot/booter/source/ddma2.c **** { 966 .loc 1 303 0 967 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 968 .mask 0x00000000,0 969 .fmask 0x00000000,0 970 .set noreorder 971 .set nomacro 972 304:/mnt/hgfs/boot/booter/source/ddma2.c **** if(id != CHANNEL_INVALID) 305:/mnt/hgfs/boot/booter/source/ddma2.c **** { 306:/mnt/hgfs/boot/booter/source/ddma2.c **** return channels[id].ptr->bytecnt; 973 .loc 1 306 0 974 0620 40180400 sll $3,$4,1 975 0624 21186400 addu $3,$3,$4 976 0628 0000023C lui $2,%hi(channels) 977 062c 00190300 sll $3,$3,4 978 0630 00004224 addiu $2,$2,%lo(channels) 979 .loc 1 304 0 980 0634 FFFF0524 li $5,-1 # 0xffffffffffffffff 981 .loc 1 306 0 982 .loc 1 304 0 983 0638 03008510 beq $4,$5,$L62 984 063c 21106200 addu $2,$3,$2 985 986 .loc 1 306 0 987 0640 0000428C lw $2,0($2) 988 0644 1800428C lw $2,24($2) 989 $L62: 990 0648 0800E003 j $31 991 064c 00000000 nop 992 993 .set macro 994 .set reorderGAS LISTING /tmp/ccSUImwK.s page 24 995 $LFE22: 996 .end ddma2_get_byte_count 997 .align 2 998 .globl ddma2_set_source_big_endian 999 .ent ddma2_set_source_big_endian 1000 .type ddma2_set_source_big_endian, @function 1001 ddma2_set_source_big_endian: 1002 $LFB23: 307:/mnt/hgfs/boot/booter/source/ddma2.c **** } 308:/mnt/hgfs/boot/booter/source/ddma2.c **** } 309:/mnt/hgfs/boot/booter/source/ddma2.c **** 310:/mnt/hgfs/boot/booter/source/ddma2.c **** void ddma2_set_source_big_endian(CHANNEL_ID id, int enabled) 311:/mnt/hgfs/boot/booter/source/ddma2.c **** { 1003 .loc 1 311 0 1004 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 1005 .mask 0x00000000,0 1006 .fmask 0x00000000,0 1007 .set noreorder 1008 .set nomacro 1009 312:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].ptr->cfg = (channels[id].ptr->cfg & ~DDMA_CHANCFG_SBE) | 1010 .loc 1 312 0 1011 0650 40100400 sll $2,$4,1 1012 0654 21104400 addu $2,$2,$4 1013 0658 0000033C lui $3,%hi(channels) 1014 065c 00006324 addiu $3,$3,%lo(channels) 1015 0660 00110200 sll $2,$2,4 1016 0664 21104300 addu $2,$2,$3 1017 0668 0000468C lw $6,0($2) 1018 066c FBFF0224 li $2,-5 # 0xfffffffffffffffb 1019 0670 0000C38C lw $3,0($6) 1020 0674 24186200 and $3,$3,$2 1021 0678 04006434 ori $4,$3,0x4 1022 067c 0B188500 movn $3,$4,$5 1023 0680 0000C3AC sw $3,0($6) 1024 0684 0800E003 j $31 1025 0688 00000000 nop 1026 1027 .set macro 1028 .set reorder 1029 $LFE23: 1030 .end ddma2_set_source_big_endian 1031 .align 2 1032 .globl ddma2_set_dest_big_endian 1033 .ent ddma2_set_dest_big_endian 1034 .type ddma2_set_dest_big_endian, @function 1035 ddma2_set_dest_big_endian: 1036 $LFB24: 313:/mnt/hgfs/boot/booter/source/ddma2.c **** (enabled ? DDMA_CHANCFG_SBE : 0); 314:/mnt/hgfs/boot/booter/source/ddma2.c **** } 315:/mnt/hgfs/boot/booter/source/ddma2.c **** 316:/mnt/hgfs/boot/booter/source/ddma2.c **** void ddma2_set_dest_big_endian(CHANNEL_ID id, int enabled) 317:/mnt/hgfs/boot/booter/source/ddma2.c **** { 1037 .loc 1 317 0 1038 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 1039 .mask 0x00000000,0 1040 .fmask 0x00000000,0GAS LISTING /tmp/ccSUImwK.s page 25 1041 .set noreorder 1042 .set nomacro 1043 318:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].ptr->cfg = (channels[id].ptr->cfg & ~DDMA_CHANCFG_DBE) | 1044 .loc 1 318 0 1045 068c 40100400 sll $2,$4,1 1046 0690 21104400 addu $2,$2,$4 1047 0694 0000033C lui $3,%hi(channels) 1048 0698 00006324 addiu $3,$3,%lo(channels) 1049 069c 00110200 sll $2,$2,4 1050 06a0 21104300 addu $2,$2,$3 1051 06a4 0000468C lw $6,0($2) 1052 06a8 FDFF0224 li $2,-3 # 0xfffffffffffffffd 1053 06ac 0000C38C lw $3,0($6) 1054 06b0 24186200 and $3,$3,$2 1055 06b4 02006434 ori $4,$3,0x2 1056 06b8 0B188500 movn $3,$4,$5 1057 06bc 0000C3AC sw $3,0($6) 1058 06c0 0800E003 j $31 1059 06c4 00000000 nop 1060 1061 .set macro 1062 .set reorder 1063 $LFE24: 1064 .end ddma2_set_dest_big_endian 1065 .align 2 1066 .globl ddma_descriptor_mem_mem 1067 .ent ddma_descriptor_mem_mem 1068 .type ddma_descriptor_mem_mem, @function 1069 ddma_descriptor_mem_mem: 1070 $LFB25: 319:/mnt/hgfs/boot/booter/source/ddma2.c **** (enabled ? DDMA_CHANCFG_DBE : 0); 320:/mnt/hgfs/boot/booter/source/ddma2.c **** } 321:/mnt/hgfs/boot/booter/source/ddma2.c **** 322:/mnt/hgfs/boot/booter/source/ddma2.c **** // Helper Functions 323:/mnt/hgfs/boot/booter/source/ddma2.c **** 324:/mnt/hgfs/boot/booter/source/ddma2.c **** 325:/mnt/hgfs/boot/booter/source/ddma2.c **** /* 326:/mnt/hgfs/boot/booter/source/ddma2.c **** * Function: ddma_descroptor_mem_mem 327:/mnt/hgfs/boot/booter/source/ddma2.c **** * 328:/mnt/hgfs/boot/booter/source/ddma2.c **** * This function is a helper function for setting up a memory to memory descriptor 329:/mnt/hgfs/boot/booter/source/ddma2.c **** * 330:/mnt/hgfs/boot/booter/source/ddma2.c **** */ 331:/mnt/hgfs/boot/booter/source/ddma2.c **** DDMA_DESCRIPTOR* ddma_descriptor_mem_mem(DDMA_DESCRIPTOR* d, void* src, void* dst, int bytes) 332:/mnt/hgfs/boot/booter/source/ddma2.c **** { 1071 .loc 1 332 0 1072 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 1073 .mask 0x00000000,0 1074 .fmask 0x00000000,0 1075 .set noreorder 1076 .set nomacro 1077 333:/mnt/hgfs/boot/booter/source/ddma2.c **** d->u.std.cmd1 = bytes; 334:/mnt/hgfs/boot/booter/source/ddma2.c **** d->u.std.cmd0 = DDMA_DESCCMD_SID_N(DDMA_ALWAYS_HIGH_ID) | 335:/mnt/hgfs/boot/booter/source/ddma2.c **** DDMA_DESCCMD_DID_N(DDMA_ALWAYS_HIGH_ID) | 336:/mnt/hgfs/boot/booter/source/ddma2.c **** DDMA_DESCCMD_M | 337:/mnt/hgfs/boot/booter/source/ddma2.c **** DDMA_DESCCMD_SW_WORD |GAS LISTING /tmp/ccSUImwK.s page 26 338:/mnt/hgfs/boot/booter/source/ddma2.c **** DDMA_DESCCMD_DW_WORD | 339:/mnt/hgfs/boot/booter/source/ddma2.c **** DDMA_DESCCMD_CV; 340:/mnt/hgfs/boot/booter/source/ddma2.c **** d->u.std.source1 = DDMA_DESCSRC_STRIDE_STS_8 | DDMA_DESCSRC_STRIDE_SAM_INC; 341:/mnt/hgfs/boot/booter/source/ddma2.c **** d->u.std.dest1 = DDMA_DESCDST_STRIDE_DTS_8 | DDMA_DESCDST_STRIDE_DAM_INC; 342:/mnt/hgfs/boot/booter/source/ddma2.c **** d->u.std.source0 = CPHYSADDR(src); 1078 .loc 1 342 0 1079 06c8 FF5F023C li $2,1610547200 # 0x5fff0000 1080 06cc FFFF4234 ori $2,$2,0xffff 343:/mnt/hgfs/boot/booter/source/ddma2.c **** d->u.std.dest0 = CPHYSADDR(dst); 1081 .loc 1 343 0 1082 06d0 2430C200 and $6,$6,$2 1083 .loc 1 342 0 1084 06d4 2428A200 and $5,$5,$2 1085 .loc 1 334 0 1086 06d8 FA7F023C li $2,2147090432 # 0x7ffa0000 1087 06dc 04004234 ori $2,$2,0x4 1088 .loc 1 333 0 1089 06e0 040087AC sw $7,4($4) 1090 .loc 1 340 0 1091 06e4 00C0033C li $3,-1073741824 # 0xffffffffc0000000 1092 .loc 1 334 0 1093 06e8 000082AC sw $2,0($4) 344:/mnt/hgfs/boot/booter/source/ddma2.c **** 345:/mnt/hgfs/boot/booter/source/ddma2.c **** return d; 346:/mnt/hgfs/boot/booter/source/ddma2.c **** } 1094 .loc 1 346 0 1095 06ec 21108000 move $2,$4 1096 .loc 1 340 0 1097 06f0 0C0083AC sw $3,12($4) 1098 .loc 1 341 0 1099 06f4 140083AC sw $3,20($4) 1100 .loc 1 342 0 1101 06f8 080085AC sw $5,8($4) 1102 .loc 1 343 0 1103 06fc 100086AC sw $6,16($4) 1104 .loc 1 346 0 1105 0700 0800E003 j $31 1106 0704 00000000 nop 1107 1108 .
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -