Changeset 93109 in vbox
- Timestamp:
- Dec 31, 2021 2:29:54 AM (3 years ago)
- Location:
- trunk/src/VBox/Main
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/UnattendedTemplates/os2_cid_install.cmd
r93097 r93109 23 23 cd s:\os2image\disk_6 24 24 25 lvm.exe /NEWMBR:1 26 if ERRORLEVEL 0 goto lvm_newmbr_ok 25 lvm.exe /NEWMBR:1 && goto lvm_newmbr_ok 27 26 echo ** error: Writing a new MBR on disk 1 failed. 28 27 goto lvm_failed … … 31 30 lvm.exe "/SETNAME:DRIVE,[ D1 ],BootDrive" 32 31 33 lvm.exe /CREATE:PARTITION,OS2Boot,1,1024,PRIMARY,BOOTABLE 34 if ERRORLEVEL 0 goto lvm_create_partition_ok 32 lvm.exe /CREATE:PARTITION,OS2Boot,1,1024,PRIMARY,BOOTABLE && goto lvm_create_partition_ok 35 33 echo ** error: Creating boot partition on disk 1 failed. 36 34 goto lvm_failed 37 35 :lvm_create_partition_ok 38 36 39 lvm.exe /CREATE:VOLUME,COMPATIBILITY,BOOTOS2,C:,OS2Boot,1,OS2Boot 40 if ERRORLEVEL 0 goto lvm_create_volume_ok 37 lvm.exe /CREATE:VOLUME,COMPATIBILITY,BOOTOS2,C:,OS2Boot,1,OS2Boot && goto lvm_create_volume_ok 41 38 echo ** error: Creating boot volume on disk 1 failed. 42 39 goto lvm_failed 43 40 :lvm_create_volume_ok 44 41 45 lvm.exe /SETSTARTABLE:VOLUME,OS2Boot 46 if ERRORLEVEL 0 goto lvm_set_startable_ok 42 lvm.exe /SETSTARTABLE:VOLUME,OS2Boot && goto lvm_set_startable_ok 47 43 echo ** error: Setting boot volume on disk 1 startable failed. 48 44 goto lvm_failed 49 45 :lvm_set_startable_ok 50 46 51 lvm.exe "/CREATE:PARTITION,Data,1,LOGICAL,NotBootable,[ FS1 ]" 52 if ERRORLEVEL 0 goto lvm_create_data_partition_ok 47 lvm.exe "/CREATE:PARTITION,Data,1,LOGICAL,NotBootable,[ FS1 ]" && goto lvm_create_data_partition_ok 53 48 echo ** error: Creating data partition on disk 1 failed. 54 49 goto lvm_failed 55 50 :lvm_create_data_partition_ok 56 51 57 lvm.exe /CREATE:VOLUME,LVM,D:,Data,1,Data 58 if ERRORLEVEL 0 goto lvm_create_data_volume_ok 52 lvm.exe /CREATE:VOLUME,LVM,D:,Data,1,Data && goto lvm_create_data_volume_ok 59 53 echo ** error: Creating data volume on disk 1 failed. 60 54 goto lvm_failed … … 86 80 s: 87 81 88 FORMAT C: /FS:HPFS /V:OS2Boot < S:\VBoxCID\YES.TXT 89 if ERRORLEVEL 0 goto format_boot_ok 82 FORMAT C: /FS:HPFS /V:OS2Boot < S:\VBoxCID\YES.TXT && goto format_boot_ok 90 83 echo ** error: Formatting C: failed. 91 84 PAUSE 92 85 :format_boot_ok 93 86 94 FORMAT D: /FS:JFS /V:Data < S:\VBoxCID\YES.TXT 95 if ERRORLEVEL 0 goto format_data_ok 87 FORMAT D: /FS:JFS /V:Data < S:\VBoxCID\YES.TXT && goto format_data_ok 96 88 echo ** error: Formatting D: failed. 97 89 PAUSE … … 107 99 copy S:\cid\dll\os2\*.* C:\VBoxCID 108 100 copy S:\os2image\disk_2\inst32.dll C:\VBoxCID 109 copy S:\VBoxCID\*.* C:\VBoxCID 110 if ERRORLEVEL 0 goto copy_ok 101 copy S:\VBoxCID\*.* C:\VBoxCID && goto copy_ok 111 102 echo ** error: Copying CID stuff from CDROM to C: failed. 112 103 PAUSE … … 121 112 cd C:\OS2 122 113 C:\VBoxCID\SEMAINT.EXE /S:S:\os2image /B:C: /L1:C:\VBoxCID\Maint.log /T:C:\OS2 123 REM if ERRORLEVEL 0 goto semaint_ok - doesn't return 0 on success? 124 REM PAUSE 114 REM does not exit with status 0 on success. 115 goto semaint_ok 116 PAUSE 125 117 :semaint_ok 126 118 REM S:\OS2IMAGE\DISK_2\CMD.EXE … … 128 120 cd C:\VBoxCID 129 121 C:\VBoxCID\SEINST.EXE /S:S:\os2image /B:C: /L1:C:\VBoxCID\CIDInst.log /R:C:\VBoxCID\OS2.RSP /T:A:\ 130 if ERRORLEVEL 0 goto seinst_ok 122 REM does not exit with status 0 on success. 123 goto seinst_ok 131 124 PAUSE 132 125 :seinst_ok 133 S:\OS2IMAGE\DISK_2\CMD.EXE126 REM S:\OS2IMAGE\DISK_2\CMD.EXE 134 127 135 128 :step5 … … 137 130 echo Step 5 - Make C: bootable. 138 131 echo . 139 c: 140 cd c:\OS2 141 SYSINSTX C: 142 if ERRORLEVEL 0 goto sysinstx_ok 132 C: 133 cd C:\OS2 134 SYSINSTX C: && goto sysinstx_ok 143 135 pause 144 136 :sysinstx_ok 145 137 146 echo Copying over patched OS2BOOT from A: 147 cd c:\ 148 c: 149 attrib -R -H -S OS2BOOT 150 copy OS2BOOT OS2BOOT.ORG 151 copy a:\OS2BOOT C:\OS2BOOT 152 attrib +R +H +S OS2BOOT 138 echo Copying over patched OS2LDR from A: 139 attrib -R -H -S C:\OS2LDR 140 copy C:\OS2LDR C:\OS2LDR.ORG 141 del C:\OS2LDR 142 copy A:\OS2LDR C:\OS2LDR && goto copy_os2ldr_ok 143 pause 144 :copy_os2ldr_ok 145 attrib +R +H +S C:\OS2LDR 153 146 154 147 echo Copying over final startup.cmd 155 ren C:\STARTUP.CMD C:\STARTUP.ORG148 if exist C:\STARTUP.CMD ren C:\STARTUP.CMD C:\STARTUP.ORG 156 149 copy S:\VBoxCID\STARTUP.CMD C:\STARTUP.CMD 157 150 … … 163 156 echo Step 6 - Cleanup 164 157 echo . 165 echo ** skipped 158 cd C:\ 159 del /N C:\*.bio 160 del /N C:\*.i13 161 del /N C:\*.snp 162 del /N C:\CONFIG.ADD 163 mkdir C:\MMTEMP 2>nul 164 del /N C:\MMTEMP\*.* 165 for %%i in (acpadd2 azt16dd azt32dd csbsaud es1688dd es1788dd es1868dd es1888dd es688dd jazzdd mvprobdd mvprodd sb16d2 sbawed2 sbd2 sbp2d2 sbpd2) do del /N C:\MMTEMP\OS2\DRIVERS\%%i\*.* 166 for %%i in (acpadd2 azt16dd azt32dd csbsaud es1688dd es1788dd es1868dd es1888dd es688dd jazzdd mvprobdd mvprodd sb16d2 sbawed2 sbd2 sbp2d2 sbpd2) do rmdir C:\MMTEMP\OS2\DRIVERS\%%i 167 rmdir C:\MMTEMP\OS2\DRIVERS 168 rmdir C:\MMTEMP\OS2 169 rmdir C:\MMTEMP 170 copy C:\CONFIG.SYS C:\VBoxCID && del /N C:\*.SYS 171 copy C:\VBoxCID\CONFIG.SYS C:\ 166 172 167 173 :step7 168 174 echo . 169 echo Step 7 - Post install actions 175 echo Step 7 - Install guest additions. 176 echo . 177 @@VBOX_COND_IS_INSTALLING_ADDITIONS@@ 178 mkdir C:\VBoxAdd 179 copy S:\VBoxAdditions\OS2\*.* C:\VBoxAdd && goto ga_copy_ok 180 pause 181 :ga_copy_ok 182 echo TODO: Write script editing Config.sys for GAs 183 @@VBOX_COND_ELSE@@ 184 echo Not requested. Skipping. 185 @@VBOX_COND_END@@ 186 187 :step8 188 echo . 189 echo Step 8 - Install the test execution service (TXS). 190 echo . 191 @@VBOX_COND_IS_INSTALLING_TEST_EXEC_SERVICE@@ 192 mkdir C:\ValKit 193 mkdir D:\TestArea 194 copy S:\VBoxValidationKit\*.* C:\VBoxValKit && goto valkit_copy_1_ok 195 pause 196 :valkit_copy_1_ok 197 copy S:\VBoxValidationKit\os2\x86\*.* C:\VBoxValKit && goto valkit_copy_2_ok 198 pause 199 :valkit_copy_2_ok 200 @@VBOX_COND_ELSE@@ 201 echo Not requested. Skipping. 202 @@VBOX_COND_END@@ 203 204 :step9 205 @@VBOX_COND_HAS_POST_INSTALL_COMMAND@@ 206 echo . 207 echo Step 9 - Custom actions: "@@VBOX_INSERT_POST_INSTALL_COMMAND@@" 170 208 echo . 171 209 cd C:\VBoxCID 172 210 C: 173 174 :step8 175 echo . 176 echo Step 8 - Done. 211 @@VBOX_INSERT_POST_INSTALL_COMMAND@@ 212 @@VBOX_COND_END@@ 213 214 215 :done 216 echo . 217 echo Finally Done. Now we reboot. 177 218 echo . 178 219 cd C:\OS2 -
trunk/src/VBox/Main/UnattendedTemplates/os2_response_files.rsp
r93095 r93109 18 18 BREAK=OFF 19 19 20 LIBPATH=.;A:\;S:\OS2IMAGE\DISK_1;S:\OS2IMAGE\DISK_2;S:\OS2IMAGE\DISK_3;S:\OS2IMAGE\DISK_4;S:\OS2IMAGE\DISK_5;S:\OS2IMAGE\DISK_6;S:\OS2IMAGE\DISK_7 21 SET PATH=.;S:\OS2IMAGE\DISK_1;S:\OS2IMAGE\DISK_2;S:\OS2IMAGE\DISK_3;S:\OS2IMAGE\DISK_4;S:\OS2IMAGE\DISK_5;S:\OS2IMAGE\DISK_6;S:\OS2IMAGE\DISK_7 22 SET DPATH=.;A:\; 20 REM Just to be on the safe side, all paths include disk #1 thru #6, omitting #0 21 REM as it doesn't contain much interesting. 22 LIBPATH=.;A:\;S:\OS2IMAGE\DISK_1;S:\OS2IMAGE\DISK_2;S:\OS2IMAGE\DISK_3;S:\OS2IMAGE\DISK_4;S:\OS2IMAGE\DISK_5;S:\OS2IMAGE\DISK_6;S:\OS2IMAGE\DISK_7; 23 SET PATH=.;S:\OS2IMAGE\DISK_1;S:\OS2IMAGE\DISK_2;S:\OS2IMAGE\DISK_3;S:\OS2IMAGE\DISK_4;S:\OS2IMAGE\DISK_5;S:\OS2IMAGE\DISK_6;S:\OS2IMAGE\DISK_7; 24 SET DPATH=.;A:\;S:\OS2IMAGE\DISK_1;S:\OS2IMAGE\DISK_2;S:\OS2IMAGE\DISK_3;S:\OS2IMAGE\DISK_4;S:\OS2IMAGE\DISK_5;S:\OS2IMAGE\DISK_6;S:\OS2IMAGE\DISK_7; 23 25 24 26 COUNTRY=001,COUNT437.SYS … … 47 49 REM PROTSHELL=S:\OS2IMAGE\DISK_2\CMD.EXE 48 50 REM Run the os2_cid_install.cmd file (renamed to VBOXCID.CMD on the ISO). 49 PROTSHELL=S:\OS2IMAGE\DISK_2\CMD.EXE /C S:\VBOXCID \VBOXCID.CMD51 PROTSHELL=S:\OS2IMAGE\DISK_2\CMD.EXE /C S:\VBOXCID.CMD 50 52 51 53 @@VBOX_SPLITTER_END[CONFIG.SYS]@@ … … 63 65 @@VBOX_SPLITTER_START[STARTUP.CMD]@@ 64 66 REM The startup file for C: for use after the successful install. 67 @@VBOX_COND_IS_INSTALLING_ADDITIONS@@ 68 C:\VBoxAdd\VBoxService.exe 69 @@VBOX_COND_END@@ 65 70 dhcpstrt -i lan0 71 @@VBOX_COND_IS_INSTALLING_TEST_EXEC_SERVICE@@ 72 C:\VBoxValKit\TestExecService.exe --scratch=D:\TestArea --cdrom=E:\ --foreground 73 pause 74 @@VBOX_COND_END@@ 75 66 76 @@VBOX_SPLITTER_END[STARTUP.CMD]@@ 67 77 -
trunk/src/VBox/Main/include/UnattendedInstaller.h
r93099 r93109 494 494 const char *pszSrc, size_t cbLeft) RT_NOEXCEPT; 495 495 496 static int patchTestCfg(uint8_t *pbFile, size_t cbFile, const char *pszFilename, UnattendedOs2Installer *pThis); 496 497 static int patchOs2Ldr(uint8_t *pbFile, size_t cbFile, const char *pszFilename, UnattendedOs2Installer *pThis); 497 498 -
trunk/src/VBox/Main/src-server/UnattendedOs2Installer.cpp
r93098 r93109 53 53 : UnattendedInstaller(pParent, 54 54 "os2_response_files.rsp", "os2_cid_install.cmd", 55 " OS2.RSP","VBOXCID.CMD",55 "os2_response_files.rsp", "VBOXCID.CMD", 56 56 DeviceType_Floppy) 57 57 { … … 327 327 return NULL; 328 328 } 329 330 #if 0 331 /** 332 * Patcher callback for TESTCFG.SYS. 333 * 334 * This is for debugging a mysterious DS corruption issue happening on an AMD 335 * 3990x host. 336 * 337 * @verbatim 338 dbgf event/0: xcpt_gp - #GP (general protection fault)! arg=0x1d8 339 VBoxDbg> r 340 eax=00000001 ebx=00dc0000 ecx=56d80000 edx=178b0000 esi=ffde0100 edi=feff44e4 341 eip=00000124 esp=00000f76 ebp=0000dbf3 iopl=3 nv up ei pl nz na po nc 342 cs=0763 ds=01db es=0130 fs=0000 gs=0000 ss=001f eflags=00003206 343 0763:00000124 cb retf 344 VBoxDbg> dw ss:sp 345 001f:00000f76: 0549 075b 03e4 0000-0fb8 04b9 44e4 0130 346 VBoxDbg> u cs:fc 347 0763:000000fc 55 push bp 348 0763:000000fd 8b ec mov bp, sp 349 0763:000000ff 53 push bx 350 0763:00000100 51 push cx 351 0763:00000101 52 push dx 352 0763:00000102 1e push DS 353 0763:00000103 33 c9 xor cx, cx 354 0763:00000105 b0 10 mov AL, 010h 355 0763:00000107 b2 24 mov DL, 024h 356 0763:00000109 ff 1e 22 00 call far [00022h] 357 0763:0000010d 72 0e jc +00eh (0011dh) 358 0763:0000010f 50 push ax 359 0763:00000110 1f pop DS 360 0763:00000111 f7 47 06 03 00 test word [bx+006h], 00003h 361 0763:00000116 74 05 je +005h (0011dh) 362 0763:00000118 b8 01 00 mov ax, 00001h 363 0763:0000011b eb 02 jmp +002h (0011fh) 364 0763:0000011d 33 c0 xor ax, ax 365 0763:0000011f 1f pop DS 366 0763:00000120 5a pop dx 367 0763:00000121 59 pop cx 368 0763:00000122 5b pop bx 369 0763:00000123 5d pop bp 370 0763:00000124 cb retf 371 VBoxDbg> dw ss:sp - 5*2 L8 372 001f:00000f6c: 0750 082a 220e 44e4-0f7e 0549 075b 03e4 373 * @endverbatim 374 * 375 * We end up with a \#GP on the RETF, but the stack frame is a valid 075b:0549 376 * return address (in TESTCFG's first code segment). The error code is 0x1d8, 377 * which makes no sense. DS contains 0x1db, which could be related, however it 378 * is the *wrong* value as seen by the stack restore frame above, it was just 379 * restored as 0750 (TESTCFG data segment). 380 * 381 * The patching here aim at modifying to code to try figure out what might 382 * trigger the bogus DS and \#GP(0x1d8). 383 * 384 * P.S. There are no exits or event injections taking place when DS gets 385 * corrupt, the last exit was a CR0 read in OS2KRNL's DOSSEG (0120:1798) 386 * probably related to we comming back to protected mode from real mode as we 387 * just made an APM BIOS call. 388 * 389 * Update: The values loaded off the stack aren't the ones ending up the 390 * registers, so that might explain why this goes south. 391 * 392 * @sa ticketref:20625 393 */ 394 /*static*/ 395 int UnattendedOs2Installer::patchTestCfg(uint8_t *pbFile, size_t cbFile, const char *pszFilename, UnattendedOs2Installer *pThis) 396 { 397 RT_NOREF(pThis, pszFilename); 398 399 static uint8_t const s_abVariant1[] = 400 { 401 /*0763:00fc*/ 0x55, /* push bp */ 402 /*0763:00fd*/ 0x8b, 0xec, /* mov bp, sp */ 403 /*0763:00ff*/ 0x53, /* push bx */ 404 /*0763:0100*/ 0x51, /* push cx */ 405 /*0763:0101*/ 0x52, /* push dx */ 406 /*0763:0102*/ 0x1e, /* push DS */ 407 /*0763:0103*/ 0x33, 0xc9, /* xor cx, cx */ 408 /*0763:0105*/ 0xb0, 0x10, /* mov AL, 010h */ 409 /*0763:0107*/ 0xb2, 0x24, /* mov DL, 024h */ 410 /*0763:0109*/ 0xff, 0x1e, 0x22, 0x00, /* call far [00022h] */ 411 /*0763:010d*/ 0x72, 0x0e, /* jc +00eh (0011dh) */ 412 /*0763:010f*/ 0x50, /* push ax */ 413 /*0763:0110*/ 0x1f, /* pop DS */ 414 /*0763:0111*/ 0xf7, 0x47, 0x06, 0x03, 0x00, /* test word [bx+006h], 00003h */ 415 /*0763:0116*/ 0x74, 0x05, /* je +005h (0011dh) */ 416 /*0763:0118*/ 0xb8, 0x01, 0x00, /* mov ax, 00001h */ 417 /*0763:011b*/ 0xeb, 0x02, /* jmp +002h (0011fh) */ 418 /*0763:011d*/ 0x33, 0xc0, /* xor ax, ax */ 419 /*0763:011f*/ 0x1f, /* pop DS */ 420 /*0763:0120*/ 0x5a, /* pop dx */ 421 /*0763:0121*/ 0x59, /* pop cx */ 422 /*0763:0122*/ 0x5b, /* pop bx */ 423 /*0763:0123*/ 0x5d, /* pop bp */ 424 /*0763:0124*/ 0xcb, /* retf */ 425 }; 426 static uint8_t const s_abVariant1Mask[] = 427 { 428 /*0763:00fc*/ 0xff, /* push bp */ 429 /*0763:00fd*/ 0xff, 0xec, /* mov bp, sp */ 430 /*0763:00ff*/ 0xff, /* push bx */ 431 /*0763:0100*/ 0xff, /* push cx */ 432 /*0763:0101*/ 0xff, /* push dx */ 433 /*0763:0102*/ 0xff, /* push DS */ 434 /*0763:0103*/ 0xff, 0xff, /* xor cx, cx */ 435 /*0763:0105*/ 0xff, 0xff, /* mov AL, 010h */ 436 /*0763:0107*/ 0xff, 0xff, /* mov DL, 024h */ 437 /*0763:0109*/ 0xff, 0xff, 0x00, 0x00, /* call far [00022h] */ 438 /*0763:010d*/ 0xff, 0xff, /* jc +00eh (0011dh) */ 439 /*0763:010f*/ 0xff, /* push ax */ 440 /*0763:0110*/ 0xff, /* pop DS */ 441 /*0763:0111*/ 0xff, 0xff, 0xff, 0xff, 0xff, /* test word [bx+006h], 00003h */ 442 /*0763:0116*/ 0xff, 0xff, /* je +005h (0011dh) */ 443 /*0763:0118*/ 0xff, 0xff, 0xff, /* mov ax, 00001h */ 444 /*0763:011b*/ 0xff, 0xff, /* jmp +002h (0011fh) */ 445 /*0763:011d*/ 0xff, 0xff, /* xor ax, ax */ 446 /*0763:011f*/ 0xff, /* pop DS */ 447 /*0763:0120*/ 0xff, /* pop dx */ 448 /*0763:0121*/ 0xff, /* pop cx */ 449 /*0763:0122*/ 0xff, /* pop bx */ 450 /*0763:0123*/ 0xff, /* pop bp */ 451 /*0763:0124*/ 0xff, /* retf */ 452 }; 453 AssertCompile(sizeof(s_abVariant1Mask) == sizeof(s_abVariant1)); 454 455 /* uUser1 = off to start modifying the code; */ 456 static const OS2CODEPATTERN s_aPatterns[] = 457 { 458 { s_abVariant1, s_abVariant1Mask, sizeof(s_abVariant1Mask), 0x010d - 0x00fc, 0, 0, 0, 0 }, 459 }; 460 461 PCOS2CODEPATTERN pPattern; 462 uint8_t *pbHit = findCodePattern(&s_aPatterns[0], RT_ELEMENTS(s_aPatterns), pbFile, cbFile, &pPattern); 463 if (pPattern) 464 { 465 /* We've got */ 466 uint8_t *pbPatch = &pbHit[pPattern->uUser1]; 467 #if 0 /* this seems to fix the issue */ 468 *pbPatch++ = 0xe6; /* out 78h, al - triggers an exit */ 469 *pbPatch++ = 0x78; 470 #elif 0 /* this seems to fix it too */ 471 *pbPatch++ = 0xf3; /* pause */ 472 *pbPatch++ = 0x90; 473 #elif 0 /* still reproducible with normal nops. */ 474 *pbPatch++ = 0x90; 475 *pbPatch++ = 0x90; 476 #else 477 # if 0 478 /*0763:010d*/ 0x72, 0x0e, /* jc +00eh (0011dh) */ 479 /*0763:010f*/ 0x50, /* push ax */ 480 /*0763:0110*/ 0x1f, /* pop DS */ 481 /*0763:0111*/ 0xf7, 0x47, 0x06, 0x03, 0x00, /* test word [bx+006h], 00003h */ 482 /*0763:0116*/ 0x74, 0x05, /* je +005h (0011dh) */ 483 /*0763:0118*/ 0xb8, 0x01, 0x00, /* mov ax, 00001h */ 484 /*0763:011b*/ 0xeb, 0x02, /* jmp +002h (0011fh) */ 485 /*0763:011d*/ 0x33, 0xc0, /* xor ax, ax */ 486 /*0763:011f*/ 0x1f, /* pop DS */ 487 /*0763:0120*/ 0x5a, /* pop dx */ 488 /*0763:0121*/ 0x59, /* pop cx */ 489 /*0763:0122*/ 0x5b, /* pop bx */ 490 /*0763:0123*/ 0x5d, /* pop bp */ 491 /*0763:0124*/ 0xcb, /* retf */ 492 # endif 493 /* Try straigthen out the code and mabye load DS into AX (we don't care about the return value) */ 494 *pbPatch++ = 0x50; /* push ax */ 495 *pbPatch++ = 0x1f; /* pop DS */ 496 497 *pbPatch++ = 0xf7; /* test word [bx+006h], 00003h */ 498 *pbPatch++ = 0x47; 499 *pbPatch++ = 0x06; 500 *pbPatch++ = 0x03; 501 *pbPatch++ = 0x00; 502 /* not je */ 503 *pbPatch++ = 0xb8; /* mov ax, 00001h */ 504 *pbPatch++ = 0x01; 505 *pbPatch++ = 0x00; 506 507 # if 0 /* try reload SS */ 508 *pbPatch++ = 0x8c; /* mov ax, ss */ 509 *pbPatch++ = 0xd0; 510 *pbPatch++ = 0x8e; /* mov ss, ax */ 511 *pbPatch++ = 0xd0; 512 # endif 513 # if 0 /* try reload CR3 to flush everything - not possible, we're in ring-3 */ 514 *pbPatch++ = 0x0f; /* mov eax, cr3 */ 515 *pbPatch++ = 0x20; 516 *pbPatch++ = 0xd8; 517 *pbPatch++ = 0x0f; /* mov cr3, eax */ 518 *pbPatch++ = 0x22; 519 *pbPatch++ = 0xd8; 520 # endif 521 522 *pbPatch++ = 0x1f; /* pop DS */ 523 # if 0 524 *pbPatch++ = 0x8c; /* mov ax, ds */ 525 *pbPatch++ = 0xd8; 526 # endif 527 *pbPatch++ = 0x5a; /* pop dx */ 528 *pbPatch++ = 0x59; /* pop cx */ 529 *pbPatch++ = 0x5b; /* pop bx */ 530 *pbPatch++ = 0x5d; /* pop bp */ 531 *pbPatch++ = 0xcb; /* retf */ 532 533 #endif 534 } 535 else 536 { 537 LogRelFunc(("No patch pattern match!\n")); 538 return VERR_NOT_FOUND; 539 } 540 541 return VINF_SUCCESS; 542 } 543 #endif 329 544 330 545 … … 587 802 { true, { "SCREEN01.SYS", NULL }, { "DISK_1", "DISK_2", NULL }, NULL, NULL, NULL }, 588 803 { true, { "SESMGR.DLL", NULL }, { "DISK_1", "DISK_2", NULL }, NULL, NULL, NULL }, 589 { true, { "TESTCFG.SYS", NULL }, { "DISK_1", "DISK_2", NULL }, NULL, NULL, NULL },804 { true, { "TESTCFG.SYS", NULL }, { "DISK_1", "DISK_2", NULL }, NULL, NULL, NULL, /*patchTestCfg*/ }, 590 805 { true, { "VIO437.DCP", "VTBL850.DCP" }, { "DISK_1", "DISK_2", NULL }, NULL, NULL, NULL }, 591 806 { true, { "VIOCALLS.DLL", NULL }, { "DISK_1", "DISK_2", NULL }, NULL, NULL, NULL },
Note:
See TracChangeset
for help on using the changeset viewer.