VirtualBox

Changeset 93109 in vbox


Ignore:
Timestamp:
Dec 31, 2021 2:29:54 AM (3 years ago)
Author:
vboxsync
Message:

Main/UnattendedOs2Installer: Updates :-)

Location:
trunk/src/VBox/Main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/UnattendedTemplates/os2_cid_install.cmd

    r93097 r93109  
    2323cd s:\os2image\disk_6
    2424
    25 lvm.exe /NEWMBR:1
    26 if ERRORLEVEL 0 goto lvm_newmbr_ok
     25lvm.exe /NEWMBR:1 && goto lvm_newmbr_ok
    2726echo ** error: Writing a new MBR on disk 1 failed.
    2827goto lvm_failed
     
    3130lvm.exe "/SETNAME:DRIVE,[ D1 ],BootDrive"
    3231
    33 lvm.exe /CREATE:PARTITION,OS2Boot,1,1024,PRIMARY,BOOTABLE
    34 if ERRORLEVEL 0 goto lvm_create_partition_ok
     32lvm.exe /CREATE:PARTITION,OS2Boot,1,1024,PRIMARY,BOOTABLE && goto lvm_create_partition_ok
    3533echo ** error: Creating boot partition on disk 1 failed.
    3634goto lvm_failed
    3735:lvm_create_partition_ok
    3836
    39 lvm.exe /CREATE:VOLUME,COMPATIBILITY,BOOTOS2,C:,OS2Boot,1,OS2Boot
    40 if ERRORLEVEL 0 goto lvm_create_volume_ok
     37lvm.exe /CREATE:VOLUME,COMPATIBILITY,BOOTOS2,C:,OS2Boot,1,OS2Boot && goto lvm_create_volume_ok
    4138echo ** error: Creating boot volume on disk 1 failed.
    4239goto lvm_failed
    4340:lvm_create_volume_ok
    4441
    45 lvm.exe /SETSTARTABLE:VOLUME,OS2Boot
    46 if ERRORLEVEL 0 goto lvm_set_startable_ok
     42lvm.exe /SETSTARTABLE:VOLUME,OS2Boot && goto lvm_set_startable_ok
    4743echo ** error: Setting boot volume on disk 1 startable failed.
    4844goto lvm_failed
    4945:lvm_set_startable_ok
    5046
    51 lvm.exe "/CREATE:PARTITION,Data,1,LOGICAL,NotBootable,[ FS1 ]"
    52 if ERRORLEVEL 0 goto lvm_create_data_partition_ok
     47lvm.exe "/CREATE:PARTITION,Data,1,LOGICAL,NotBootable,[ FS1 ]" && goto lvm_create_data_partition_ok
    5348echo ** error: Creating data partition on disk 1 failed.
    5449goto lvm_failed
    5550:lvm_create_data_partition_ok
    5651
    57 lvm.exe /CREATE:VOLUME,LVM,D:,Data,1,Data
    58 if ERRORLEVEL 0 goto lvm_create_data_volume_ok
     52lvm.exe /CREATE:VOLUME,LVM,D:,Data,1,Data && goto lvm_create_data_volume_ok
    5953echo ** error: Creating data volume on disk 1 failed.
    6054goto lvm_failed
     
    8680s:
    8781
    88 FORMAT C: /FS:HPFS /V:OS2Boot < S:\VBoxCID\YES.TXT
    89 if ERRORLEVEL 0 goto format_boot_ok
     82FORMAT C: /FS:HPFS /V:OS2Boot < S:\VBoxCID\YES.TXT && goto format_boot_ok
    9083echo ** error: Formatting C: failed.
    9184PAUSE
    9285:format_boot_ok
    9386
    94 FORMAT D: /FS:JFS /V:Data < S:\VBoxCID\YES.TXT
    95 if ERRORLEVEL 0 goto format_data_ok
     87FORMAT D: /FS:JFS /V:Data < S:\VBoxCID\YES.TXT && goto format_data_ok
    9688echo ** error: Formatting D: failed.
    9789PAUSE
     
    10799copy S:\cid\dll\os2\*.*            C:\VBoxCID
    108100copy S:\os2image\disk_2\inst32.dll C:\VBoxCID
    109 copy S:\VBoxCID\*.*                C:\VBoxCID
    110 if ERRORLEVEL 0 goto copy_ok
     101copy S:\VBoxCID\*.*                C:\VBoxCID && goto copy_ok
    111102echo ** error: Copying CID stuff from CDROM to C: failed.
    112103PAUSE
     
    121112cd C:\OS2
    122113C:\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
     114REM does not exit with status 0 on success.
     115goto semaint_ok
     116PAUSE
    125117:semaint_ok
    126118REM S:\OS2IMAGE\DISK_2\CMD.EXE
     
    128120cd C:\VBoxCID
    129121C:\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
     122REM does not exit with status 0 on success.
     123goto seinst_ok
    131124PAUSE
    132125:seinst_ok
    133 S:\OS2IMAGE\DISK_2\CMD.EXE
     126REM S:\OS2IMAGE\DISK_2\CMD.EXE
    134127
    135128:step5
     
    137130echo Step 5 - Make C: bootable.
    138131echo .
    139 c:
    140 cd c:\OS2
    141 SYSINSTX C:
    142 if ERRORLEVEL 0 goto sysinstx_ok
     132C:
     133cd C:\OS2
     134SYSINSTX C: && goto sysinstx_ok
    143135pause
    144136:sysinstx_ok
    145137
    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
     138echo Copying over patched OS2LDR from A:
     139attrib -R -H -S C:\OS2LDR
     140copy C:\OS2LDR C:\OS2LDR.ORG
     141del  C:\OS2LDR
     142copy A:\OS2LDR C:\OS2LDR && goto copy_os2ldr_ok
     143pause
     144:copy_os2ldr_ok
     145attrib +R +H +S C:\OS2LDR
    153146
    154147echo Copying over final startup.cmd
    155 ren C:\STARTUP.CMD C:\STARTUP.ORG
     148if exist C:\STARTUP.CMD ren C:\STARTUP.CMD C:\STARTUP.ORG
    156149copy S:\VBoxCID\STARTUP.CMD C:\STARTUP.CMD
    157150
     
    163156echo Step 6 - Cleanup
    164157echo .
    165 echo ** skipped
     158cd C:\
     159del /N C:\*.bio
     160del /N C:\*.i13
     161del /N C:\*.snp
     162del /N C:\CONFIG.ADD
     163mkdir C:\MMTEMP 2>nul
     164del /N C:\MMTEMP\*.*
     165for %%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\*.*
     166for %%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
     167rmdir C:\MMTEMP\OS2\DRIVERS
     168rmdir C:\MMTEMP\OS2
     169rmdir C:\MMTEMP
     170copy C:\CONFIG.SYS C:\VBoxCID && del /N C:\*.SYS
     171copy C:\VBoxCID\CONFIG.SYS C:\
    166172
    167173:step7
    168174echo .
    169 echo Step 7 - Post install actions
     175echo Step 7 - Install guest additions.
     176echo .
     177@@VBOX_COND_IS_INSTALLING_ADDITIONS@@
     178mkdir C:\VBoxAdd
     179copy S:\VBoxAdditions\OS2\*.*  C:\VBoxAdd && goto ga_copy_ok
     180pause
     181:ga_copy_ok
     182echo TODO: Write script editing Config.sys for GAs
     183@@VBOX_COND_ELSE@@
     184echo Not requested. Skipping.
     185@@VBOX_COND_END@@
     186
     187:step8
     188echo .
     189echo Step 8 - Install the test execution service (TXS).
     190echo .
     191@@VBOX_COND_IS_INSTALLING_TEST_EXEC_SERVICE@@
     192mkdir C:\ValKit
     193mkdir D:\TestArea
     194copy S:\VBoxValidationKit\*.* C:\VBoxValKit && goto valkit_copy_1_ok
     195pause
     196:valkit_copy_1_ok
     197copy S:\VBoxValidationKit\os2\x86\*.* C:\VBoxValKit && goto valkit_copy_2_ok
     198pause
     199:valkit_copy_2_ok
     200@@VBOX_COND_ELSE@@
     201echo Not requested. Skipping.
     202@@VBOX_COND_END@@
     203
     204:step9
     205@@VBOX_COND_HAS_POST_INSTALL_COMMAND@@
     206echo .
     207echo Step 9 - Custom actions: "@@VBOX_INSERT_POST_INSTALL_COMMAND@@"
    170208echo .
    171209cd C:\VBoxCID
    172210C:
    173 
    174 :step8
    175 echo .
    176 echo Step 8 - Done.
     211@@VBOX_INSERT_POST_INSTALL_COMMAND@@
     212@@VBOX_COND_END@@
     213
     214
     215:done
     216echo .
     217echo Finally Done.  Now we reboot.
    177218echo .
    178219cd C:\OS2
  • trunk/src/VBox/Main/UnattendedTemplates/os2_response_files.rsp

    r93095 r93109  
    1818BREAK=OFF
    1919
    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:\;
     20REM Just to be on the safe side, all paths include disk #1 thru #6, omitting #0
     21REM as it doesn't contain much interesting.
     22LIBPATH=.;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;
     23SET 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;
     24SET 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;
    2325
    2426COUNTRY=001,COUNT437.SYS
     
    4749REM PROTSHELL=S:\OS2IMAGE\DISK_2\CMD.EXE
    4850REM 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.CMD
     51PROTSHELL=S:\OS2IMAGE\DISK_2\CMD.EXE /C S:\VBOXCID.CMD
    5052
    5153@@VBOX_SPLITTER_END[CONFIG.SYS]@@
     
    6365@@VBOX_SPLITTER_START[STARTUP.CMD]@@
    6466REM The startup file for C: for use after the successful install.
     67@@VBOX_COND_IS_INSTALLING_ADDITIONS@@
     68C:\VBoxAdd\VBoxService.exe
     69@@VBOX_COND_END@@
    6570dhcpstrt -i lan0
     71@@VBOX_COND_IS_INSTALLING_TEST_EXEC_SERVICE@@
     72C:\VBoxValKit\TestExecService.exe --scratch=D:\TestArea --cdrom=E:\ --foreground
     73pause
     74@@VBOX_COND_END@@
     75
    6676@@VBOX_SPLITTER_END[STARTUP.CMD]@@
    6777
  • trunk/src/VBox/Main/include/UnattendedInstaller.h

    r93099 r93109  
    494494                           const char *pszSrc, size_t cbLeft) RT_NOEXCEPT;
    495495
     496    static int patchTestCfg(uint8_t *pbFile, size_t cbFile, const char *pszFilename, UnattendedOs2Installer *pThis);
    496497    static int patchOs2Ldr(uint8_t *pbFile, size_t cbFile, const char *pszFilename, UnattendedOs2Installer *pThis);
    497498
  • trunk/src/VBox/Main/src-server/UnattendedOs2Installer.cpp

    r93098 r93109  
    5353    : UnattendedInstaller(pParent,
    5454                          "os2_response_files.rsp", "os2_cid_install.cmd",
    55                           "OS2.RSP",                "VBOXCID.CMD",
     55                          "os2_response_files.rsp", "VBOXCID.CMD",
    5656                          DeviceType_Floppy)
    5757{
     
    327327    return NULL;
    328328}
     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
     338dbgf event/0: xcpt_gp - #GP (general protection fault)! arg=0x1d8
     339VBoxDbg> r
     340eax=00000001 ebx=00dc0000 ecx=56d80000 edx=178b0000 esi=ffde0100 edi=feff44e4
     341eip=00000124 esp=00000f76 ebp=0000dbf3 iopl=3 nv up ei pl nz na po nc
     342cs=0763 ds=01db es=0130 fs=0000 gs=0000 ss=001f               eflags=00003206
     3430763:00000124 cb                      retf
     344VBoxDbg> dw ss:sp
     345001f:00000f76: 0549 075b 03e4 0000-0fb8 04b9 44e4 0130
     346VBoxDbg> u cs:fc
     3470763:000000fc 55                      push bp
     3480763:000000fd 8b ec                   mov bp, sp
     3490763:000000ff 53                      push bx
     3500763:00000100 51                      push cx
     3510763:00000101 52                      push dx
     3520763:00000102 1e                      push DS
     3530763:00000103 33 c9                   xor cx, cx
     3540763:00000105 b0 10                   mov AL, 010h
     3550763:00000107 b2 24                   mov DL, 024h
     3560763:00000109 ff 1e 22 00             call far [00022h]
     3570763:0000010d 72 0e                   jc +00eh (0011dh)
     3580763:0000010f 50                      push ax
     3590763:00000110 1f                      pop DS
     3600763:00000111 f7 47 06 03 00          test word [bx+006h], 00003h
     3610763:00000116 74 05                   je +005h (0011dh)
     3620763:00000118 b8 01 00                mov ax, 00001h
     3630763:0000011b eb 02                   jmp +002h (0011fh)
     3640763:0000011d 33 c0                   xor ax, ax
     3650763:0000011f 1f                      pop DS
     3660763:00000120 5a                      pop dx
     3670763:00000121 59                      pop cx
     3680763:00000122 5b                      pop bx
     3690763:00000123 5d                      pop bp
     3700763:00000124 cb                      retf
     371VBoxDbg> dw ss:sp - 5*2 L8
     372001f: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*/
     395int 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
    329544
    330545
     
    587802        { true, { "SCREEN01.SYS", NULL          }, { "DISK_1", "DISK_2", NULL }, NULL,   NULL, NULL },
    588803        { 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*/ },
    590805        { true, { "VIO437.DCP",   "VTBL850.DCP" }, { "DISK_1", "DISK_2", NULL }, NULL,   NULL, NULL },
    591806        { true, { "VIOCALLS.DLL", NULL          }, { "DISK_1", "DISK_2", NULL }, NULL,   NULL, NULL },
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette