From 37733cabee9f5f32b09a05008b80f4c09d1d81de Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 14 Mar 2016 15:07:22 -0700 Subject: [PATCH] SCP: Add support REGister data in arrays of arbitrary structures. --- doc/simh.doc | Bin 215552 -> 218112 bytes scp.c | 45 +++++++++++++++++----- sim_defs.h | 107 +++++++++++++++++++++++++++++---------------------- 3 files changed, 96 insertions(+), 56 deletions(-) diff --git a/doc/simh.doc b/doc/simh.doc index 4c0a93f22469a8ae95937147025ca7032fa0de9d..2d1ece888ade11a8389144da5781acafdd021d06 100644 GIT binary patch delta 20599 zcmb{42UrwW`|#m2g9r*J7C-?NyBG_*^w_{2dyTP+6&o5vlc>0A)Wn8m)iG8qQKPXW z8Zn8nBu1mLVDE|;#fsR`SpL7W1(rp8-}k#d_PS?hXLjd2^PDs1%+BsIexBR-b#Ai* zs;yFl`OjU5HO$M0Z{EIrD;F;3K_XUQC6aUv9abxI)qKsPQVQe~BD3i3tk*K*EJU9} ziYO#{59&Rrt8-T#+y52F=P82bsv^91qi#~4-xcFt$5O^2>RdxLO4wIgh$q}HEM

z&E7&(RfX8$$2}#cRxmHm>;AWjLX6HYL})c3F0q|rHH66EB~#fBn-SBwmw)fLulmjv z?)`+=&MWs15MrI>g&xMXYO#WoEFn77s_@nw~@RO@!^AIlxJ{j+YzvdnnY(Z7Z@q`aOhU(?J%h|WEQ z=%#8>&D3UwaLabB<vlrtdYX4p z7Z7Hw?P(527Z7fY^Zda4bX|aPjc0&mUT3_VHLo`o_o`V~R)tO%=+`aUPbsbsGPd)w zgry5IPVusAPZw<51EwssIg`VYdK-Ys1lKua>9+@S(obrj2BA;nV0Kz zM$eMwbnEnbW9yRE<$=a&B?HZ|=z}b=gc}c+47Dr^&RSN~yQ*bdA;t#Ymh$wW#_8T4 zT9#Ao-t{f73pc+mP-iUVW7)630ApL9R_67AI?H;!ag&c_yMcP+Ri7s2Z3PAztNS*x z%m*32@U81%%2%Kzp1?2aB5^q*cM;$nM_ z7&y9L0cJ+_i5nT)&rd$w>UiC&fK$t;KC#36IvU^H3E0~0-YM0+@xYj~_!DH!8+2Dz^8)xY(%JFZ{AM6%`vB^@VZNz4J|6#GFCH)7+ zj)?Q?H>BUtelc-=RRa9|hV{35s;TfAetxo;&j$95i}o{KxIf9UeTQ}(8yKU~7ZTIU z^nhYAreXc7^zApQ=g63Waa{wt`x~n~s9&g>U&nS0BRfR;MaA^>Yi}I>AiA)1QA5kJ zD-RmEXDw@NUbxjiW1ng%WY;4vSKG{Nz5J-cS#5YTwVtLNQqDM(>NY|PIIVbU8Hbbt zrbn+1DJ9FWSaft&hBg)XVldKK5rH1ja;c}BYCUc%Rq_`x%_sH#TN&wKv!SC(fp@*W zvhC|$jQF>TAf%!;2+4|cFh$%09CRA^SL9!1vM=E#D z^(7CjWh7-BQ=Y5uiqO6^Ki7VomRMhBN|Wm?#?Bl|stmSSVjq95eb$n%TheSwdh$u7 zK*@LH+LGBvCzX;)R%Ts0Gv?ZsT_$T)m7b2-tNv3EWeQ~1qs-}l%3#K6dRCCI#v zdiyGRS8I7k7A`Ay)vPw-I}-Z^`V}+4qn32?~AJCja*uysboL*Pzzou5G^`!=rbVVjuXs zjA^cDgAE6~?VIF3ua*uM?g{Xv;Scf)gLVS!*&;xxj z2rr;b@K=j#!~NCDA<2I|OSiv?LY~oAl`f)nGgY*OVEmGggPkW>7HQY+C>6BR{%TdF z_4cZ2zI;PvcrvtUn2s|45Hg%@aIpb1ZVJ(qqCdiMoWLVIMweScbj3t`iSxLC!ncKR z$0&S;Z?Oi?w8*DQNv-8m#ZB8-SB=za*HgXaTq`ZTuIl#xFuDI&aWVLquc$Ee7M_%> z_JF)hVx1q*SEfMt$o##OU7 zUx)~_HZbXkWmt`~=|Wsb87_)cKx-_+Ih;od?xNL0*5MQM#Y(Kg_xKr4@e;3*?~xEC zP#M*rNAD*>^oJpq$$EV8jB3Ewn1gNDfiBN!NtlDhNW^zgGuaDl!B&)fK^0jV)y?!P zS_`{d-XdzLu&fs8NQkV-H%9bXgfo zAuGh1&?+Qz48~#!UYV~Pn5QqbaW1N>@=E*EMJ=ffcOk0W6E`ifAnn)PP3@}1yD+!0 zHWN8#ec{GJEI2kmb=9smQQZsL;Z7A7K{u+lJJP7$H+cI(IEimK6<_pHQ=-&K=HoHGuo`4{ zC@S}~6?N508mrv2l+VhhmB@d_75sxg z6-6AxZKUHVUZS$9h#H8&NNmP7q^gQRq%l*}K@r8!3j?qU>v0iR;hs+s9vF%^B;i*a z#YuQLD#90?&=mtQ7*p~qVmiLX_qd10sP3c)J$gA6RYX5#W@A1!L2Kis7H@Pd-FmxY zo%!GIwY^?y-C>;1@cO2MQXh{#$YW@;3+ck0{f_a*(zuW+TKUXK<(HwB}j9B z%xL9ao&Y(#qqX>{%tdroE1Q?4xT((Cv7xG?cB#7RYp@(2KC&^%h9n!2Y(O-gtaj6a zHqsKK@I8*BH0`1cI-?7|#6`H!E=r>eK89>Fvb}tXMEnX4dF!8c#8nNEolj+XD04i^ zIny9p(=^h`haZHqVpkotfb5A}yf|MNP=kONgX^Wj8 z+o^1$vVF?7*$c8s?!sN%LuD>hR6$#Og;YcpP{il>1;64sGEuf52U~U6kCvl1Q!lAoW&J5yDFkErbFk(^YDj($=X8nFUZ6z zyoOp>5k=sMk|>4GF&2xl9Gmb1&fyjYyDMTe=0n3-T*OV>LY*Rth{OhL#!EDP%Os8N z;W5q?Q^Z4L;w4;)vqy->ICSt(L`Muj3`S!$zVW0$PB4A7#9C_63eVD0)6b_LhxL}4 zo_aWy!9Mk-oZe(a)z&oN0+u|TjBY~}iZ%EdzhIgrNz1uEhy3KI5^6vuP7hP^xZj86 zowv!yJ5rN+qci)I$rT;XYpBEyj3r;NT@3d=ya|t+Ca|popE!9Ka)# z^;JYwv_dB&U=`d;DWU{wqant?fJCgudThcG9LFu(Me)+S4xgYG{=nb3f&66@(c8de z2*zSElCT%W{S@Ji255?|=z-ygLp&y6I_BXf?x9dw4lY!|2dINcG(#)Img4|}Yk3BK zxFs_=g=gt^((h9ec>T`skZ<=W3LlqSPyCn6Nrkcv2R zJQDjYX}x4g?PKm6lgcJGXQ z>PQD|o_nY;%*gZFQV(g9?sA2xm$shfx@r$fscx<1n8-mT&l`Q%plFNwWS{}Mpetf9 z4hdL+mFQZ5Mu$Eaf}x13U5>ZhG?QvE&KQ(s~NCSod<;DuJC1>G`j$XmXv zD6B=aQGeGewp7n+>CIKQ!ujNrmSQ!MDkK$Zr9M&$CGlVfe!)%_worW)t!i8KOrxDF z`3<`yYGOAAP!Z9Xh%d1iTX77@7)b@mirPp;$O@UOU2CTXYANk#!*Y_u#7{BERn~fG zVN*B9sh1Pfi>#YRmij4gQ%CElj|fs4iH4-H5#oX=7DYoi?huR)p|ly?M>;x$(P*tF za}2LXo+AA2PTW}c3NW)#2FHhV^mp5~V`^+?d!_@6&FOy4U$9w8e(+c@i`I2YpZst3=9pWJ29Zs7z`C$+T%XTs6{?Gq~1f>L-^^rk~tBgX1mnYZ^G+ zCSADYeas$%eCaF{Cg(E$6(Q@OHJ&3Azmf7?m_({4V;PoXA6}tuQ+5TjaS{bT;s8J- ze#ajeM*4^2hZZ?P)n31%k!O!B!{s{_MwCCy@4VhR6MIT`)z2WSuP?9Nf}e2!MO%_4 z1R@wAIEH$y6!9Il;~-As46foap1`Ly&7v*M0-_yF3a38d;K3WHojGvP9HTnZ@JBPV z3L9_?CvhEVc#eNjwhIYFSM`KF5 z#mrvpgKIZx3l&fWrF$~uAQFu*78CI+b|W(*GmYC7?lVqg975)P(-OJ#zqxtlcoOgJ zO^se??YpY}TIwC8sCINPCo_hwT;Ad;9|uI%RlZiT%6~*MRdd`@JrQiFz1-Y1oa&sM(%VJdDLM?7=Nm=|HpXplA>KtKBqOy|=loyMIO-8ZNJ5B?L2x z=&9~8@H80rP_R44 z8v0{3{()Z)PM7gLUf?y}z?YU+3K1BCUvLradl3~x6n#6EBL!}~X}!HU$LpmoH7Cc^ zSy`_NdCRLpI)iM_ax1BpEp@VN?V@FiE|#r+V%hRq%huB^C3u)i5$(AD4STU4NAM8O z;LwLXMNjm{&-e{$UwQ(!zBCZb#u=Q$seX)`aOux(;1l%457>&^C^$e7i?9ZFaUaj{ z7G0wmpV12gFak@l0>5AV`xiK+ToT>f?P<(Jj_Q19-=2ZFB4-s$1C3&M_k@M`26u4}-wvbp z&}TS(`KL5gKXstFp;|kc%395#>T!e2?0H;98lIy*1vf@N48Ro3fedId*5Da3p%PSn zxT7rkqCX~KHe}$7umT?ua9cdZYv^KVqd`R59G&nrrehu!U>P>xBCa3}w;}iNAzmSp zy=;IU=!O1>hRnbQY{y$DWWpDvQ2~`OaJYdUjG3dK(nBF+1RFy_94W;u+{4h3oEIPg z3-QM&dP;Qtj5@~{7;qGp_9t6k>gCjP+~o9fs%(wi%&pft4X`}roLnv6sF)h9<%#Bb zxy;%fbFRJdE47`WJ#{MnLQR4Vz!ZY~3cnK6P8_iWqkPUu58^QnCBEPaA6k#5LqiI# zNn>b>_+l*GHoC_1rWO(7$S`b%1TL9t$$os^!l1y#X3LmW+5Db5z5*XDnMSXKr(F7C zLSOhPeWA?EBRt2y5Cl^RAD||J5R6)o!CuCF_z|oQtFRX9@FTXN7=c$nC-lP+9LFVG zf!wiMcs`nTHkG}biG^5%+sMQO_BIiH*xN~H%HHBlX<&_ zIhc=tDXhZ~e2Om+kD_03P@w)-Y^X6a{V@vraR~SE5dXsUYf_G0n2fJ52diLd8nP** zUEy~6c-m?64EM(mA3wnDu+1&)xM?jdTWqJ@d%xps$`mwwH(QpDC3>w3B_j{3o@{`Ct7Gnu^;y0`y9V=0V-S@{76lCvQ&;vd37&c?N zckGzX zV2I{3xb}wvGYLdWAQ*f&i^hhHvl(VkZ4R$TIvyZyE?ooa7})e!@Py#2YwK4+T*PRS^W! zptiWpQ!9F~LBW<82 z0x=A+7>k)m#wobdHj1GUI${=#Sb`Nu#ce!><2=r}&}|;I)Q_1#*nl7L51ydLe6Cxd z79tRjNk~8<9^*O00yc>H_y}V#8;|e|Z;?-<3rACYj!Bq_)f%-_W+8_%szHYsjKpee z#x*>`7vB&BreGR0EWstDq4XkZ2wf13`S=!_uoqE_3CMJ5LSCFOUz@nm%ygwfKCmv# z`#yV(?VR2DLBv0UBDWGT#M~XxR{69 zOF8u6xQz1~G)D`Z!fA9|&RHr-CUQ{+Yq1XIE+T2+Xx^5~_j2Ca_Mj|5>o5R=u^D^ezJk+Xj7I|g!eJ!i3`(!$xIkUB!U}wg@30xq;k=4*5v>eN z1|bG}a2)wpb8ur4=3*m$z*8vSa(M#&XpT-80|S;|9S$QIf36`Q++9!hQE!86YPPo< z>E&dbdq1t)1honcd+!6qLrWQ~x@-5m)MAD%vQj^1f4@Ko`xGh>ei(M(XN)D}c-%)i z8W2`P%)@;65nfqz`HnLy)FaFY)Fo6I?xgQ&kXVgmWREl2;a=)V^NBm}Fr&@y!R1R@ zp$%d&0t>MSd$1qpplu>k_zuZ9g*1G)nKrwHfd&Dnj~E!R8)xw6R;nClZ~?K~I8{QE zpXjz){KPe2e1e_$8~2a__wDR2h9eFd7UNrNNB$(L9W|jtEwsdPtU@wQ;R+t2?hXRP z01U+79R~K8nThcDnIjOD;E%TGf^O)Jz8HzJztEnbM?(z3NF>6xrO5f4<^}SzV|kOG zD$8m1Tv^)(=hIV9r5-cgvgfqK!D?}5zSStNE`?}UI`L7k{Pfw-PS$S0jdaGCjIB5Y zPpYLBVzB_S>cXieSyinu23wES;514-gYjEKN)&d)_3#AFN8k(RvW?}U%n*IxB+;=mU zAOVZ83%}zmuHqhC_E1UiMP1ZGUkpM#ChVoxgAu=A7mlOC?^NC&R31v;&_1?{T7NPg z{b`_+XJ$5*pxJ%~Aza37_#Yr@M4}PC!MC`DC&)yDzo^zjyxlq#zp!GQ6Q`6^FtWPZZY4~uXJ3VE{4nQf!j zjy_Ua%jU($QkE}A@!d!Hp~CQ~>g+x;#U(M66vyBoWXff_YhxB&jrN+CW1|yRsc|-Cyy2luSmC)N4Hvm04L3z< z6G^xhup~z*!`9>oJzTSkG+gA0G+dLBW^GhQT30Ny*{DuSS!WX~>+NHei|k^RTaj7K zvDqB4>a?~SY%-$Lj`A=oBXW~=k;+ZlMXEDJYEyg~hT+lQ;q9j@L!+(7$q1MR{M z%pGoE?r;O`!ws|#H_#NWP2C5I(4^MitKnsx`S%C>y97SrpM6B__L2M*fc$#$CMSAv zPx_nk<}W(P4;SUf3i7h8yrd?tGst(b^6iB@EtKP<>|f+RU*H!J;+D1|+`&idaFp}e zC>>u;-=CJ@=;SLX!gfGgX0xF|A0uYQae26-ziwM+5BQ({1KB|r}$nU_* zFNe!-=gRNG$}gD8FK5bc-N~=0$!`V8FW1N~T*&WF$gfMtFGk33Fv!oL<%hiTQ#kpt zm;9({d^bk2-kk6aG+oCwU5k`ge&pLbd1fxpr{oEY9A4#2(Ls+u1R(^W2uCf{MmpaumudA97vpd>G70mMimWDso+3nUU-A%8Xo>S7zioQ)UeBXw!0K zUQI==%PTW-UEZ0IYjanVL7tb%(J*&vteIgLa8Nw;V0mjKoNMNkI!B`o}7`T}+a3W$`fW*tK~Z`u3(o>c0xI!ZBAqA>Ym!tW^TcM40Ru!j_u zNn!F=3(YC)A_d7G53HmxM+W6)6n2cl)=*d=g%zi;!i=L8D5xd8oAB`yg`K7_FH>Oz z#9wEA@7|{v-jx~6QOf;HDW-$#31|}zP z4rS+)W(-Fh_TW#P#sxgY3xq77dN2V~uor*gHJmk0qtFV=u@a|n73~(XvpBkxG7+?j zUy{{h(tI7ip2eW`{9YKL-*X;}NHoAy%)(KeLhvR6z|YPD}t)Lq)<6m^}PBx;?msqXoE zn;LY|&}-_wYTfz$i2NO={5_<&0r@BA<>krSZTv;^kLwBf>tp$o*Hwjn6HQwl7ONvJ zh`aHrrsvA{Ch~%d{FBqS5vsfC0nP6Bq)mk!=Bj~9M>ME>f7)O9L-@fL&A0*Qy9Pc{ zHN6YTCmh^${BR@ZQeD!BA`U$jr}({G65A{P`CFYN&teXDRAaJZiS3>aLlwSD9OLCs zx&EGkRS!~LgeAj$mLrPH@lYGKW%M0T7COxX;P^q{(y@hCsk0Ad8o>rxnLx6iH9`T+; zbha*yuH~?^?KB=u#|+Fw0_1CEbI&_7F&9S6!+b1&T)&X}Z?Fi9u>?!8OpB`R;N`KJ z*>54AD$#L?H$O!6R2I~A7*ZhOM1<*ot*zBY)^#u_&9tZ7#=CA_OhPC zXl0f*GJ;2%_B6s_Sd%>+Tum>t|5t77zc?s5iv!}4_*fie4C*4zijIt77e!l^HxUiQ z9tN00`~$ZuVvn{V(jmN1&W$BKigf7fSRpv1af7h%$l&U_@J6B4gF+fMtX{uCQJrWW~NJ2;gDUcu}bW-mwJOT+t+Cv8g=>kfPR22{p1VK7-$Vw5U zDk>;NqksVfu~CBb9*BSh36UE5?=yF|$>ma>=Xw4A-0OWiyL-1Y^PSn<*}V;uKJ%Wm z(0hJ#o#l$K|ML}MC22YP^x3m#a^VtYmSPz`Mruqu!y09QTB=Q-49`+R> z`catuTTgonQA-u#>u{#zc)FT>d2!QkstYmRU5NU1ggDD~%GMJihp((;J8VX*W-9*` zF|AePiW>cd_?B;;?=Qq>jxPpSJF5O=raFrFs2;O{Rb|fdpFVv=&hno=UESOI*ihM` z7u>$mUZFG0d`H0onZ6lgU*kHJn+au=o~ync*Lhh{=YRTk9LuZ+-D=j;i&Wfa<#$>e zgc#RDh@PsJ+(~V1>F(IBo-aMb)-mYube*B z1E9~-T)W*OtLD$zH>A(!cMSP4_01SLX`rulo$94`U7kO04K2MqRxfk@;)0nLUQVu! z$`@X|<#~@wrAx=h#7D;@#8|8QMmf^4*3Q0l9O*dgG~arTbi8%DZ%s!!!Ft`dt|M)< zR`H8-q)pcDenv;yY+dA6-;qwV?)OWur;X88kMhqu(lORHn`*KsXwMvDCj&zK* ze+5UqOtIFFDmb=jinH#o@Gr+_;;rQZ^mKx?Lx7_$CZly)KqJRzOxE86^zE1z1Ujl{ zO0+&7=qQdk+Bzn%w*BMg80)&gXh%BMdM+;=XRQ!a-^bPz=J@cQgTj>xv2oT;L5^aX z6RgvM^z9j~X+e%^n@!f-AbopgYyFCPK8e&p{ktY<35JC?^<11mYg zofv0rUrApcZ=G2w&R&+p1V>rS*8P=Cj%CKYW#xlwIksi8HVxMEGh1f`H*hSc*@K(d zz84!EZU0_ev^6ZmUa#2b7;DFnc8>M2j`cCtjUo2!#zx0kFNCzPZ7Vi9-dZ=bxg(um z9T(atK*lRJ+EJc3Q-HUzUc9HabF&g?T^H)-_^8SHFw`Ep*l6>X*sxn!^YJKAKtJ3sMo{0T07h{ZyEFVe$~4CRs;9&eklW3cIDO}J=yDab4PN^=G%MK zEgSDuIH4&AmE(r%6EA7er<6b~=b++gn|pjvsZ@o79m3YDU=y%fT!sKJII@~C1jsjQsWLuU0nQgeo3j* z`j%`KxVdin{)vr-YUc0~5p38j*f7g?|FoX(x|u9CN^MjyBQ zRsX3FRXp?CQO5K?MKI@-ayc(2E&KHU*1YMZi!YgLz-!vFksUCm*q}H!bfM0W`t*$A zV~?2cIVC?nUdd(hOJQ%wy`C;hwAtsJ_JIGc0EOB&_36310$gw|z-BL(?7R|OmuRyu z{QoGx1*NQ0pLx#5HQ#mRoR)OB=qO}yd%bHD71djch{8qXx|-K#ycYU7Wog?Xg9FA_4w!-AX8DB z{NG#fhLW7$g4(}tIv@8_m@6t5*Mb+dw-sm^TTprj=U492oSRC+Azl}`ra(O2zy!Q` zi77lYh497<%!BEw5Dn27&Cv!Ok%221@fX{`6Bw=u@i{i)1VXa3Ms?MOT8Fx7sbb#@ z_p+~OBNEgw?ND7cT6yu?dTOasLuBzrVier}6rwb;aTBAjaNSDQ(fAJE;}lLKnPN1- zU<|=7?8ZIZM=y%i8?!M7$FFJq{MAq`yOtWIB@I=BwYFirO{}NxvCnR3qIz378a3C;xsPcFC^cgi{U12q1#;{dLZ(i5RI?_-{Sy|;oN;8 zE~0#{5Ean|9q=}$VHa12?vjxQe(3H*Zn zxb>LZIS8XYo zaE+W3+NQc{ZSCthYH97)5Vfq9Q&#m&k=?@YA0fJ62`(WM&4_Yyv?r(?u#{jfgA8Ot z$Y7qtDcpn~K{Vqf%)vJNfHa(i40QQixuY2Kc9ba1cNV)$?^$#}_8WTP1l~sYtL?O< zvIDXQ@e#Q!V}k0T9U7^+X=ewj)hx2LWJ}3bk}Y%`Ct#uh%xI36(F4EXcO1oKTtPz` zr4e364{XL39EEJS$J?pZWT5lQ>8-VGD`R}0X!}MG=$Xmv{k(Z=VRtz;3_8pT`6drvTF!mNL#d!0 z4pIZP!(nQKg@9C&nQwIz;I^X>kz}YBWCiJUxP)s6=B{UDv_}_wi7mK?hwxSuQ662; z1B@DyHAjc2Y3i0?Po$?Y{g~d;sJhjG~sy#AUx%6{)wBPZCC%qtuIq;UsJX2uwXW1>mVbU>YcE zTUqVL)q=CEV6@^`mY=dUlcP=-wX~6HV43{dXc=K@1yv~8!7w$*5=>VWInYb~IVJuc zM{yj1-t;L{M-<-1BxE5QiPWr-qjq}DqN#}qvUaV}5qd4H)NUcxVS}HA%t&P7WO+h} z+WveIV=E|P7CyjIq~jz81`txbgIS0SR74&83yrW12ap(~h$fhTxwwT#aIZ)+pf3ie z@HPjFZ~&LkzLFwd!URmgHl*PKGI0$z;1#S0Uqsqgm{~S^MSt zewoV7(vs_{{@SEAYG8SJMk*ILXmFQOqJ3*O(Xq9gwy3$I#jUhZ2rf{*bPwqOT#;kQuEkVi;Vr-HT7 z79H^#hTv^X!VJv8rpoL{XhU7Qz=!(!qas3J!t>~YmoNfju@E1@EkY3<_z)|wI>Mre zjU>+E0v_NAysC0YKr^()G|a#Oq~kUoVdise9N$z^#7?|Yox?jKBH3Z!9!11(1NX45 zh9bVk13bgMKI}1*|{7*08Zrkg$T_I`(Igs|z&b`SH^;))4wuM|tv>U(ROn7R!7u8Tj ztK3;V>MIOqSauefxTmkH)m1%S?jB3-;{hJo*4$E>KVs%Fo=C*=Db^9sPq7<6;xuld z9P#zRR>*k&?TG6F?P51IPRr=Vz)-%W@)oXGWXRvBNfTifvTO16+8oQ^SBD`SV$ct- zV1Hc(LbwV`efk}yL@Qz{w#1MvI>xfYVhpTtG(GCXbEJY5jA8YE+JT2kP0hClg<>z{ zt%sUpkxj0bNiR9PafvTj4p>L<~$wpj?UQhf$c0kMJ2bVjFfL8@EuI z@>fM}jM;5ux_0eDhLZ}=eyZO|Ti5I!Ki3=;^#G%UtiWaAFp z2#5#55ROgp>})$o986$mLx7Q$XpAlxi3wP2qEPq--{YKF5!Vr%$mfxW=MmA6G0`1f z*K;#%?`Lw)*MDs7R?zcp1IW8^>@Q4XHsRti?JjbP8R6hB+=WLQMN~ilDkBzgco~uHI4hwsn!>*;{Spn4jH#H3 zZ@TjKJuV>&6SRr`bQar{ z@-r_|wy_Pfd+b94+cHKp;ji;~@eh1x1YgKTvB0?jde8`IZ8_251sb3Qy5b$I!>@RX z*!ElrK*M&N!!ty6;LMJ>9Te@KA!<*Jo@_hC*e>_;Z?5P)c_2NR&x&tw0#8xBBl#i) z8g}C`qB~I*ypL~?fij&LRiFzd;0yeNdR;j9;Y(!W7H-3jzEU1eH&RkRo}@NV>~~T) z4Tf9f`sX40*c5EVMR?Q4B9MSSSd8y+0d6lbIzbZ*#w2`--*ExY5YUYQ2ZmrM#$hpb z!uhQ7@l)k*EyH$duFuZjJAx5iMg#?uoxD7%A`(V4Kwk{N5-i6yq#*;B;ZEjd5sC;j zMN169>zIsb_zasM3w;o>;FlmMprISPd>az&(I2m&R}apsn1rd=j@@{OrwHyzhFE|_ z2<*i&G)8O8gNF0Cf-1c^&*It{Xo6N)jU{{PQ+JDh(Ycx#I4rKMZBd-8jLyw`bKu?^9@ZC6DW z(M`7e6;$d@H82Kik%{MCrkCMkT!)!>K97dzfu68n8y-N$TEoDvRK`=r z(y7;TC+^Uz>b!zC5V;@HP#vTl8mh)vSV=2gV?rois@z4;+u7lfJRt? zWsqB3hs`*P3_QRi=sEQymqFNouOM?y#V&-sN~92lMtBF4UZu;=B=I4x;Rd{3qq?Yw zP(;Fr$#@TIuns>V9Y=5)mys}tvjCFO9PQB;tFab)a0rKS3K@ee9PI`ZTf`5c{V@Wg zF%ygMGk(Jn9K$(eA$TaYLL_RSHga>W=A5@Vee85PuN>PnZ>d}>U-s$MoYN8ZkIDCA zr&%mt`K#qewT+|I>b6S`?fh^xLi?$s>N~8HY|sdzRTb}I3MvzUD)<93DlMpCOGj=0 zU^XwT{L2YN$7!I=#PQ;3|rxy!Z99WUuRo5FoMD%Y9!Icm)M8{I5CpG zqmJfyjU`x)ZAgRn7=~#uq5&FXAci0XqcH~Ku>+xF>GbG>5x9gaxQc&p8=c;uz*vMe z@OqQJwd#uD`~umI78IqCLO@@~PXu%y9*$z? zg%|ag@k+u($awsKm#A|$%%!gLP=#v9Duz@12z-a{v4pBDg=IXQ00j<#547}ZTn6)- zY5vG0N*)8b8&re)sobcH*XGK%Lt{B4%CPLgbhfh`|4iVF^fnETG)#Pl0|%C4=VY#I zk&dHy{ax1K3w(|5umc^Za16j?yoa^;25wWiIzt^qqrp^p{w1*#E3g;)kd8};e~)tn z24XNqV;YX&1Rmol#59JI@IWODK?>GlJ&xc6Mogy@Vm9XC%5*wZ7Kvx@d!Jnd{V)yh zV-xF`kIAB|>=@T*%q*;-A=hHcL=HiC56%s{ zg2sJi5<44C;|w0*F*0cAi+GKO9fY6IipFe>kFk7;8$;)*9JB5yP2`mxx9=k8d-nU@ z@*dtN<>`A#@+8c%cG{tFbUVHv;_wT8#ZX#tm{UvMr$KTd8(Njjo0((oe=;SZd_d8m}o4U@3|o|M!Z!3aYnYN9PV;0_FP*eMdJN<+MWRv3uE z7>%hof)mIX zQmnyxWZ@q?_W|vQ;TVbWuwV!F-~cWlb^%9eG)6OU^t8WjUb%VB@ybgz$Xlo{vQM4g z&lUX{ZFc}8Q~O?_?Q=%={Yh@WKe#mhImltu2z}=6y zD~Jh;=}~C5guxDGVix?Da`}&i_z>NeadFa}w=1~1OiBGvdE6i4wVZa`@KxQ8{^fK5ol9vBEkIW$K{OvXIyzfYQrp2l#*o zHLlp6?ck9OZOKH{-&22*Un#S|RDQS@0w6|i_M=W@KWj-3V*KP8PlpV1YO37_@O2QF>@ ztLhQ^z)-(`X1fW&?>q7;U)D1Ky^w;5n1c-biNBByBZX{%cQ6O*u>sHEOTn9?753mT z{zeYsDSQ$JU=U_v5w;<1CC9BZB(9|dd!nbrfoJu8xi2R;`I!0h5E+G?Lw-qRrcHoW@>bOnh{4`CJ zyyeDlmLLA)LrsI^8>ebN-ZEy3f(XegD@Y9p;vD;>8*z_GE zV|S*9Sgf-KYWAGjhw8g^nAUPdHWNH z^5k@kmz-YBJ*N3CQ15Ezt^9~@yX|&<4v)*MpQDz`KeP;}M&-Hx#;I}_#{hUxOj!k4 z{0TS+S^SO^yA#r|6aEyl0uCV^2^7_c6nl}y6s9ZfCDlH7q_o#2R#v@J`6(w^`F5c? zT=k9@G5pzLH17!_M*BxoM-*5TYg<&-=~LR_W$LH`3!+!KEExHv%YyVx>Zk&nH5J}$ z-z6?zTDhjc0^_333v9$#xVT19sJKSg;uzUW`+6YY@_x<)k7 z5mBd&CarMUXn~@}is%AGW!|-@a*@5a=4~}r+qBXt93$pT>*X+WaGG&*t*UborR7d`e9|d?TL|kiX%|A9dtiZh5y- z-e8i~)AEW(j!)&eS{{StVUNET5LdLtO${N#d9dF0H|{(kEqFRw@MN^$sc4>F<*%Wk zGQuy7GAIXsR75Dk@f>QQ4q^}wBh2_0D3xf8CTOPZKB`Wz$UhX2Pif1Cp5@cR^0`g< z%%gmYP(IrwAAyn&oa};pK14nVA|L#aPiV+r)#Z<)^7lviTc7-WP5$yBe_@a}isdap zc?U+`=a5&O^0Gk=_v8Reo(nltSG9%UGIirmBLvUp+kP(KX>LJzZ1?mYYS#!&KZ+zu z!42;407Vo8U3kG8KJW#_<{@AHZ~*}bL=Y;01`;6%LuFJ!1gdH?ni)cpYm=;tdZ>?R z#3Bv}Fd-2Q@I0u!NJ282qIv2!$JL)zbyZsGJEzpnswHo)muCgxE&A|S^6R2MXA1es zKV!s}ur98Ib@3&vOAy|cVly&zvrODwdmk6uF~`%iJT=LA&3y5b{a6meR; zb82m;AR7s4@!1fNV&Y*G#m9rQRteuD9>oROC<+HekB6y*cyNX*HbYKzh1OZ}H(GpG zF_jP*6P>fT$e2oq3@1qWJxh^&+9ZnaDy9-5V=f^woJ@--DD5wYUFIS}qesRpijR!B zgvgjnh>Tf}jHQS@+FU}XF_#b-a|w}2EG9A*S$j_5MTEv48P4S;tSde;i6ulPF+Vbv zLdUa2Jv2o`hA}`1g(<$zBo-SPi#$0OcX*NOii?a~S6pP|y5b@u*Et<$EX?E|&E?AC zb|<;6xC4z`S6pP|IQobIVou+qJsi!c$G^x?VQdmfj?v_3B1ie>C^N}1 zn4ILZ_7~BN9A}VYx#zgcNsgn)u`@ZgBgg*aHXGf^@ndqVu$F6OdyWhQ_+Msxgy>KG z2c+4rdkvy=8U8Ps()N|9)h_d!Y?*`Ogm{Z#)tWRd=9-$OnXaq8?kjEINNsyv{ku*h z`T0`tfE;zmf9{aaxL@l~Q^?1|R+sxhv~0UytVud84Amn8F?c5nMi@vCA>pKm{XMrgV{z4`sY^8e{!7xOS5A3(0RGF^xdu?QMI!eYqvPh6~E`6rHb za{X$V-qdfjvZ$qDm}m5BzuW#hqE*`1mIjN`Lc7bv{UttAW}r5{6^mwT4_g_=D>JpR zt(jY(-ED1ny+!z;Uu<7<{ojnJxM(U~7C(vKL~GGbG#7h$-zyG^^DO(3{cD%#DAL6d z(TUwYS^J`mA+cP+jiugdV;JC8EjHemoR}D$ST{DlSxnvdCUM5PO`0bf>&6LFv#ix$%Xqcw{A3nvO6aWAK diff --git a/scp.c b/scp.c index 34e2e6c0..5ef3697b 100644 --- a/scp.c +++ b/scp.c @@ -6670,7 +6670,7 @@ t_value get_rval (REG *rptr, uint32 idx) { size_t sz; t_value val; -UNIT *uptr; +uint32 *ptr; sz = SZ_R (rptr); if ((rptr->depth > 1) && (rptr->flags & REG_CIRC)) { @@ -6678,13 +6678,23 @@ if ((rptr->depth > 1) && (rptr->flags & REG_CIRC)) { if (idx >= rptr->depth) idx = idx - rptr->depth; } if ((rptr->depth > 1) && (rptr->flags & REG_UNIT)) { - uptr = ((UNIT *) rptr->loc) + idx; + ptr = (uint32 *)(((UNIT *) rptr->loc) + idx); #if defined (USE_INT64) if (sz <= sizeof (uint32)) - val = *((uint32 *) uptr); - else val = *((t_uint64 *) uptr); + val = *ptr; + else val = *((t_uint64 *) ptr); #else - val = *((uint32 *) uptr); + val = *ptr; +#endif + } +else if ((rptr->depth > 1) && (rptr->flags & REG_STRUCT)) { + ptr = (uint32 *)(((size_t) rptr->loc) + (idx * rptr->str_size)); +#if defined (USE_INT64) + if (sz <= sizeof (uint32)) + val = *ptr; + else val = *((t_uint64 *) ptr); +#else + val = *ptr; #endif } else if (((rptr->depth > 1) || (rptr->flags & REG_FIT)) && @@ -6772,7 +6782,7 @@ void put_rval (REG *rptr, uint32 idx, t_value val) { size_t sz; t_value mask; -UNIT *uptr; +uint32 *ptr; #define PUT_RVAL(sz,rp,id,v,m) \ *(((sz *) rp->loc) + id) = \ @@ -6789,16 +6799,31 @@ if ((rptr->depth > 1) && (rptr->flags & REG_CIRC)) { idx = idx - rptr->depth; } if ((rptr->depth > 1) && (rptr->flags & REG_UNIT)) { - uptr = ((UNIT *) rptr->loc) + idx; + ptr = (uint32 *)(((UNIT *) rptr->loc) + idx); #if defined (USE_INT64) if (sz <= sizeof (uint32)) - *((uint32 *) uptr) = (*((uint32 *) uptr) & + *ptr = (*ptr & ~(((uint32) mask) << rptr->offset)) | (((uint32) val) << rptr->offset); - else *((t_uint64 *) uptr) = (*((t_uint64 *) uptr) + else *((t_uint64 *) ptr) = (*((t_uint64 *) ptr) & ~(mask << rptr->offset)) | (val << rptr->offset); #else - *((uint32 *) uptr) = (*((uint32 *) uptr) & + *ptr = (*ptr & + ~(((uint32) mask) << rptr->offset)) | + (((uint32) val) << rptr->offset); +#endif + } +else if ((rptr->depth > 1) && (rptr->flags & REG_STRUCT)) { + ptr = (uint32 *)(((size_t) rptr->loc) + (idx * rptr->str_size)); +#if defined (USE_INT64) + if (sz <= sizeof (uint32)) + *((uint32 *) ptr) = (*((uint32 *) ptr) & + ~(((uint32) mask) << rptr->offset)) | + (((uint32) val) << rptr->offset); + else *((t_uint64 *) ptr) = (*((t_uint64 *) ptr) + & ~(mask << rptr->offset)) | (val << rptr->offset); +#else + *ptr = (*ptr & ~(((uint32) mask) << rptr->offset)) | (((uint32) val) << rptr->offset); #endif diff --git a/sim_defs.h b/sim_defs.h index 01233aa2..faca87a5 100644 --- a/sim_defs.h +++ b/sim_defs.h @@ -586,6 +586,7 @@ struct REG { uint32 depth; /* save depth */ const char *desc; /* description */ BITFIELD *fields; /* bit fields */ + size_t str_size; /* structure size */ uint32 flags; /* flags */ uint32 qptr; /* circ q ptr */ }; @@ -597,10 +598,11 @@ struct REG { #define REG_HIDDEN 00010 /* hidden */ #define REG_NZ 00020 /* must be non-zero */ #define REG_UNIT 00040 /* in unit struct */ -#define REG_CIRC 00100 /* circular array */ -#define REG_VMIO 00200 /* use VM data print/parse */ -#define REG_VMAD 00400 /* use VM addr print/parse */ -#define REG_FIT 01000 /* fit access to size */ +#define REG_STRUCT 00100 /* in structure array */ +#define REG_CIRC 00200 /* circular array */ +#define REG_VMIO 00400 /* use VM data print/parse */ +#define REG_VMAD 01000 /* use VM addr print/parse */ +#define REG_FIT 02000 /* fit access to size */ #define REG_HRO (REG_RO | REG_HIDDEN) /* hidden, read only */ #define REG_V_UF 16 /* device specific */ @@ -768,38 +770,45 @@ struct FILEREF { #if defined (__STDC__) || defined (_WIN32) /* Right Justified Octal Register Data */ -#define ORDATA(nm,loc,wd) #nm, &(loc), 8, (wd), 0, 1, NULL, NULL +#define ORDATA(nm,loc,wd) #nm, &(loc), 8, (wd), 0, 1, NULL, NULL, 0 /* Right Justified Decimal Register Data */ -#define DRDATA(nm,loc,wd) #nm, &(loc), 10, (wd), 0, 1, NULL, NULL +#define DRDATA(nm,loc,wd) #nm, &(loc), 10, (wd), 0, 1, NULL, NULL, 0 /* Right Justified Hexadecimal Register Data */ -#define HRDATA(nm,loc,wd) #nm, &(loc), 16, (wd), 0, 1, NULL, NULL +#define HRDATA(nm,loc,wd) #nm, &(loc), 16, (wd), 0, 1, NULL, NULL, 0 /* One-bit binary flag at an arbitrary offset in a 32-bit word Register */ -#define FLDATA(nm,loc,pos) #nm, &(loc), 2, 1, (pos), 1, NULL, NULL +#define FLDATA(nm,loc,pos) #nm, &(loc), 2, 1, (pos), 1, NULL, NULL, 0 /* Arbitrary location and Radix Register */ -#define GRDATA(nm,loc,rdx,wd,pos) #nm, &(loc), (rdx), (wd), (pos), 1, NULL, NULL +#define GRDATA(nm,loc,rdx,wd,pos) #nm, &(loc), (rdx), (wd), (pos), 1, NULL, NULL, 0 /* Arrayed register whose data is kept in a standard C array Register */ -#define BRDATA(nm,loc,rdx,wd,dep) #nm, (loc), (rdx), (wd), 0, (dep), NULL, NULL +#define BRDATA(nm,loc,rdx,wd,dep) #nm, (loc), (rdx), (wd), 0, (dep), NULL, NULL, 0 /* Arrayed register whose data is part of the UNIT structure */ #define URDATA(nm,loc,rdx,wd,off,dep,fl) \ - #nm, &(loc), (rdx), (wd), (off), (dep), NULL, NULL, ((fl) | REG_UNIT) + #nm, &(loc), (rdx), (wd), (off), (dep), NULL, NULL, 0, ((fl) | REG_UNIT) +/* Arrayed register whose data is part of an arbitrary structure */ +#define SRDATA(nm,loc,rdx,wd,off,dep,siz,fl) \ + #nm, &(loc), (rdx), (wd), (off), (dep), NULL, NULL, (siz), ((fl) | REG_STRUCT) /* Same as above, but with additional description initializer */ -#define ORDATAD(nm,loc,wd,desc) #nm, &(loc), 8, (wd), 0, 1, (desc), NULL -#define DRDATAD(nm,loc,wd,desc) #nm, &(loc), 10, (wd), 0, 1, (desc), NULL -#define HRDATAD(nm,loc,wd,desc) #nm, &(loc), 16, (wd), 0, 1, (desc), NULL -#define FLDATAD(nm,loc,pos,desc) #nm, &(loc), 2, 1, (pos), 1, (desc), NULL -#define GRDATAD(nm,loc,rdx,wd,pos,desc) #nm, &(loc), (rdx), (wd), (pos), 1, (desc), NULL -#define BRDATAD(nm,loc,rdx,wd,dep,desc) #nm, (loc), (rdx), (wd), 0, (dep), (desc), NULL +#define ORDATAD(nm,loc,wd,desc) #nm, &(loc), 8, (wd), 0, 1, (desc), NULL, 0 +#define DRDATAD(nm,loc,wd,desc) #nm, &(loc), 10, (wd), 0, 1, (desc), NULL, 0 +#define HRDATAD(nm,loc,wd,desc) #nm, &(loc), 16, (wd), 0, 1, (desc), NULL, 0 +#define FLDATAD(nm,loc,pos,desc) #nm, &(loc), 2, 1, (pos), 1, (desc), NULL, 0 +#define GRDATAD(nm,loc,rdx,wd,pos,desc) #nm, &(loc), (rdx), (wd), (pos), 1, (desc), NULL, 0 +#define BRDATAD(nm,loc,rdx,wd,dep,desc) #nm, (loc), (rdx), (wd), 0, (dep), (desc), NULL, 0 #define URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \ - #nm, &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_UNIT) + #nm, &(loc), (rdx), (wd), (off), (dep), (desc), NULL, 0, ((fl) | REG_UNIT) +#define SRDATAD(nm,loc,rdx,wd,off,dep,siz,fl,desc) \ + #nm, &(loc), (rdx), (wd), (off), (dep), (desc), NULL, (siz), ((fl) | REG_STRUCT) /* Same as above, but with additional description initializer, and bitfields */ -#define ORDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 8, (wd), 0, 1, (desc), (flds) -#define DRDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 10, (wd), 0, 1, (desc), (flds) -#define HRDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 16, (wd), 0, 1, (desc), (flds) -#define FLDATADF(nm,loc,pos,desc,flds) #nm, &(loc), 2, 1, (pos), 1, (desc), (flds) -#define GRDATADF(nm,loc,rdx,wd,pos,desc,flds) #nm, &(loc), (rdx), (wd), (pos), 1, (desc), (flds) -#define BRDATADF(nm,loc,rdx,wd,dep,desc,flds) #nm, (loc), (rdx), (wd), 0, (dep), (desc), (flds) +#define ORDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 8, (wd), 0, 1, (desc), (flds), 0 +#define DRDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 10, (wd), 0, 1, (desc), (flds), 0 +#define HRDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 16, (wd), 0, 1, (desc), (flds), 0 +#define FLDATADF(nm,loc,pos,desc,flds) #nm, &(loc), 2, 1, (pos), 1, (desc), (flds), 0 +#define GRDATADF(nm,loc,rdx,wd,pos,desc,flds) #nm, &(loc), (rdx), (wd), (pos), 1, (desc), (flds), 0 +#define BRDATADF(nm,loc,rdx,wd,dep,desc,flds) #nm, (loc), (rdx), (wd), 0, (dep), (desc), (flds), 0 #define URDATADF(nm,loc,rdx,wd,off,dep,fl,desc,flds) \ - #nm, &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_UNIT) + #nm, &(loc), (rdx), (wd), (off), (dep), (desc), (flds), 0, ((fl) | REG_UNIT) +#define SRDATADF(nm,loc,rdx,wd,off,dep,siz,fl,desc,flds) \ + #nm, &(loc), (rdx), (wd), (off), (dep), (desc), (flds), (siz), ((fl) | REG_STRUCT) #define BIT(nm) {#nm, 0xffffffff, 1} /* Single Bit definition */ #define BITNC {"", 0xffffffff, 1} /* Don't care Bit definition */ #define BITF(nm,sz) {#nm, 0xffffffff, sz} /* Bit Field definition */ @@ -807,30 +816,36 @@ struct FILEREF { #define BITFFMT(nm,sz,fmt) {#nm, 0xffffffff, sz, NULL, #fmt}/* Bit Field definition with Output format */ #define BITFNAM(nm,sz,names) {#nm, 0xffffffff, sz, names} /* Bit Field definition with value->name map */ #else -#define ORDATA(nm,loc,wd) "nm", &(loc), 8, (wd), 0, 1, NULL, NULL -#define DRDATA(nm,loc,wd) "nm", &(loc), 10, (wd), 0, 1, NULL, NULL -#define HRDATA(nm,loc,wd) "nm", &(loc), 16, (wd), 0, 1, NULL, NULL -#define FLDATA(nm,loc,pos) "nm", &(loc), 2, 1, (pos), 1, NULL, NULL -#define GRDATA(nm,loc,rdx,wd,pos) "nm", &(loc), (rdx), (wd), (pos), 1, NULL, NULL -#define BRDATA(nm,loc,rdx,wd,dep) "nm", (loc), (rdx), (wd), 0, (dep), NULL, NULL +#define ORDATA(nm,loc,wd) "nm", &(loc), 8, (wd), 0, 1, NULL, NULL, 0 +#define DRDATA(nm,loc,wd) "nm", &(loc), 10, (wd), 0, 1, NULL, NULL, 0 +#define HRDATA(nm,loc,wd) "nm", &(loc), 16, (wd), 0, 1, NULL, NULL, 0 +#define FLDATA(nm,loc,pos) "nm", &(loc), 2, 1, (pos), 1, NULL, NULL, 0 +#define GRDATA(nm,loc,rdx,wd,pos) "nm", &(loc), (rdx), (wd), (pos), 1, NULL, NULL, 0 +#define BRDATA(nm,loc,rdx,wd,dep) "nm", (loc), (rdx), (wd), 0, (dep), NULL, NULL, 0 #define URDATA(nm,loc,rdx,wd,off,dep,fl) \ - "nm", &(loc), (rdx), (wd), (off), (dep), NULL, NULL, ((fl) | REG_UNIT) -#define ORDATAD(nm,loc,wd,desc) "nm", &(loc), 8, (wd), 0, 1, (desc), NULL -#define DRDATAD(nm,loc,wd,desc) "nm", &(loc), 10, (wd), 0, 1, (desc), NULL -#define HRDATAD(nm,loc,wd,desc) "nm", &(loc), 16, (wd), 0, 1, (desc), NULL -#define FLDATAD(nm,loc,pos,desc) "nm", &(loc), 2, 1, (pos), 1, (desc), NULL -#define GRDATAD(nm,loc,rdx,wd,pos,desc) "nm", &(loc), (rdx), (wd), (pos), 1, (desc), NULL -#define BRDATAD(nm,loc,rdx,wd,dep,desc) "nm", (loc), (rdx), (wd), 0, (dep), (desc), NULL + "nm", &(loc), (rdx), (wd), (off), (dep), NULL, NULL, 0, ((fl) | REG_UNIT) +#define SRDATA(nm,loc,rdx,wd,off,dep,siz,fl) \ + "nm", &(loc), (rdx), (wd), (off), (dep), NULL, NULL, (siz), ((fl) | REG_STRUCT) +#define ORDATAD(nm,loc,wd,desc) "nm", &(loc), 8, (wd), 0, 1, (desc), NULL, 0 +#define DRDATAD(nm,loc,wd,desc) "nm", &(loc), 10, (wd), 0, 1, (desc), NULL, 0 +#define HRDATAD(nm,loc,wd,desc) "nm", &(loc), 16, (wd), 0, 1, (desc), NULL, 0 +#define FLDATAD(nm,loc,pos,desc) "nm", &(loc), 2, 1, (pos), 1, (desc), NULL, 0 +#define GRDATAD(nm,loc,rdx,wd,pos,desc) "nm", &(loc), (rdx), (wd), (pos), 1, (desc), NULL, 0 +#define BRDATAD(nm,loc,rdx,wd,dep,desc) "nm", (loc), (rdx), (wd), 0, (dep), (desc), NULL, 0 #define URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \ - "nm", &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_UNIT) -#define ORDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 8, (wd), 0, 1, (desc), (flds) -#define DRDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 10, (wd), 0, 1, (desc), (flds) -#define HRDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 16, (wd), 0, 1, (desc), (flds) -#define FLDATADF(nm,loc,pos,desc,flds) "nm", &(loc), 2, 1, (pos), 1, (desc), (flds) -#define GRDATADF(nm,loc,rdx,wd,pos,desc,flds) "nm", &(loc), (rdx), (wd), (pos), 1, (desc), (flds) -#define BRDATADF(nm,loc,rdx,wd,dep,desc,flds) "nm", (loc), (rdx), (wd), 0, (dep), (desc), (flds) + "nm", &(loc), (rdx), (wd), (off), (dep), (desc), NULL, 0, ((fl) | REG_UNIT) +#define SRDATAD(nm,loc,rdx,wd,off,dep,fl,siz,desc) \ + "nm", &(loc), (rdx), (wd), (off), (dep), (desc), NULL, (siz), ((fl) | REG_STRUCT) +#define ORDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 8, (wd), 0, 1, (desc), (flds), 0 +#define DRDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 10, (wd), 0, 1, (desc), (flds), 0 +#define HRDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 16, (wd), 0, 1, (desc), (flds), 0 +#define FLDATADF(nm,loc,pos,desc,flds) "nm", &(loc), 2, 1, (pos), 1, (desc), (flds), 0 +#define GRDATADF(nm,loc,rdx,wd,pos,desc,flds) "nm", &(loc), (rdx), (wd), (pos), 1, (desc), (flds), 0 +#define BRDATADF(nm,loc,rdx,wd,dep,desc,flds) "nm", (loc), (rdx), (wd), 0, (dep), (desc), (flds), 0 #define URDATADF(nm,loc,rdx,wd,off,dep,fl,desc,flds) \ - "nm", &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_UNIT) + "nm", &(loc), (rdx), (wd), (off), (dep), (desc), (flds), 0, ((fl) | REG_UNIT) +#define SRDATADF(nm,loc,rdx,wd,off,dep,fl,siz,desc,flds) \ + "nm", &(loc), (rdx), (wd), (off), (dep), (desc), (flds), (siz), ((fl) | REG_STRUCT) #define BIT(nm) {"nm", 0xffffffff, 1} /* Single Bit definition */ #define BITNC {"", 0xffffffff, 1} /* Don't care Bit definition */ #define BITF(nm,sz) {"nm", 0xffffffff, sz} /* Bit Field definition */