From e58a7c24acc72b57ae87101b936924d7d61dfe91 Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 23 May 2004 16:28:35 +0000 Subject: [PATCH] int13 cdrom 32 bit register update fix (aka FreeBSD CDROM boot) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@850 c046a42c-6fe2-441c-8c8c-71466251a162 --- pc-bios/bios.bin | Bin 65536 -> 65536 bytes pc-bios/bios.diff | 42 +++++++++++++++++++++++++++++++++++------- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin index 6c27175144c3fc711228aba5037b1b7428c0d6dd..a8c407a58562078124e52ab1ba8bc98df31f664e 100644 GIT binary patch delta 4033 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 XxizcN&)5}Qt-i-%yU9Q>kw5!?W~K|G delta 3942 zcmZWs3s6&M7QQ#+!Ar!Th(w`a5Z{2dMct@a==CwS23_i7$4VT;sdn1hMdVczgg|ns zwEC-E6sHeeXSdEMn(p?t_K{g_*VgB@I<@t&)*{{zH27Ruk?eo|a}yI*XXKpkeCPb< zod3I*tIeji+0<=X%aAzJ)i-sb5NDF#Os7Ax+s#dao)|0!K91yC(sTi2g~c#j@3@-X z?l~M)cP!SkEZUP9EeiVV_5oaklcwyjj3P5%*JytzC;<1LmT`I(R8bESzK-%7h$0^> z9yT}Db0W&q9MvRf^YYC8^1-roPu(%KQ;;d5(Q*uW6`>A*)Ces_s2!kK29eU0nY^Af zuQViTHIc|#x7+z6tJdj!xr^*tl1zSH+3`Z)q(L9m9n*?JZ@s&00{wy0!c^uXRX;A0 z=t*(~Jtk5aELQ2=t%C_J={$d>tJ0I$k}*%|J?A-5cx3XgHz?#!D4Fgq+a1fp0*Xq; zX9gV4R^ZmVgWR?tmjmu!N~Vpb+-L!p=gmU4I@|44wefHxPl6>)^fX;pe^ z(1R|gYT@4^ttVYeHwDWi@2x7ZGE4r?`*eP(jH4w3D`{tt-+#pKUj%Sq-4l1xJxC$A zvf#x2INpWa*V2z4j~CLxaAQcJ!5BCV0e|@gI5P?Fb7N`Zcx-eAbmcGagJ3f9$FW9@ zD%Rw1hPm9O!&J&>J*_a><*!&c1yimw%*e*oJcZb2faSOuEe)Z4Ay7I(`vDS#EA-9^ zrMXyu)&aFvu%e3)%izpb081D+3&BxHG>4SUL})rdUQSYoqY=$y$-l?sF^DCE795M1 zf7g@N$05|UtIir|bcVnD7uZ)ehB`yolMwm|p`43&(@!HhatFN#FIDK{>~<=RO5NiWqLRhv6f02hWzMBxrS zPKu%6F93?dUGQtE|Gjez1tb+`mZGWq1%!j%0p=;Im?e^fHN*M2q_TQ)!2%YcLWNDR zZA8%XwbH!^vpm9CP~Z@5i^6SVx5-u(cck}UizFQ_zNra{chH3Ulom_6s}rsF9jqU! z5=5_~|0v*}M<3p*EbANaS%XmHQ}AGQ;CvkF>}EW_a@ITGJqlcE8Z>XT(H_0g!J8gH z-l<99Z;=BvBdiZ79cPJm1ZQ!Z+;o;p$}H<)-R#(#jX?1*`&VXnGW$HUz0CfO*FN7{oIh+>qK z3v|#q)zUX~YS50}PHtBZu|BG2Jp|S0ML(#l(8@@~xt)xCO{Gp3g&;5dootS#x4YFIDp`)=J6@!eoHiti$`QG92Z zjp94XY!u(8%trC;XEulrwD6pwg>|H`Hevd5I9(LNR5ur~Fx5SSSeWY4$cMEFi32ba zrn8W|8GtR|0Zz46Cy_kTZbI&3YhRn`hBEC45A_{6~p^a&1vW;oz zca(wM6p=0VBk|!)Vm4|hnc1kJIA)`URLn*VJ=h4jsG&|~_t#Jx?X&-T ztkqh#^8X~|Kw_Ar$`A{aR54;NF&+pnr+JS^elN> zH00>2>E@k6pC}}lA_mqC=bMDM=@Hz(Iz6@e?Cyc}Q2=Qwl&oXqf|#;aQ$@3AJTK2I z|5gcGe?&j%WAW2UK`G;13K~H_3iWg)1--f^p?8i`=mpR$@1^O+JX79!fa&MRHRyz2 zpR1(UiKS^snjI3MS}dI)Q0)x>vB(1QUemM)Pb5dWa+6&*n_kiIN6F$Xqxe>`am%P7 zrRGJ23+41y6IYfbKi9f!;gqvwGstIKp3W*cPo5&U-I y^c8CUw$qY&hO$c|q3pyAA2>;_RoyjlTGNiy(k0*z+v;DUzKyYMq}xA`Py8S20^vLW diff --git a/pc-bios/bios.diff b/pc-bios/bios.diff index dee62e012a..24a22b9bf3 100644 --- a/pc-bios/bios.diff +++ b/pc-bios/bios.diff @@ -4,7 +4,7 @@ RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v retrieving revision 1.108 diff -u -w -r1.108 rombios.c --- rombios.c 9 Feb 2004 16:48:50 -0000 1.108 -+++ rombios.c 22 May 2004 15:47:51 -0000 ++++ rombios.c 23 May 2004 15:48:52 -0000 @@ -2254,6 +2254,7 @@ type = read_byte(get_SS(),buffer+1) & 0x1f; removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0; @@ -58,7 +58,35 @@ diff -u -w -r1.108 rombios.c } package_count = mouse_flags_2 & 0x07; -@@ -8401,57 +8416,69 @@ +@@ -4833,8 +4848,10 @@ + // --------------------------------------------------------------------------- + + void +-int13_cdrom(DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS) +- Bit16u DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS; ++int13_cdrom(DI, DIH, SI, SIH, BP, BPH, SP, SPH, BX, BXH, DX, DXH, CX, CXH, AX, AXH, ++ DS, ES, FLAGS) ++ Bit16u DI, DIH, SI, SIH, BP, BPH, SP, SPH, BX, BXH, DX, DXH, CX, CXH, AX, AXH, ++ DS, ES, FLAGS; + { + Bit16u ebda_seg=read_word(0x0040,0x000E); + Bit8u device, status, locks; +@@ -7692,9 +7709,12 @@ + push ds + push ss + pop ds +- pusha ++ // ebx is modified: BSD 5.2.1 boot loader problem, so we save all ++ // the 32 bit registers. It should be done in all the bios or no 32 ++ // bit register should be used without saving it first. ++ pushad + call _int13_cdrom +- popa ++ popad + pop ds + pop es + popf +@@ -8401,57 +8421,69 @@ cmp al, #0x08 jne pci_pro_f09 call pci_pro_select_reg @@ -128,7 +156,7 @@ diff -u -w -r1.108 rombios.c jmp pci_pro_ok pci_pro_unknown: mov ah, #0x81 -@@ -8468,6 +8495,7 @@ +@@ -8468,6 +8500,7 @@ retf pci_pro_select_reg: @@ -136,7 +164,7 @@ diff -u -w -r1.108 rombios.c mov eax, #0x800000 mov ax, bx shl eax, #8 -@@ -8476,6 +8504,7 @@ +@@ -8476,6 +8509,7 @@ and al, #0xfc mov dx, #0x0cf8 out dx, eax @@ -144,7 +172,7 @@ diff -u -w -r1.108 rombios.c ret use16 386 -@@ -8536,57 +8565,69 @@ +@@ -8536,57 +8570,69 @@ cmp al, #0x08 jne pci_real_f09 call pci_real_select_reg @@ -214,7 +242,7 @@ diff -u -w -r1.108 rombios.c jmp pci_real_ok pci_real_unknown: mov ah, #0x81 -@@ -8599,6 +8640,7 @@ +@@ -8599,6 +8645,7 @@ ret pci_real_select_reg: @@ -222,7 +250,7 @@ diff -u -w -r1.108 rombios.c mov eax, #0x800000 mov ax, bx shl eax, #8 -@@ -8607,6 +8649,7 @@ +@@ -8607,6 +8654,7 @@ and al, #0xfc mov dx, #0x0cf8 out dx, eax -- 2.30.2