From 9f9f9046ee890567ae3f364e364972b555c5c01f Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Wed, 17 Sep 2025 17:57:08 +1000 Subject: [PATCH] tests/spr_read: Add a check for no-op behaviour of mtspr and mfspr Signed-off-by: Paul Mackerras --- tests/spr_read/spr_read.c | 32 ++++++++++++++++++++++++++++++-- tests/test_spr_read.bin | Bin 6344 -> 6540 bytes tests/test_spr_read.console_out | 2 ++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/tests/spr_read/spr_read.c b/tests/spr_read/spr_read.c index 6d2859e..a2a8a84 100644 --- a/tests/spr_read/spr_read.c +++ b/tests/spr_read/spr_read.c @@ -47,6 +47,7 @@ void print_test(char *str) int main(void) { unsigned long tmp; + int fail = 0; console_init(); @@ -86,7 +87,34 @@ int main(void) DO_ONE(SPR_PTCR); DO_ONE(SPR_PVR); - puts(PASS); + /* + * Test no-op behaviour of reserved no-op SPRs, + * and of accesses to undefined SPRs in privileged mode. + */ + print_test("reserved no-op"); + __asm__ __volatile__("mtspr 811,%0" : : "r" (7838)); + __asm__ __volatile__("li %0,%1; mfspr %0,811" : "=r" (tmp) : "i" (2398)); + if (tmp == 2398) { + puts(PASS); + } else { + puts(FAIL); + fail = 1; + } + + print_test("undefined SPR"); + __asm__ __volatile__("mtspr 179,%0" : : "r" (7738)); + __asm__ __volatile__("li %0,%1; mfspr %0,179" : "=r" (tmp) : "i" (2498)); + if (tmp == 2498) { + puts(PASS); + } else { + puts(FAIL); + fail = 1; + } + + if (!fail) + puts(PASS); + else + puts(FAIL); - return 0; + return fail; } diff --git a/tests/test_spr_read.bin b/tests/test_spr_read.bin index 68f6cd8f1d40ad5c59a98ccb0b2b2ceeeb6f7472..8c7a7d6a2d5a89f14fd7fcb083f10ee50c663c1a 100755 GIT binary patch literal 6540 zcmeI0O=whC6vxk-Op{5PXaW`jk@QWfkkN!Drk2T<&P*mIGa4Nxqjgc+iOG}(B&M;g zlR8tMsX~Q7Kj=pA6C|`!ikm`R6rzF)?LrqWx@et@B6>t@B6>t@B6>t@B6>t@B6>t@B6>t^!KPWI~UVd0f+WmR+?!&1f zUrr}uyGEf7IvWX2d3-t87qT^nbEdhsqx#@r5We%bO#l2Nul)W`XBX}rzH86hC>`vx z=S}1feruXrZ4ER-BU1BX-v!R?%!)BIy|{Xw&x_ZhcyvriB{ z1L9MkXSPRSA+T;?0byZ<^@0VMU4LEJT7@ORDkN@$uu_Gk!5;s^HMIzPR8*+c1m)-DeQ#846q}@+Jxm5_9a+GSi7(Rg`EY93F{Ent+0z= zjm+X!&Va(E!K#E=IV%))6YR-zK3|jMeC#Ql{SMf#!kUHMR@fZa&%!J{FDZ<&gTZsc zEIm&ttP<>)u-7E#5ryes!_4AVEg6M1f%OTqYKbW<1lG)~%!+GNSTEQs%*HHMrLf&# zPoMGGH%l!~w8GibV84N#uGL$oZmiG0Q;P9AkAeCjnh5c|B${r&ti)sy^BrQ^IA(oI z{tCye<1tX*YsY+L`xDhRL~UE%w()y)r{wCPUgY5SKtujfd-0FO4IR- z=(a1A_mSR8#qn{P4p=tm%v!91Mj>X3-8&x`C!JcauEaR)%UEakJY7xHNxE;~>#lg- z5N#=~Ar^PwL^=Eolk@l_|AihsPlls!Namg^aeS8Td$Gf^6`{`ZWj5z7T(Esg;Dcvj z-6z;=?bD_im%XcXrTzk6d^pat;dA(mh<#t{9`}@lj7q)LpTD&Wj6u(s18l(NOejsV=7q#uF zh~=M(>=gfKcbAO)$z+q0n*FhER@Yrykic%tdzAoZ?F2}CBH804bk@uH1|=VSdRmsR zcUlH3e<9)G+D^#pL@X-jNTj-!)S1|oq_NC_%-F}7A$??j3 zBLK*Nb)~((_DPbw*|1hqj#~&@HTvjZrn#GWv@}d-wC)v6RpC!#D=0iu99{!+2l{#V zoGikmN9bwK8O?K}Yz0MTelHHc{Nnt)C+GL#t)9fljcpC+IoLjD16n4?Z`|x7mR9FFSAv3jhEB literal 6344 zcmeI0-)oyy7{{MC4Q*Cy?Z81sWxm;V(T4u^O(@AP7Bb2nYLi-8I$T|IuE=Y8My80sG&yax{F zoaggA&w0-GJ?{&Nm#B}(j1mR%cNzi(jHl_z9Q^vh1RK}Qg20PE{uiYTm4xDsvTbW{hu$aJ(>#G^TU)6e^F=I zLlg+lD|Ot~z$hC;wRxRf6LviB@hSGGAa2eRC@J;(k;@lU7w>V)&dWa6;4>~hZ6#*c zH8u~{FRWeIC5}m>;Z@ zS=!2ZR%2~oJA_#|Piia-wz|&e3rWsH8tVhQC#+N0PK}L#EeW&qTsJn){x;YRVV0f` zHC6zt2-_n$f6&+r*jZ+2tCp`cb{XuXFsqi2H8u}+h*_f*cTQsqU^|(;XR%?8ErP8- z=d&M?S|T>%JJ(^)`JNN*{de%&>aN3<_my{7c%*VNLbNRyqUi+DzQ-?9d*o{`6>koj zC4<_}JymRfXIX5!^2P4@u^hjT?Av1du59|o+1E#7VfJ5v|6SZ)y9ODY_l@_its%HY z4dzA-`yNXTC-U+=sNLUZ`Ng~ICvrq-@m+btELpW~R^aUKd`IxDSySp!m-F5mbpI2g z?qCZ|#~mHtT~o&!X;)hlY%fCBUYx1$$L*;YM(un?8UH~RS|^IE{Wt#p5>aE&r0D?z zdOZ6t9Twv;lhUK;lcL$Fc!?Ix7}cjIaVFT?Eju)3E&Qwzc)W&rtL>AtNU_^5VKjY+ z^Wi^Ie!ia7SBPS4`>ZEjx+oe`-XJpq{lDaxCa|(HBOD_dA2Ul--fioRdNB8VpPuwO zcjJU*tD|_NsmA8qiJP`h1AK4}>rTODKaadpX?uS&<~Ox-Zu+2nt2xgMEBnsu4H8xM z^O|c5(UrtroXdl~i1q}1m>bYkuh-f)9(jQ0z}!P)dFUy1t!&&WdqaE3jlX~1#5_Bc zd2^&ULqmydw$Wa{p0Vsbxs32!!WvWA{w$C*j!W70T+;H-C5Od7)!QRuHj@e2?#{YX zU-ukE0=sd(J}tmmI{~~#KjtKK*0ubAmXG}p)~<&w1IPDi2{+buLS7H`r=;$oT+hGi z96FVu7CW!;VTQbggwfiBTL+sTJyca{gn4RPg0339&7tjykNTS_albxc!W>0E4WFm{ zzy497R}IfXGbP~w(^k3J#<~4?qc39Q#x`6Qnt`p1ky{&j9Q{w&@))UCYPjO*k$qB) pyvuL(i5Gx4{tSBCbEP