📄 atamain.cod
字号:
00014 e593306c ldr r3, [r3, #0x6C]
00018 |$L33108|
00018 e3530000 cmp r3, #0
0001c 1afffffa bne |$L32423|
; 250 : }
; 251 : return FALSE;
00020 e3a00000 mov r0, #0
; 252 : }
00024 e12fff1e bx lr
00028 |$L33102|
; 247 : return TRUE;
00028 e3a00001 mov r0, #1
; 252 : }
0002c e12fff1e bx lr
00030 |$L33114|
00030 00000000 DCD |?g_pDiskRoot@@3PAVCDisk@@A|
00034 |$M33110|
ENDP ; |?AtaIsValidDisk@@YAHPAVCDisk@@@Z|, AtaIsValidDisk
EXPORT |?AtaGetRegistryResources@@YAHPAUHKEY__@@PAU_DDKWINDOWINFO_tag@@@Z| ; AtaGetRegistryResources
IMPORT |DDKReg_GetWindowInfo|
00000 AREA |.text| { |?AtaGetRegistryResources@@YAHPAUHKEY__@@PAU_DDKWINDOWINFO_tag@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?AtaGetRegistryResources@@YAHPAUHKEY__@@PAU_DDKWINDOWINFO_tag@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?AtaGetRegistryResources@@YAHPAUHKEY__@@PAU_DDKWINDOWINFO_tag@@@Z| } ; comdat associative
|$T33125| DCD |$L33124|
DCD 0x40001301
; Function compile flags: /Ogsy
00000 AREA |.text| { |?AtaGetRegistryResources@@YAHPAUHKEY__@@PAU_DDKWINDOWINFO_tag@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?AtaGetRegistryResources@@YAHPAUHKEY__@@PAU_DDKWINDOWINFO_tag@@@Z| PROC ; AtaGetRegistryResources
; 262 : {
00000 |$L33124|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M33122|
00004 e1b04001 movs r4, r1
; 263 : DEBUGCHK(pdwi != NULL);
; 264 :
; 265 : if (!pdwi) {
; 266 : return FALSE;
00008 0a000005 beq |$L33121|
; 267 : }
; 268 :
; 269 : // fetch I/O window information
; 270 : pdwi->cbSize = sizeof(*pdwi);
0000c e3a03074 mov r3, #0x74
; 271 : if (ERROR_SUCCESS != ::DDKReg_GetWindowInfo(hDevKey, pdwi)) {
00010 e1a01004 mov r1, r4
00014 e5843000 str r3, [r4]
00018 eb000000 bl DDKReg_GetWindowInfo
0001c e3500000 cmp r0, #0
00020 0a000002 beq |$L32432|
00024 |$L33121|
; 272 : return FALSE;
00024 e3a00000 mov r0, #0
; 283 : }
00028 e8bd4010 ldmia sp!, {r4, lr}
0002c e12fff1e bx lr
00030 |$L32432|
; 273 : }
; 274 : // if interface not specified, then assume PCI
; 275 : if (pdwi->dwInterfaceType == InterfaceTypeUndefined) {
00030 e5943008 ldr r3, [r4, #8]
; 276 : DEBUGMSG(ZONE_WARNING, (_T(
; 277 : "Atapi!AtaGetRegistryResources> bus type not specified, using PCI as default\r\n"
; 278 : )));
; 279 : pdwi->dwInterfaceType = PCIBus;
; 280 : }
; 281 :
; 282 : return TRUE;
00034 e3a00001 mov r0, #1
00038 e3730001 cmn r3, #1
0003c 03a03005 moveq r3, #5
00040 05843008 streq r3, [r4, #8]
; 283 : }
00044 e8bd4010 ldmia sp!, {r4, lr}
00048 e12fff1e bx lr
0004c |$M33123|
ENDP ; |?AtaGetRegistryResources@@YAHPAUHKEY__@@PAU_DDKWINDOWINFO_tag@@@Z|, AtaGetRegistryResources
EXPORT |?DoIoTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| ; DoIoTranslation
IMPORT |TransBusAddrToVirtual|
00000 AREA |.text| { |?DoIoTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?DoIoTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DoIoTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| } ; comdat associative
|$T33139| DCD |$L33138|
DCD 0x40001a02
; Function compile flags: /Ogsy
00000 AREA |.text| { |?DoIoTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?DoIoTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| PROC ; DoIoTranslation
; 291 : {
00000 |$L33138|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M33136|
00008 e3500000 cmp r0, #0
; 292 : PHYSICAL_ADDRESS PhysicalAddress; // bus address
; 293 : DWORD AddressSpace = 1; // mark bus address as being in an I/O window
0000c e3a03001 mov r3, #1
00010 e58d300c str r3, [sp, #0xC]
; 294 : LPVOID pAddress; // return
; 295 :
; 296 : DEBUGCHK(pdwi != NULL);
; 297 : DEBUGCHK(dwIoWindowIndex < MAX_DEVICE_WINDOWS);
; 298 : if (!pdwi) {
; 299 : return NULL;
00014 0a00000d beq |$L33135|
; 300 : }
; 301 :
; 302 : // extract the target bus address
; 303 : PhysicalAddress.HighPart = 0;
; 304 : PhysicalAddress.LowPart = pdwi->ioWindows[dwIoWindowIndex].dwBase;
00018 e0803181 add r3, r0, r1, lsl #3
; 305 :
; 306 : // translate the target bus address to a virtual address
; 307 : if (!TransBusAddrToVirtual(
; 308 : (INTERFACE_TYPE)pdwi->dwInterfaceType,
; 309 : pdwi->dwBusNumber,
; 310 : PhysicalAddress,
; 311 : pdwi->ioWindows[dwIoWindowIndex].dwLen,
; 312 : &AddressSpace,
; 313 : &pAddress
; 314 : )) {
0001c e5935014 ldr r5, [r3, #0x14]
00020 e5901004 ldr r1, [r0, #4]
00024 e5932010 ldr r2, [r3, #0x10]
00028 e5900008 ldr r0, [r0, #8]
0002c e28de010 add lr, sp, #0x10
00030 e28d400c add r4, sp, #0xC
00034 e3a03000 mov r3, #0
00038 e58d5000 str r5, [sp]
0003c e58de008 str lr, [sp, #8]
00040 e58d4004 str r4, [sp, #4]
00044 eb000000 bl TransBusAddrToVirtual
00048 e3500000 cmp r0, #0
0004c 1a000001 bne |$L32446|
00050 |$L33135|
; 315 : return NULL;
00050 e3a00000 mov r0, #0
00054 ea000000 b |$L32438|
00058 |$L32446|
; 316 : }
; 317 :
; 318 : return (DWORD)pAddress;
00058 e59d0010 ldr r0, [sp, #0x10]
0005c |$L32438|
; 319 : }
0005c e28dd014 add sp, sp, #0x14
00060 e8bd4030 ldmia sp!, {r4, r5, lr}
00064 e12fff1e bx lr
00068 |$M33137|
ENDP ; |?DoIoTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z|, DoIoTranslation
EXPORT |?DoStaticTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| ; DoStaticTranslation
IMPORT |TransBusAddrToStatic|
00000 AREA |.text| { |?DoStaticTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?DoStaticTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DoStaticTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| } ; comdat associative
|$T33153| DCD |$L33152|
DCD 0x40001a02
; Function compile flags: /Ogsy
00000 AREA |.text| { |?DoStaticTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?DoStaticTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z| PROC ; DoStaticTranslation
; 327 : {
00000 |$L33152|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M33150|
00008 e3500000 cmp r0, #0
; 328 : PHYSICAL_ADDRESS PhysicalAddress; // bus address
; 329 : DWORD AddressSpace = 1; // mark bus address as being in an I/O window
0000c e3a03001 mov r3, #1
00010 e58d300c str r3, [sp, #0xC]
; 330 : LPVOID pAddress; // return
; 331 :
; 332 : DEBUGCHK(pdwi != NULL);
; 333 : DEBUGCHK(dwIoWindowIndex < MAX_DEVICE_WINDOWS);
; 334 :
; 335 : if (!pdwi) {
; 336 : return NULL;
00014 0a00000d beq |$L33149|
; 337 : }
; 338 :
; 339 : // extract bus address
; 340 : PhysicalAddress.HighPart = 0;
; 341 : PhysicalAddress.LowPart = pdwi->ioWindows[dwIoWindowIndex].dwBase;
00018 e0803181 add r3, r0, r1, lsl #3
; 342 :
; 343 : // translate the target bus address to a statically mapped physical address
; 344 : if (!TransBusAddrToStatic(
; 345 : (INTERFACE_TYPE)pdwi->dwInterfaceType,
; 346 : pdwi->dwBusNumber,
; 347 : PhysicalAddress,
; 348 : pdwi->ioWindows[dwIoWindowIndex].dwLen,
; 349 : &AddressSpace,
; 350 : &pAddress
; 351 : )) {
0001c e5935014 ldr r5, [r3, #0x14]
00020 e5901004 ldr r1, [r0, #4]
00024 e5932010 ldr r2, [r3, #0x10]
00028 e5900008 ldr r0, [r0, #8]
0002c e28de010 add lr, sp, #0x10
00030 e28d400c add r4, sp, #0xC
00034 e3a03000 mov r3, #0
00038 e58d5000 str r5, [sp]
0003c e58de008 str lr, [sp, #8]
00040 e58d4004 str r4, [sp, #4]
00044 eb000000 bl TransBusAddrToStatic
00048 e3500000 cmp r0, #0
0004c 1a000001 bne |$L32459|
00050 |$L33149|
; 352 : return NULL;
00050 e3a00000 mov r0, #0
00054 ea000000 b |$L32451|
00058 |$L32459|
; 353 : }
; 354 :
; 355 : return (DWORD)pAddress;
00058 e59d0010 ldr r0, [sp, #0x10]
0005c |$L32451|
; 356 : }
0005c e28dd014 add sp, sp, #0x14
00060 e8bd4030 ldmia sp!, {r4, r5, lr}
00064 e12fff1e bx lr
00068 |$M33151|
ENDP ; |?DoStaticTranslation@@YAKPAU_DDKWINDOWINFO_tag@@K@Z|, DoStaticTranslation
EXPORT |?GetIDERegistryValueSet@@YAHPAUHKEY__@@PAU_IDEREG@@@Z| ; GetIDERegistryValueSet
EXPORT |??_C@_1O@ECNENGDC@?$AAL?$AAe?$AAg?$AAa?$AAc?$AAy?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_17DJGGJCGD@?$AAI?$AAr?$AAq?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BA@BDHDGOBO@?$AAS?$AAy?$AAs?$AAI?$AAn?$AAt?$AAr?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BC@NPAECANO@?$AAV?$AAe?$AAn?$AAd?$AAo?$AAr?$AAI?$AAD?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BK@HCJMIBBG@?$AAD?$AAM?$AAA?$AAA?$AAl?$AAi?$AAg?$AAn?$AAm?$AAe?$AAn?$AAt?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CC@BEHBKIBC@?$AAS?$AAo?$AAf?$AAt?$AAR?$AAe?$AAs?$AAe?$AAt?$AAT?$AAi?$AAm?$AAe?$AAo?$AAu?$AAt?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CC@FOJHDLJB@?$AAS?$AAt?$AAa?$AAt?$AAu?$AAs?$AAP?$AAo?$AAl?$AAl?$AAC?$AAy?$AAc?$AAl?$AAe?$AAs?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CI@CKDNEMLE@?$AAS?$AAt?$AAa?$AAt?$AAu?$AAs?$AAP?$AAo?$AAl?$AAl?$AAs?$AAP?$AAe?$AAr?$AAC?$AAy?$AAc?$AAl?$AAe?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CK@PKHKJDHK@?$AAS?$AAt?$AAa?$AAt?$AAu?$AAs?$AAP?$AAo?$AAl?$AAl?$AAC?$AAy?$AAc?$AAl?$AAe?$AAP?$AAa?$AAu?$AAs?$AAe@| [ DATA ] ; `string'
EXPORT |??_C@_1BM@BABJOPKK@?$AAS?$AAp?$AAa?$AAw?$AAn?$AAF?$AAu?$AAn?$AAc?$AAt?$AAi?$AAo?$AAn?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1O@MDNCMDKF@?$AAI?$AAs?$AAr?$AAD?$AAl?$AAl?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BG@NELPJJNN@?$AAI?$AAs?$AAr?$AAH?$AAa?$AAn?$AAd?$AAl?$AAe?$AAr?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CI@HEEIGOOF@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AAO?$AAf?$AAf?$AAs?$AAe?$AAt?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CM@GOEPMFGL@?$AAA?$AAl?$AAt?$AAe?$AAr?$AAn?$AAa?$AAt?$AAe?$AAS?$AAt?$AAa?$AAt?$AAu?$AAs?$AAO?$AAf?$AAf?$AAs?$AAe@| [ DATA ] ; `string'
EXPORT |??_C@_1BO@HNHOPIFG@?$AAR?$AAe?$AAg?$AAi?$AAs?$AAt?$AAe?$AAr?$AAS?$AAt?$AAr?$AAi?$AAd?$AAe?$AA?$AA@| [ DATA ] ; `string'
IMPORT |?AtaGetRegistryValue@@YAHPAUHKEY__@@PAGPAK@Z| ; AtaGetRegistryValue
IMPORT |?AtaGetRegistryString@@YAHPAUHKEY__@@PAGPAPAGK@Z| ; AtaGetRegistryString
00000 AREA |.text| { |?GetIDERegistryValueSet@@YAHPAUHKEY__@@PAU_IDEREG@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?GetIDERegistryValueSet@@YAHPAUHKEY__@@PAU_IDEREG@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetIDERegistryValueSet@@YAHPAUHKEY__@@PAU_IDEREG@@@Z| } ; comdat associative
|$T33165| DCD |$L33164|
DCD 0x40007d01
00000 AREA |.rdata| { |??_C@_1BO@HNHOPIFG@?$AAR?$AAe?$AAg?$AAi?$AAs?$AAt?$AAe?$AAr?$AAS?$AAt?$AAr?$AAi?$AAd?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BO@HNHOPIFG@?$AAR?$AAe?$AAg?$AAi?$AAs?$AAt?$AAe?$AAr?$AAS?$AAt?$AAr?$AAi?$AAd?$AAe?$AA?$AA@| DCB "R"
DCB 0x0, "e", 0x0, "g", 0x0, "i", 0x0, "s", 0x0, "t", 0x0, "e"
DCB 0x0, "r", 0x0, "S", 0x0, "t", 0x0, "r", 0x0, "i", 0x0, "d"
DCB 0x0, "e", 0x0, 0x0, 0x0 ; `string'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -