seg000:03A0824C; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:03A0824C seg000:03A0824C; Attributes: bp-based frame seg000:03A0824C seg000:03A0824C StartBios proc near ; CODE XREF: do_start_bios+20Fp seg000:03A0824C ; sub_3A1E378+6D5p ... seg000:03A0824C seg000:03A0824C var_48 = byte ptr -48h seg000:03A0824C var_34 = byte ptr -34h seg000:03A0824C arg_config = dword ptr 8 seg000:03A0824C arg_nActivePartition= dword ptr 0Ch seg000:03A0824C arg_bootfrom = dword ptr 14h seg000:03A0824C seg000:03A0824C push ebp seg000:03A0824D mov ebp, esp seg000:03A0824F sub esp, 3Ch seg000:03A08252 push edi seg000:03A08253 push esi seg000:03A08254 push ebx seg000:03A08255 mov eax, dword_3A4D500 seg000:03A0825A mov dword ptr unk_3A4D6DC, 0 seg000:03A08264 mov dword_3A4D6C8, 0 seg000:03A0826E mov dword_3A4D6D4, 0 seg000:03A08278 mov dword_3A4D6CC, 1FFFFh seg000:03A08282 mov dword_3A4D73C, 1FFFFh seg000:03A0828C mov dword_3A4C668, 0FFh seg000:03A08296 mov dword_3A4C674, 0FFFFFFFFh seg000:03A082A0 mov dword_3A4C66C, 0 seg000:03A082AA mov dword_3A4C600, 0 seg000:03A082B4 mov dword_3A4C604, 0 seg000:03A082BE cmp dword ptr [eax+20h], 1 seg000:03A082C2 jnz short loc_3A082D9 seg000:03A082C4 mov eax, offset dword_3A4D580 seg000:03A082C9 cmp dword ptr [eax+4], 80h; 'Ç' seg000:03A082D0 jnz short loc_3A082D9 seg000:03A082D2 mov dword ptr [eax+4], 40h; '@' seg000:03A082D9 seg000:03A082D9 loc_3A082D9: ; CODE XREF: StartBios+76j seg000:03A082D9 ; StartBios+84j seg000:03A082D9 cmp [ebp+arg_bootfrom], 0FFFFFFFFh; if (bootfrom == -1) { seg000:03A082DD jnz short loc_3A082E6 seg000:03A082DF mov [ebp+arg_bootfrom], 2; bootfrom = ICON_CD seg000:03A082E6 seg000:03A082E6 loc_3A082E6: ; CODE XREF: StartBios+91j seg000:03A082E6 cmp [ebp+arg_bootfrom], 0; if (bootfrom == ICON_FATX) { seg000:03A082EA jnz short loc_3A08342 seg000:03A082EC mov edi, [ebp+arg_config] seg000:03A082EF add edi, 1804h seg000:03A082F5 mov esi, offset aInitLinuxrcRoo; "init=/linuxrc root=/dev/ram0 pci=biosir"... seg000:03A082FA mov edx, offset aVmlinuz; "/vmlinuz" seg000:03A082FF cld seg000:03A08300 mov ecx, 0Ch seg000:03A08305 rep movsd seg000:03A08307 movsw seg000:03A08309 movsb ; strcpy(config->szAppend, "init=...") seg000:03A0830A mov eax, dword ptr aVmlinuz; "/vmlinuz" seg000:03A0830F mov ecx, [ebp+arg_config] seg000:03A08312 mov [ecx+804h], eax seg000:03A08318 mov eax, [edx+4] seg000:03A0831B mov [ecx+808h], eax seg000:03A08321 mov al, [edx+8] seg000:03A08324 mov [ecx+80Ch], al seg000:03A0832A mov eax, dword ptr aInitrd_0; "/initrd" seg000:03A0832F mov [ecx+1004h], eax seg000:03A08335 mov eax, dword ptr aInitrd_0+4 seg000:03A0833A mov [ecx+1008h], eax seg000:03A08340 jmp short loc_3A083B4 seg000:03A08342; --------------------------------------------------------------------------- seg000:03A08342 seg000:03A08342 loc_3A08342: ; CODE XREF: StartBios+9Ej seg000:03A08342 mov edi, [ebp+arg_config] seg000:03A08345 add edi, 1804h seg000:03A0834B mov esi, offset aRootDevHda2Dev; "root=/dev/hda2 devfs=mount kbd-reset" seg000:03A08350 mov edx, 3A38808h seg000:03A08355 cld seg000:03A08356 mov ecx, 9 seg000:03A0835B rep movsd seg000:03A0835D movsb ; strcpy(config->szAppend, "root=..") seg000:03A0835E mov eax, dword ptr aBootVmlinuz; "/boot/vmlinuz" seg000:03A08363 mov ecx, [ebp+arg_config] seg000:03A08366 mov [ecx+804h], eax seg000:03A0836C mov eax, [edx+4] seg000:03A0836F mov [ecx+808h], eax seg000:03A08375 mov eax, [edx+8] seg000:03A08378 mov [ecx+80Ch], eax seg000:03A0837E mov ax, [edx+0Ch] seg000:03A08382 mov [ecx+810h], ax seg000:03A08389 mov eax, dword ptr aBootInitrd; "/boot/initrd" seg000:03A0838E mov edx, offset aBootInitrd; "/boot/initrd" seg000:03A08393 mov [ecx+1004h], eax seg000:03A08399 mov eax, [edx+4] seg000:03A0839C mov [ecx+1008h], eax seg000:03A083A2 mov eax, [edx+8] seg000:03A083A5 mov [ecx+100Ch], eax seg000:03A083AB mov al, [edx+0Ch] seg000:03A083AE mov [ecx+1010h], al seg000:03A083B4 seg000:03A083B4 loc_3A083B4: ; CODE XREF: StartBios+F4j seg000:03A083B4 mov dword_3A4D5B0, 80808080h seg000:03A083BE add esp, 0FFFFFFFCh seg000:03A083C1 push 28h; '(' seg000:03A083C3 push offset unk_3A388F2 seg000:03A083C8 lea ebx, [ebp+var_34] seg000:03A083CB push ebx seg000:03A083CC call sub_3A08EDC seg000:03A083D1 add esp, 0FFFFFFF8h seg000:03A083D4 push ebx seg000:03A083D5 push 0FAh; '·' seg000:03A083DA call sub_3A06878 seg000:03A083DF mov dword_3A4C5E4, 0 seg000:03A083E9 add esp, 20h seg000:03A083EC add esp, 0FFFFFFF8h seg000:03A083EF push 0 seg000:03A083F1 push offset currentvideomodedetails seg000:03A083F6 call sub_3A01F20 seg000:03A083FB mov dword_3A4C5E4, 1 seg000:03A08405 wbinvd seg000:03A08407 add esp, 10h seg000:03A0840A cmp [ebp+arg_bootfrom], 1; switch(bootfrom) { seg000:03A0840E jz short _case_ICON_NATIVE seg000:03A08410 jg short loc_3A08420 seg000:03A08412 cmp [ebp+arg_bootfrom], 0 seg000:03A08416 jz short _case_ICON_FATX seg000:03A08418 jmp loc_3A084B8 seg000:03A08418; --------------------------------------------------------------------------- seg000:03A0841D db 8Dh; ì seg000:03A0841E db 76h; v seg000:03A0841F db 0; seg000:03A08420; --------------------------------------------------------------------------- seg000:03A08420 seg000:03A08420 loc_3A08420: ; CODE XREF: StartBios+1C4j seg000:03A08420 cmp [ebp+arg_bootfrom], 2 seg000:03A08424 jz short _case_ICON_CD seg000:03A08426 cmp [ebp+arg_bootfrom], 3 seg000:03A0842A jz short _case_ICON_FLASH seg000:03A0842C jmp loc_3A084B8 seg000:03A08431; --------------------------------------------------------------------------- seg000:03A08431 seg000:03A08431 _case_ICON_FATX: ; CODE XREF: StartBios+1CAj seg000:03A08431 mov eax, [ebp+arg_config] seg000:03A08434 add esp, 0FFFFFFF4h seg000:03A08437 push eax seg000:03A08438 call BootLodaConfigFATX seg000:03A0843D mov edx, [ebp+arg_config] seg000:03A08440 add esp, 0FFFFFFF4h seg000:03A08443 push edx seg000:03A08444 call ExitToLinux seg000:03A08449 jmp short loc_3A084B8 seg000:03A08449; --------------------------------------------------------------------------- seg000:03A0844B db 90h; É seg000:03A0844C db 8Dh; ì seg000:03A0844D db 74h; t seg000:03A0844E db 26h; & seg000:03A0844F db 0; seg000:03A08450; --------------------------------------------------------------------------- seg000:03A08450 seg000:03A08450 _case_ICON_NATIVE: ; CODE XREF: StartBios+1C2j seg000:03A08450 add esp, 0FFFFFFFCh seg000:03A08453 push 0 seg000:03A08455 mov ecx, [ebp+arg_config] seg000:03A08458 push ecx seg000:03A08459 mov eax, [ebp+arg_nActivePartition] seg000:03A0845C push eax seg000:03A0845D call BootLodaConfigNative seg000:03A08462 mov eax, [ebp+arg_config] seg000:03A08465 add esp, 0FFFFFFF4h seg000:03A08468 push eax seg000:03A08469 call ExitToLinux seg000:03A0846E jmp short loc_3A084B8 seg000:03A08470; --------------------------------------------------------------------------- seg000:03A08470 seg000:03A08470 _case_ICON_CD: ; CODE XREF: StartBios+1D8j seg000:03A08470 mov edx, [ebp+arg_config] seg000:03A08473 add esp, 0FFFFFFF4h seg000:03A08476 push edx seg000:03A08477 call BootLodaConfigCD seg000:03A0847C add esp, 10h seg000:03A0847F cmp eax, 63h; 'c' seg000:03A08482 jnz short loc_3A08490 seg000:03A08484 mov eax, 63h; 'c' seg000:03A08489 jmp short loc_3A084B8 seg000:03A08489; --------------------------------------------------------------------------- seg000:03A0848B db 90h; É seg000:03A0848C db 8Dh; ì seg000:03A0848D db 74h; t seg000:03A0848E db 26h; & seg000:03A0848F db 0; seg000:03A08490; --------------------------------------------------------------------------- seg000:03A08490 seg000:03A08490 loc_3A08490: ; CODE XREF: StartBios+236j seg000:03A08490 mov ecx, [ebp+arg_config] seg000:03A08493 add esp, 0FFFFFFF4h seg000:03A08496 push ecx seg000:03A08497 call ExitToLinux seg000:03A0849C jmp short loc_3A084B8 seg000:03A0849C; --------------------------------------------------------------------------- seg000:03A0849E db 89h; ë seg000:03A0849F db 0F6h; ÷ seg000:03A084A0; --------------------------------------------------------------------------- seg000:03A084A0 seg000:03A084A0 _case_ICON_FLASH: ; CODE XREF: StartBios+1DEj seg000:03A084A0 mov eax, [ebp+arg_config] seg000:03A084A3 add esp, 0FFFFFFF4h seg000:03A084A6 push eax seg000:03A084A7 call sub_3A07ABC seg000:03A084AC mov edx, [ebp+arg_config] seg000:03A084AF add esp, 0FFFFFFF4h seg000:03A084B2 push edx seg000:03A084B3 call ExitToLinux seg000:03A084B8 seg000:03A084B8 loc_3A084B8: ; CODE XREF: StartBios+1CCj seg000:03A084B8 ; StartBios+1E0j ... seg000:03A084B8 lea esp, [ebp-48h] seg000:03A084BB pop ebx seg000:03A084BC pop esi seg000:03A084BD pop edi seg000:03A084BE mov esp, ebp seg000:03A084C0 pop ebp seg000:03A084C1 retn seg000:03A084C1 StartBios endp seg000:03A084C1 |