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 zc-n234^&gv9mn5`NeB?-pHL74#PG+e7}QE}Xi?~!I`u@+&f0&(gPhLwxY|+*ioV3W zg!f)5tzN6M;&xW-&RSQ^%;w^BTej-4okQE{j;#YnTZ%6P3HYy6DcSw=9(lm@9Js&l z?|bjNzu*1bmteDLZ8oh(Z%s}u?R+IlWKv6|S90JlbC<=2W}+elV;z84mTN?KGw)f!Qemo^QoQl6ji zuH&3uWQI6@?QHmqv;ny-XSQFd^ugy#_3+^axfY{br9TS&Y>x`O54)NTjMX!;vjhL8 zMCM^>__cJ|{CjAItC{^q8ntSD^{jj)2<$^%&OhSyjCd*J{Y~}40vN=|Z4S;MZmroL z)OctMb}C5_v$;GPFY-GSJ+(O}Ya~LuEYYK%>-B*gJ?tN<8XVkQ!Qzqh?Jr^dzFNu> zIg&0cg~MmU;Yy3@5DMRceNgLiuT#eA@(B$e8l%S(y&LN$RbnzpTtbO(-RDS3#S++6 zlQN5JbTQghxNaCFrx5>4yit<|uaSW@ufHZuBbWAF3rctV1*bE~ly9(R!sY6+iFO)k zMSd(zBhs%`QVx-hwO~+gz*AV`TTT`*kyJfiw32AKl!ZlNH5Qi;F^?E6s%7(uv}xb8YinMtZg<(^BVYeXvg4>^eW zM4f&B9z+ll`n|c!MB_VQ&^=CadsK^*5NW$gS_q|LbgxG*TuPi5--ZjD{XEm*$>f># zU@pvQn0DJ$a@u>g6crkDONjS7h!rL`o(^A`^yhi<_v7@B<~C0=U=9^9T2kPK4`*@RAaWeKdt0x?cEZj77E~K+k@%q! zUnTL75})Ih9ir$IFZTll@2i6r>>Q7Sc>FOQ_u}zcJidj;9z5>Dn=CN$~13`l|#^zTS!A8?~-?BPb!c%2(f z<3Bhxjb}L(fG5DQbQ#E%uRA=l%PAMlDT(+gI+wM}} zyX}a;*X@YFcijLc(~N~L%WeT^$M%TYO`$ws}ZW!*f3RdZJ4TsHf1;Kz+2AL zb*JqLRYh!ss$4cgRT>+iY9bqvh#ijMV^@R=Sf938rp-l*Z0K*|w_o1UW56w@7wLE4zfp!oCaH8noFkofGm{og zpyC_}a5U`n$8iQE>FVWKAAxIP=1T2$%;Yfqx-NayfI9gQzJ844dz!35$6HV|4M)T_ zBnG40%+NA{8A75(Y6VN&nXtAhck(n&nPk*PCjG2IewIaA4Gy>$f}Y|G?=AOFbo6=f zw6|MbQ$)t$lv_AbOOxYcZ2>d zFoGvEnk=viTuXFkg*;QbU+&sgI;S=Y`GI%AexCOF-~Q(cSj(Qy$?8$v;mz8Sv4C_oVG8#L3^L%_JjU# H9DVVBW~K|G delta 3942 zc-n233s6&68i4N&dGH2Xf)kzTKmYXwrlHiTb% zomd#@ITz+>4r^kRd3kz&^>~3jWIiLeGXf+EC56!|1a%-JCuj{p?FdC;1S&RU(rVDW zK@+c3gp#bS2kk%LyiWT|UEn}z68LFD#|wdX8uy|3jFM*tEbhu#@P+IR?Mi>D?uS(_ z_)bC%e49{lW07L*ZWa35rt@4#FunHWzdE}{v4^)-YN$a!wBh@VLcU4*LgR}Z1dB$7V^7pj%v zH6~%^bXO$G#I5zUqUjr7;^`D}$sNqJc)N

TSV95+U31Rar}bb^kyVo`3wQz&*7 zk_EJ6ss=B*im(hy&mvfk;SvI;kVL&?*-U~KBIKn4iBk#9#25d8uxW(FNf(?>nEya< z!5IW~9Wb+jLKpd~e@0W;WU5n=J%^wl3Cg)n4&rG-C+~v?;f00{X18l;d`~D9^T^yz z$s+R!s*|7v5Gl|dd;p}aAD?n=FI*|x%`rC|DIC-0&44*Frp7*K3m|rE-1aQ z00sW)C-|{33k6Ng6Z|m2L?g|OCb^GY3K-BN_c6&u#Ak=Z!Enq2o_T;^1cW~$$TJU7 zY=ZH3_Gu8fWR%_&4#Usw(&!kD#8xcf!SRMkbRnp%pIfj3&p=U8CvZ1Hc+`zYA$lR% zUQoa>Jv`H+?baD9qfZU|dzDKCQ+70=i#p&1y)Z2jbl1nTy&SG*5Y>a|9TN8k;;SSc z2*h7=fdWzV2`9D#1s_R+gE-GG=Dm%g{=iPsQ1MzLtkD}je9}?i?S>TkJ~-Bp%s%D< zdx_xA;ySIL)d-9mWoV8m=CdK zB74|~8Myl9U3RfeV%r>>#LNuaXfxxaxk{VF%s%UAGw&keC>m+z_tueS{?n?Fy7;kG z;^I;pa#6Oz2I}hPJYQlREn}E1aDbDoqhxf62go&|i@p{GQCmSz{RFn(GSWt`Wu%SQ zEhB9_XOY_Yg+(HuLmC{iNNwC}k=mGP9kwxI*v2?3c&8y*_Q-WQSt~n^*b#qX@OXi?_r_Dk6J~0R7J8BNdhqm^d*v74(*c7*Lon@?bg_g0_ zJ!2VbT^jhn6c-<58S7b}88q3Zhy6)Bj!j_DTkoWt1A^XYsoa1^n`{5{Yi3!1Y*6y~0W*sxS^qH0;nyBX(%65j*rd zW1yN6u*;gjer5_dG=~j3G=&X1l*9%die`fj$=IMnkGBUM>fHWY4msGd&#_k4ykU$| z96MI2N_MPLW$f4o*>ZNQVDkWPn@b-7U)pNuN6y^FT$=6$uW=LO8aY?vca1k2A2cet zByJYBm@5V?Tt5AKaDyufJ#rX+j*k((0a^Crv=#ivo*OrjUsB_(nN^E^SME4(KX1Pe zrtvv*Hr0#&`gumKqpPD%9lT6r?ryMm@r)8y181_^6??>zo&|65njBR<{w^`ZGjY0* z81p2$iHTkqLdBTXa5Q9f$5_G;Qq+i7odMVQlr4%n?C%i#gf0A9i#pv8A54+tqm@Wu z#yb#dhl21Tf?ib$PGLdSL~4w`oC$CzJwRxk=7@O)o3x(_ra3jM0$l|p)}j;c%$o@-sZ za^B_2Mc~t2Pv?~ho{NT5)j@Cb+BJVHO^Hu!Rh9`QZ3flBR8O71RS8L%(EAfg@oe@# z`izphUQF>_f^E)mH(wJ@fUMm&>5o7(SS%Y%0V}|dYFnz$k<{^e`&M06r3&RYJLm1; zXqs|oeAx-<0`ISs#_YH#yX zKRhmEI)qne3EFHyD7uhHp&!9L6D@smvhPwyx3KKw1=%I%xR$B3bLiJzSy_D)scU)&y%*Sh#frc0H>6&I*%hH^+1VLB h6eKt|b~i*Tb^B5)N>QA++g~d0A#-~`w?BrC|3B*j;XD8U diff --git a/pc-bios/bios.diff b/pc-bios/bios.diff index dee62e012a7..24a22b9bf36 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.39.5