From de71a6119c348d310b8934f8a05f6aec231b29b1 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Sat, 6 Dec 2025 18:23:27 +1100 Subject: [PATCH] FPU: Make FPSCR bit 11 always read as 0 Bit 11 (52 in BE numbering) is a reserved bit. Signed-off-by: Paul Mackerras --- fpu.vhdl | 4 ++-- tests/fpu/fpu.c | 1 + tests/test_fpu.bin | Bin 33136 -> 33136 bytes 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/fpu.vhdl b/fpu.vhdl index daccc86..05acf3b 100644 --- a/fpu.vhdl +++ b/fpu.vhdl @@ -1323,7 +1323,7 @@ begin opsel_s <= S_ZERO; misc_sel <= "000"; opsel_sel <= AIN_ZERO; - fpscr_mask := (others => '1'); + fpscr_mask := x"FFFFF7FF"; -- ignore bit 11 (52 BE), it's reserved cr_op := CROP_NONE; update_fx := '0'; arith_done := '0'; @@ -1428,7 +1428,7 @@ begin fpscr_mask(k + 3 downto k) := "0000"; end if; end loop; - v.fpscr := r.fpscr and (fpscr_mask or x"6007F8FF"); + v.fpscr := r.fpscr and (fpscr_mask or x"6007F0FF"); v.instr_done := '1'; when DO_FTDIV => diff --git a/tests/fpu/fpu.c b/tests/fpu/fpu.c index b89674f..784d81f 100644 --- a/tests/fpu/fpu.c +++ b/tests/fpu/fpu.c @@ -274,6 +274,7 @@ void set_fpscr(unsigned long fpscr) unsigned long fpscr_eval(unsigned long val) { val &= ~0x60000000; /* clear FEX and VX */ + val &= ~0x00000800; /* clear reserved bit 52 (BE) */ if (val & 0x1f80700) /* test all VX* bits */ val |= 0x20000000; if ((val >> 25) & (val >> 3) & 0x1f) diff --git a/tests/test_fpu.bin b/tests/test_fpu.bin index e75740c0a82a2075a48977cfa7e0d1a7b3563f8b..13aad7d991130e9b93d1a92205d76ed09e19bf49 100755 GIT binary patch delta 2915 zcmZuz4@^_n8o#HbN)t&${#3@FwssX*DJ@o@GMzHy4Tfy^+%k#idEdFc-Mc04 zCii#m?|0Alo$q|-JLjI&HgXE$+x|*2!IMMD7&Pu>ELPG#^FCd1sn8Vs1YZo%%LsMT>@7Pt6rLZ4S4s%szxFsD1A zi}ZF|wsTQl^BZ+h`nUS6*#8-f!~bn}(1Y40?kewxp`E4J&-hLtF|e2ZGwTCvv4uO{ z$Sg)7yR5KkG^sQ(g?(jyPX9_>dpPeR#}!uyEv0RsvrL(lW(DCgB~J6%G9Z&+DBsx2 zT6y7y_L^svEomOmKg-|H1M1?qLZMF!=MDY8Ha*yelGjVz>j_v?h^o^twj_FTS=_qyi3*QV}Sfj4SRc)Z2JKjV%%GaprA3hLV%?E!` zvZ+{~e#gc=34@`+sF-?^v}%E#io=RdkOkT9#fY_+nSeY3cgZO;?;X`B-u6T9#8*}?(rn@jUJDpCiOTAM{5qV z7;DVr0?2Ds2A1bkjM0CmdmKS7wO)me+IHfFXsucH%?fO)ElD#^ETo%XLoPK}gT~TM zM&PK$NU|VmN$*^~!TQ&`>DIViqxBTntVUdMK5M$Q6TksESyKGGXd#r_^ ztILt~EyL^9^!R=A={`Dv%Sy@R7!G;gIwUuUH#C>He zM;0H_x#f?Z$_#u030scu6I4UvJ4VjkPX4Xr=;bO~hZtA_wU1AH)QSEYGDycdkjrUz%`j zMXbQvF+=J8q{K0;5${3NK9*<)@VyAG?aRq4i&OfH_=P*j_JlKu+ zzxCNwcxV|$yaZ#2HzAIg0V{|VkoBAj&m0EC0Jss)gAZ{Ah7o^(F~lN>BkqG0#MdCJ zS%rrm1L75MBi;oc;uaW2+zn%hFG3t~5LOUBhAfAQ+yDb&1-Komyullk7Ku@-@tKP` zc^kqGE%_Q^j#Amf8}PZK5<`0IFyeX4&{B%7JS}>{LAZrSoD^^km5ZQrs>mYPouzs8 z-%`rlv1>QpxtlPZ5O&te{5Ro=vrf^7Vg$t^c6@t~XF~z?{p7kz}`;@qB1UoPlGlygU delta 2881 zcmZuz4@{G18vowTPI?EM{HX;ilv)sKTmA@0OZnFzM@!2evo#rUMi@sXxm*s9k<_DD zP?wVnY?wz9O=erD(ojPI{zypG{IT7J2^3w{~Ftw#sunrnYt6?5mP5Ti2Q#up-fUfJh(YK|W*c!E^SFmat0d~-0`rFJ$ zb$Sg_Zqs)&70v5~UBBb)6kq3vHAd>SRzKx#CLOglOM2_&&8_~E6x{I{e7Xz;Sj0uc zGWx?A$AKxCcGgSYOr51&8&0!vE#S|ST0`T!5nGAWY;{HYc_JnSGb>m;&1W9ZJlWZ5 zO_qXo{eQWe^S_pE!TdwW!}oP-zzf^U(xknE`gdkwp0S<8&QW#N-{a1}BUUajYN27Lw zzkZj-6%_&Tg?{~yxm%L7p*gKmOYi^lX@if@cqpRrdFtCWlF;ry7Srl`LuvF%Pg;Hd zVMZ^Nnkrcn^_Y&UjGViD+N1taQkk`JYZ@W=v+4KBq@UlVd~>eqlb^%y>!{s)P}LG) zi!@_4F$?`(csqEW zj5mQ}2Y&H)fitPx)*DjY&~t`@`Q2=eQg`RFcBgc3eDyoiu3Vpg~&n7FVqk!+=N}Ozy!Elfe~=I0>j`! zfpFa!dhU|9Frcu!O0Se`qqV|x+;;Iry6{5879qiNOVLXo1Q%02KdvIhBd`fM8Y9Bq zp~FQ7Sw77aRk0wc_e4iL`+ao8e(;SEyI_+?yhUAm4k|2h;Y9Z&;|5d}>ntI~BZ-cD z7aevOTpnVDyu}TQ1F@kHlf}u3xmEgAaavT2*~RD>H^JpGwo|6HK{5Di#L&_yYoa24 zmC8$^W2iR7_;DdRMk774HsH)SY`Hjwhi%cTD1*1W(kvTBpP=iu2DVOdCAsVfm6b$~ zKKvkhbPKpV|0~pA(x5b|BxjJ~OVsp3$sTdW?7EgvMWNC}RlWOdBueC*b%D#PtPNaV zWnOSmW%816z$Pl~`3X5g7wz5bE6OZ=aZ}jlqi>4C5&rz9Xc1g?Q|tqm-xL?m1qAH5Xgzjjaf zrrX3{uTLBBbN*K8-{8|bw&PR~@5D-#ha?+eeB&!7uzDHVOMw$kzRfZ5p;w z*uMIVyZcby;=fS%;{Z`rdA#DpJ^FXTw(*Yg?Ju!gZBPej$lBucKw$<~&_yJA{57Y#9-o`1PYz(xbguY=u&)P0H9$IloMf zdJQ#KC*c#Nt6Imd&@k{CO#l~Y78pzGz(P|0M#tWyBH#(~0xwY)@N*glKBEa>2F(IJ zv<`fS)HOPMkrV-MkQcZ@UBDz72A0wU@V7Jz9H4dJWl}qJ>@F1n3(4!$sRusie0wDO zbo?f5lBCnr?=-OcH0sP!O0%2~(3B^MR-GE>T0vpd%u1mV4;}qWg&NeZ81JUrfRFOIHkL4 z*Yv#?NeStf;B^PKz37X_gZ2zI=|26@T@Ssc+=*N7KEM~8c#B8u;yat+xIpFgJ86q2 zMtOOGb0_WdBvX+`!=|auQ-B5ZdF+t>x+j-?Nvpt1lve c%nTho!ggA;$DALc8C)Gl8)L>_X?!dHf4;Y8)c^nh