From 3ff89074f56462fa57d8e9c87dc7ee17626b0d42 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 17 Mar 2016 10:45:45 -0700 Subject: [PATCH] SCP: Add generic REGDATA register populating macro. This allows simulator code to be insulated from any changes which may be made to the REG structure in the future. The REGDATA macro will be update as needed to avoid any changes in simulator specific code. --- doc/simh.doc | Bin 217088 -> 218112 bytes sim_defs.h | 62 +++++++++++++++++++++++++++------------------------ 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/doc/simh.doc b/doc/simh.doc index 8147f4827033feee8bc42a071ea8e34953a3b09e..7df45d07ef1e96f27fad3a123180092e2f132d2f 100644 GIT binary patch delta 30252 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 E0d3W!9smFU delta 29435 zcmb{52UrwW+wk$30TdMw3#fpKioH=qED84Bd+!|;TVh|ax7b!0d+#lF)Fk#E6*X$q z*s%95mI%E6dv+HVO`iAp-s_X=x162bojvD1b!KOA)LPe3OI>I97h9$(mVfSwvXZpi zO-xEkl8uYFvlvUT6fpsH9agHdG#{|r?w6{708=%*Rmtq{giegPt&>u$geQlqhJ5F<^JpK$@k6P zX_o}rvYfp2tCsQYcHZ>6Oy6wYUe-BYRZDFTO#i~kDKIG5-`||yy|9rAFgJ29VWa}h z_o7BB*!&0S=gt&jq)M4vWGZc>Le0^c0*q8?^XW{XMk>tgocTLR z1^An5Wj07-W57usku?cw)yM1H1O<646z2~y*z6^YEw&PuHmA=~EVDc((Dob;*N_qc=4+V>8&9;AxU_j>4kK*A z!R9SFDj1L1N)l#H%u&qPVl4@w4fQH(Y_XPvEhevEV~aKSY&qan&e&qja8Q6bop(vu z5@O9TTdH_hm&ytWFwgQ1&LSymMuVuVQZzliR&}+Id6th+_7H1!sj@si-y6HKR!2~f zxwnte7eYeJ>wQ9v$E?{64luv)DQax7W;Zx!dx4zoE2g(=*Hhc&D=v3w7`_7r_8-(~ z;Gq6p2KWx_>&uoN0|s{KKcJXzhd!NsUdtGQ5gCi_jd z6SA3`M!P%Pc46)rohPmJP0iDy3mOkdW7@taI!d#?vZLG&pSM>{d0FE8a>*}CoS)0w zYC*2#mzvqIeZhjFj&?6Mwmn&LGM87MZiD&`8sOWZfBz0ceEW7a3e&lZyoH{riRxj# zu`i?j>)z}Ovb(#z=>9FPDY>|Hx}iSmJJr$A=zmh&8fP+k+sfuU%r%`QjwuoAb!JGW z)SNdKZEW0 zzeh}>ruunFzGCv{RIhJ|37@O^s*cXge0sXG>afbq-4vw-TH@Vfer~?IdiK=lv~oo&n4xhiO% zs~PuIpAwcr{`enWli&U|;eV)w1OB17mcl7^5%?wm`nl(7ItPj3t3TB0rKV+4lw5Fawv6o>fd$jLfRPx}*B&;g{43`o24=tDYn`+%2fPTvFfZE|=9E zy5kkqU0?W2&0geU{G<3~kK!L)jF;35BQ=7Q)F8qBs$jk@T^v(FCv~0M$gWZ8y;!5! zqG~jQLNDwh|G&oBD15>HDsVJd_bckk>fQv#2QTBU#2vk|^-A28rKGkRsp-k7k;$pv zaZ)HteO_i&o+`I4Exy@u-RZ066l!O;<$o(t?sO^5n?~W4>)RIK<YSQftFUH?|-Hi)?YnR)40@O=tvbp{na%!-9L5pZ`x6zMrl)C`&Bu= z85oM%1yXvX(NawRT}vq-#d#Jn2afyifNb*86%@%(z)4z zoruLboW~!y2pLHK!gV~x6F4%cIw1|5kq$E0x+4?vqX5ETS3Sw`x2v6k$s50|o|3Ni zb#TkRdP0~^Q+2aKyECM0`TtZsxBj_$q*N795tUH|GR@RLO|(H<48{-)#c+(kNQ}W) zOvenY#|CV~X8epT*a_1vZjRwN;&2CdaUT!x5Kr(F2}neC4@JoVFId8#G7U&Sk!irv zV`LgQVoVM8)4)=e6V~9Wmc>hSoOKR1CbiY9g;EE@DQsA9_m> z38{ojB9V&{H^vN{fX4ZnF!aK9+=p*AdJ1OaEV5>25W^f?M(!Mn(h6Jf7@=NN8BRcR z^wvjJ*L*As2)m`kUA1luiwadWNzi?e6Ox^L@Iw%SQ5W@49}Uq6lI3P-j=qS*WK6+S zOv7|YvCNo_HCT&7IE*7W=AoFB<0Pc)XK)sAxPvc9KqBNkmI{eaS~w#+av%utk1oX@ zWTxA~{B|(@5~(GmE*Yt5MoJzXVLU1+nXoN`s+&VknP^ir50`BATm0|ab>u=hIXP*2 z^4Bfr>vr<>;=yFURQUSE-!3c^e<@lpLJ*45kmm6nzDG^eLKk#JH}pVHNE3=gKTO6< zPoFXY-W$dPS)=Iv* z%R{?fsF&d0KdmdgJi6-YeoTcZsIU?8SpI%Z%N%-NLhjXtY$XD&8jGfvGE0 zT)DhuF5e7n|5Xf)dDD7e_|4su};Onf~8G z{D~3nU*5ZjH@VM=T#%985BX6BWzhsp(F`rn5;7aKM+Z#D46MfnY{X{#44E;udZ6#r6}JV5){g8If{EoMcH0s zv}=7ThtU5N-ft^H4z^AIVVaLX+P5T;od)m@Bh|181pO*%Maww1Q^YMHP z!Vg%Av-pSrKdJ(=aNJLEQ{Ixu$R}a`2#D$TN}aBn%Gm2xwpAO`yoH5dEACAgSiXP#ZUz`&>g)n4YRPb0IQZgB>qAi)PfvFpjJ`(BL-q9 z)?*vqL*v848fcA4n29|&g!f29>EbNX;aY;>6YUU*W!R28c!69cO&r&jq~#$3E`03e zj`{)2RhWdIa0yr89mwE;2t;Bg=3sXSeI5>>yeZ73`4kgpaSQ3gsFHUdpMLYBk9ez& zF$GW|7w`vi5{F!z_zf44V5>els_C;-ptLf1 zCr9?21(6tx)z}P`cS#4^yV~|Nu_k>PSL)I&P^=!~I(A?$+#52iq6dazM^l`q(k!3qO+@VO_M?ZtqA1qhE&lm@ts$Eebq zFkwGV!mAH$90zb3p?w(v@d%&$vhz=o4CwtRHHKjm_9AV6`XJh(7gk|2vJGG%fYSph z5uAUZwD3Y+m=TQ_97f$ASs47Nw@gs;Iz4^Ij~}NIDlFhdHG*><6d+CI^NyVyKKyTSe8I;8!{D6zNgzb%KgecX7Hh|V>gWqu)wg!5! zDVb@(5dhZFP}gH|Yldco(k@G*Vq4~o=xSOH`9#1~-=t|3^rf2SrAIn&Gr1D^VVkQZ zRnkE_Z<1G3LLcwE2iSxLCnVp#qF{~?9ipSmP zRya!!iN%|qslpj!a@3;Kp0f2V#`j_|g)sU{8C=0tl&8OZhuzqN%=DKm*n_>W^cm`g zzVn7|^A@Z7u_!}rx<(!JAHZSR0Npn&W8~5_+CsVU(#xgQj+h4U(0EM1Jv_lvDD)x~ z)lmbso^_FQW_nN-ET$JN!9CnZqrtR)>_g!p^i0HHH~I}D8)EoZL2xDrrk1?A6M8}R zxCX7*OE(*?JXzfIyT( zeKduOPM607Ou;SON4mMJUfkwV_4p3m5rM0?0q=PniK7(0Lu+)wP()z~*5WrD#a%pw z>wHR%k1szyu>RahPT97|?-03>hpzF|YsSw%Khge05A-b=v^@HTZdwNY<^;yerc$>9 za2s)0J%XCVj*)Z}L{iRv*dE0;oWWU4pr$6`8nyEm-cv*IC`s-3V?Pd{J(bh}z0n5= zG}GjNA9eqrUtljNeQYHxYo0xX0^r8?jeF5@|sYpdiW(wlywbz#mlW()j+ zU$KlzUP%S7!fM>Zee|ZXKjE{r(!c1-+_a#WrEXe#)nsc0*{JyzXo)_UjO~bn`y7@A zXn`oK!&$sV-e~4f496;5KoWA%V#=c@mf<|&k(-8M7ZCl-XEkHYG`MCWg$ht1>{*oo#Fs4;q@ZDg9k&5OEt|a zW@%Q5f;2zbRXgkM7Fu_i-@4lf>#kQ@cmL7)7B#JJGtK%|SFCSW(E64Gt#5nO`qtNt zx2G!jU1~A24Wbs)u_ux^h@(h=^AgVWqb@Gu7J`;hF4RChY{4!(!)vr$P603iqj3+9 z(PRaq6gr~^wqO^2!2$GI*^>aR2`1k?C(QP#y9Jkjoeq;N38adA32{LSCQGs^o zh6$L0d02#%*o>X{1$j16S&@CU!s=7`l`Z>I`teH+Qp6o@?^u5YY(!29mdmbi{VCWPoW&zNMotP@d9}2P`ud3e zGW%xaX2g$jlZ~6mY%)R1&FOQjBy8Khdddt_W%e@#dk~M%HAEcKFdd$2Sp%Xf24Mv* zA}zsnhAq&KN!x<_lt4QWJV)dpfL?fjcX*G4 zQJ8`mSb+39m;f*?hBFB$u$x&5UH1?kT)<^q!wuZSBRt1zG~Y|R!}ed8ypiiy_VH^O zW*HKja1D2GAJ38TH)4nq2!`n0d;24g>Rsl1q zgbW1S1%1%hF8JS50WQSY6%ucicxnhk8Kfhw65mi%z)(!up{pO%Qu?%avhtL*m9a1m z&q)(!IqapEOiRlBJx0lj>TAk!#D<)^Mn?qP!Y}183Ql{)6UoD zfPuuH_zSP^{mD=4z1RHw9{YRjp4ct?{BF5j6Z>EM=%*)WetMBSnqM~Sfve(X>oOW$ zMpN`Uc{Fdg)cr_rokuHdswh?T5ycL%6u=bBf*G4}7x@k|f?y>cz>kXRf_2yqskj(~ zP+?Mm5!i&cc!$z!A~6>S5eMZ=s&=WnePHmg9L*M_58G0&`p6RtqZT5u6ld@RY0fgX zqCN&;J`Ugk9^(m|X*truq;*Nll2#=xN?Mb&Bxyy`f~57hoY&P}+6Gxfx#}#UM(dFt zoY1-*rMbu%0R2``El*ErUedItL0XXC1@5CdS|S2l5swde_6OrM!Y?vtp%)^s2#c`= z_wfM5FHuzp!%vqaGh_9>4atIWc5OtRBbICwfMlgKBs;YsS!xT( zRzFDAc0sb2nQY~TAKv04hLDZnkgQ3zY*{K#mMUS=6((P_z0UZJN!RJl^GRI9T@<;& z_<=fThxUlYWjw)ijJd@?iQ_nh5BP#ow|OnPp$}$bK7PdkT)|DGjia*QkKnk9l#Ij> zOvZG~#*91sM&7$b2FtM)^&c{%qB+{4Gi2%Jk?G;byT;;8Zsl<7uHLV&=9T^YNn@)l z>*Pn_h|zL^-Hb3Tw|@1l>Z>0Q(+c&i_Y?7%hP7CSn{d8NTSI+}#R0@4=ug@sR^tZJ z64T-+fxoX24%lMcm$0738N9|D)VZOn`IuX_G~}SmxCt-G^kyIRS48?X65(}|R)yyH z5sPsM_mPFj2ckVXp)*E9YDsEHYDa3O8>B|0Hm)FToPOXlSI=>zvrbR?PIH|zf@aCR z(faL7EC^zM)SUF|-)lZ5g}GegU`Ogr>P)Ijs%i>y-($o<+WQ0xQyWtiozohdI5chn7XJBd4V6gm7+(m9UqjM(g1rL@zc( z3ouD5=!s8A!X$P(9iHsQ2ZwPSuMqr%krt&;78NiU!*S#(=UH+28IudrJg4iU9_ph3 znqmo7!SsSP-*k zZtTb3P~NcqMtbBz@i)zB0whYK`#V}_@}ls;i<>Fwo0m>sx_RX0uefw`$HpBz#+_8R z^2)WK0p?G z^>~i#M7t^mV+*dp`#n{Oby$xK@eFtH{J^mXI(}q7cuxCv{7j6nWa+Md7JIUEVjKXXz#LB;En7E2tCT=oQH`!1Lbr6M#ScSFNgsmu? zK(!(WVc3qnD3r+gDlEiSY{P&gP6lH-%-BPn?8iMk!SAZ7#KQEFn|Jsdil!>X5sZNt zhMm}pM|h6x4yuv^UC|rsumy3r4^Kx`@x}lQMf{5g$^FODt8Tow!GV{xhv_YMc-PIE1XR-n&PqPGiIkc3VH2+4ZzLiKr>GsNGHOXb7_auQED*yhXw&uZPOOUD z3rf?rpLG0sNsUTvN=-^FN)6g-uOT(n2*a@rf5MO2%8zzvk4cC_CMO<4ezZm#^u;8s z#z80YqC#PEIb-{Lbjrk@imO}#*)e^1B!k=o91cqk|y;V4&oxN!kbLwg=DM)By;^RHI1sw#0G4`8+<}gT2(2H zuIPnmEWi%z#St9EeLTfWyg~(Mld4qbi#B611wGTLN*|ap7kjY}nbH$!?80xDoq;#N z4cvp9i>i2FCPH0#9!_GD8=Vx1&@!ru1Duf!KFHmOn|v6F(O8C6*nt?_#0&IuSCvs% zfJL~0I6T7(RLZ0()vy(^^b7KprJtOAx1EDGmVey8U~IkiQD0U?E32Ok)AB?#qQaG% za3Yq4(FPK0iL=C5;w!P0xJoQv;|+=vvJz;9pYRCX2-ip)z(FJ+5d{g`u=F%6KN=Q& zFj!BjN;3(sCM~`wEy>n&T&3x7^5ui-tY*_=t7-n-y?CLr5&LlfGpw;*#qXPNA=bqZ z42gef*y`XE=~cvkHEiL0Nl1GTww?&itSTXRo>|rNWYoO%I(PYE(Ddq-R?j5Kw}aGs zdWE}c0li$1Y`x2=mxvm&;UCAAZ_1Jr1JuQs+6CaJD=PTy3K z+!+hSzv^lEO;Qnc(E*+D1BPM@CSWG!;~Cx{D|^n45(q#gR6~6<#^Ag(b7aoPWPr=K zhFiFUL^$~I7;^d1)I&*>Lo2kyX~d#+ep(iKVh~nfH4fki{=f}nC_ukM9n{Bc=-7)x zXi$)SV|XD|8IQt+8U64GFAAIJBSmPs*in>bir&RkrE!A(4Y?U?1hZEeNx`~UP)^q)4`ZId(L_gSLJtzI{PX2z#BMf7KRv@Dey zOD#7;bz)ir?a=`PF&4A225ZrQkak25^v3`U^)ps5i*$FnV1om9S9P-9uQ=CE_%+e4 z6->h_-%qX4mElEZeGY4RfieLTF&)eCNzc@jSFoUG7>&|0>fuebLwf#Z+Et%aJ8+aI zufTfz<`?7ERP#~wA}zGbZojc*9}eIUkF?a@s8tSe=P-^4>hUOgQ;&Tx5tFbCdvFPt zF^u|^dfrYoN_EcC<63J$`t8=tS#lG@jjw8whitXl(5`0xq*kv`t5UNct+iX&u7)>L zvsHs=@2DB9Dzz{)gttZZQuIocMaxi{9Nyv`T9!`kjS@=vOt!G@-i}Q1`2aWVv{xo+ zHLvgyiTDyo#Ce}W2t!@8LthL+6eeIN_TWAq<2hcT7j)kiC=IUvABna7))WuU``nQ71wbOY0A*)Q5qG| zzATx-aEvNTKU`Ukr6J;Q4@!AP3OovD)m4ECt;n0=EM8V3Qm;O~did%lKbF)(?#YjA zxoJ&bOLfn(-L_4hbMw`;S7-LUQhfB|-Lz2YTV9rn8056t3b)^ECkm8WQirWDoubUJ zD~=CEais`u7=y8h#x~qSBJxlgKjg`wSxGEh9ldCZ$VKX}nA)jY^qd5(u+Hqlx3cB9BjR{Ey9>wm zMvYNxv6bm#kX%X*9m!E9R6=DmMJt@bpGZ&cG9V}Nz_%uC8zacYWUR+7T)<^K$7}Q? zhr6&JXKK^Fv)7>#5QefShfAnZS5~49OSsyiH@%a@b0k1*$(jsB(E(i$g>hJejW~k~xC@z2|r?8;5^>IyBWg^`eQfVBbaI$fSuTb zy|{v_u*+o3qOn>T)$$?7?OwE5dE9~8@2X5lfdbV5;+baQk_3-yD_LCTBX`m+9w9w@$|!q7 zDO5)t^u=JvJI{f<`#K!QDP-o|JW&KC;Mb1D5vrjUMq?rl;wa+q2rb%k4AGt*b%R74 z(sZB;qbb^A6*l1k-XTjzss**s9EWinr|}0q;0w}qV$eYsL|{J-!?`p2z(hpjI&OBR zuCH}r%0Z^CJOORd6EWC>mvHZ*l*OCH zjpWqTi~6r~80=2w;BvQDg<0-AmA=(js%{f*!@Uh73?i@|Pf(yO%WG^y5*!GmBl032 zsv-&pAc2-3OME4^5?6_-#8YA^akOi;d`_UB>#0qXhTBSCT9HwhGh@aYKfol7r;*@`Hxnicj ze8w+TgfY#W89ry#6a0_?w90{o2 zi$keiG}T@tdSfbd%*Qfp#1|yOIf6r1c%mSBA_9{Ujk#EgHK@mU-VA@kp$}&+PzDXq z2GcMT^RcjxiMW&4ia6ZEbG*bGe1O)MlA#7VqbnlN2OF>zzrra}Rnj6a{P5)iKQF&L zk=wYJSCU<^re(_)e|h+W@uVm6H2JYS)plzJShPDV(u=Ajw^s*d-FM=i=)8;h|7uOTszGHyf<%5k`P1i*^K;txakKpTc;0xPqHh|+hdE1z zaNQN>YpfRl*QElLvk0LsN?|H>@DmOa^F#Q<8tb%#t}-N)W08w+GKiMxg@{=!mLBpc=j&4E@LxgCU=nSr-`vEoVJO6k&igmK)PPaiWkLuI?D71@x7j zY$1$W(Tgxfpk@@U6}4d>)~3CuX@aq~ zuP75c%OE-O=KPXt@`WCpSRFt%jT5Upz$Y9d_()hPuL}C(N0=}M+1X=3R7Y(@U^q_W z9Nyvs)QL>^=!mYEf}fyc9sWiVicMnKf-38E32ViUIF7_Pu?D#x~{gL-Iy7U+&+IE6oP4R@zfFAqqh|A|#8GQu6%PzXz~ z0$Z>hzhXb`;sM;J5h)bJI7~t`=D~7e#x~Pi=KIvQEV=#dPRZCFjJqE9r}gKBecITe z{_`NMq}>9c3DvHA#&m)_1A)XY2)20cBPRPHacBrz5hd%H5I&t@2is>b(=t&Fbuki?Va9sopUa4WK!jo-jA7R@_`dvDS4LvX1wE;MTkfUa_HWO% zjOTKzALQ(yoW{s&l2-5rcPQ^&Orn1pv_~H-zy|EVadcZiMPncaV;m;q6fVJq!en1aMOP=$6k}k< z5&VG!sFbuOT46DkBMYU>gIcJE7U+SE*n&HFg#tvO2s&W^4&fLI5{*#wMn4lbJ8>MI z%UFeDJZ9r8F5oh*!*4lV0+rDiYp?-7V-FQ zdG|4Ri+8B8iqK*{7NEdtLWB0}n9fmUJ$(?BH;~5UjWkZI$7R?LWj(b&WbB%*8wcr9 zPIpYkTx>@S{zh8fsVGXK0oou6%`V^^(LChNb2ae7`p%rG^TT6W*W2#P7#gKO|1 zloc=-3nAhDp3q8on;;6i@Bldpsf64X-W#L`ZevQpV?056!khtiCtA4tS3ei8E|Ale zUY2u~;XiRcN}l!%k<>^(>?QKQz>NTB#0soL7y&GU>$m|4UVn7l!+3zzd+EMd`U{nW z=fAS#N9b?NKv;+M@Y$CtTl$%IT+wJd|6^QPSy0ZP8P|bvMObZ8+~s<)Z*GjI@OjL1 z&J#&BPJ}l($&F$tiDqaITP}N&9)^PCv?xlWCi-I-Y^B&t`Zvs?B#U7y)mqYfFqo1J z#|TXMl@79t#39&<{hqWV#kCdxd(sWD6-VGl7y?lT4KN4mkp$2EOkkLer8t5UxPkk4 zgG>i#1;~ra2TXKj5_Wp#t-807vjAiX5VO9Hx077tS4F$Ea|WSrGN`IsUcr z^Ef_rD)oK2CqJ*_Kj-1s z{SfCUrJ*#8ocIaT@Btq&mC{Nyr1Ur8PT{2VT_{XfjKg?HfeTYODd6|$g{3%$v=r37 z(3XCopNLnRNZaG%DY>4>xbjf0tJNdT+Kf&To!l5ebOs_85-o{TMa)4ovL9p3hH)5= zYxoP%$2s)C7bGC$1XBcRqWdXk*i))L^KZ4DzBEvCjoBZqRZx3M^ktvRQJ;OZ#$CKb zN%j$lYN&-J*nk)Kj6}%(GqUf@$c>_w_pvO+?2d&$K8RU1TT7?P2bneW<^jxmTx*jy zrGiwCU30a5TG~J*ND1c8wVvCl{gBRjhd=-GdVx03$+)YBuh0f3KW*7s?FZYP=*@O7 z2{B%hyoXZud)T^48*JTKiPd&H>$fF&X94yZ2(V_r`bGhI`^DN1)*UQao4kVny9@*< zsWK3tSTc~jhx1F5_u#%EWe>Vt76R?F5STg(f%aL5+LTXHL% zb^>+()ydiEyCpe0LH0QaN}YosBL~(U1nE)_)`;BRmYj#6)OiR>orfU%JOtV2p~24N z5}hS!Em3gl9B@LJYOv-Y*vNtHj$K6rr_Mrf>MR7?XCc_gf^8r6RS{wzh>+CT2(iyb zh>T&*IXl=Ep~3FCt?IkPOM1m*mQ9L37k;^vZ>I=Ef;*ei$j+%;EE=rJ(jbpekAH2zjUGgc0d}1JHdgUaZadK^fv43cRP10j_XEMo?pN$()h}S>cIn$PO=fBPVhpH^{4! z7vxjPkAf(K!YBf=trSBElmsn731sA#3ni2gltO8gL0Oc?_o#qMsEn$prXRhg{ch@= zj?2q26{~O%@&|*j;ypgXIX(G7LDWWf^g&iqGmha7?jr#?Txq@tLOnD@UrfO?tifR%LmUzy z9XGohm!<`i2t`eFMGwrvW^Ba~+{Rrb!JE#V3#HK*%`gDdF$u0Irrpq*rA+0w?`R&@QPp4Ha$EDTP85l8TDE+)DLzPXRoW?ymA*GDa8)Z?Q$2OOYW=%51^R;vTO2S7r8(q zf7YD`Mze409;B52z6ZO|1=?pX&^~*C_Sp-x&tBkv$R3w~rIawpK6^oS*$es)*$dL` zvKM5Zy&(JS1=(jW$Ub{P{~>!^oR*S3u8&A*9>I3m3;qw;3%1W*uzmJ|?XwqbpS@uF z>;?aa?1k88FT_53A$Hjd`48C(vCm$JefC0(?3pa>pS6V&PQR2@fts7Ii52I&OC_0F z0vHX0_BNeB=cFn_Xk7-P=1lC}7;GXeHutmq*&lT(qv1SO56q{xmoarN=i42t z_?q4tCir!HH|1xBdmxFs!Vb>ndIIv!IfkAaE6KP4rVjCJ!Nt$&!n}J<%5|CD?5`^8YZVl%txNgLq+kK zxu?od&QGjm9_3J3j>F_1UtoD;s!qw}&uzL>@)MNYg_38ZNN0wpg> z$v;u@3zS^!qT~r9j*|3JwTDY<+dq5&n3qttTc`&vq#fhoN{CBH<; zH&XI2O72C;Jy4oX_Sua?#bi##af z^mhpKVbVb-^n@7;a02J>4xizklX(GE^D(L66I4G+kBUfB!1yMMGN0dzaUHjj%~X&H zLKI=mfd~x3Ow5P;5zB^%3FaGI=vX+1q}P0ZKy{!s>dT&J``jetqC2g#*P)o+Pqk;o@};Ln z9Kl*wxo^}Cx#73`WxU7r3oEsney@+p?%+{)W%xDa>4-bVQ{)iA*2bl!CxvV7*4Hxi zp33epOAGQDSE<|c$tTj3R#rH%VyeWto2F3QShYJU4(2N?ZpL6ovm}G0<*fv|HD{| zqOpipbpI+2!N!(W++!)t_j#%~9Oxm>nZ~{8n1Pv?1v6$t9*^d?j=7kJ`B;F3kjE3g zvYhQJtdGg#t0ld)LpL?LxXso^k6ouz-S z;V@MFNgq^`$LHwpYdZ9;66v(uc-7bc&md)1Dl6BOqe>Iy52dzpi(`>$q|Yi%S^Hd3 z0+dQhedV+gtDIM^>+5PclyytJtC%;n96CGsRjL#cTq(@IYVj(SD^@KYTrnW5cvwhi a)#9Z~RSFEMQmJCqfT{s8LmN1Z*Zv3Dvc{7D diff --git a/sim_defs.h b/sim_defs.h index 79f1714c..ccfaf825 100644 --- a/sim_defs.h +++ b/sim_defs.h @@ -764,11 +764,22 @@ struct FILEREF { int32 refcount; /* reference count */ }; -/* The following macros define structure contents */ +/* + The following macros exist to help populate structure contents + + They are dependent on the declaration order of the fields + of the structures they exist to populate. + + */ #define UDATA(act,fl,cap) NULL,act,NULL,NULL,NULL,0,0,(fl),0,(cap),0,NULL,0,0 -#if defined (__STDC__) || defined (_WIN32) +#if defined (__STDC__) || defined (_WIN32) /* Variants which depend on how macro arguments are convered to strings */ +/* Generic Register declaration for all fields. + If the register structure is extended, this macro will be retained and a + new macro will be provided that populates the new register structure */ +#define REGDATA(nm,loc,rdx,wd,off,dep,desc,flds,fl,qptr,siz) \ + #nm, &(loc), (rdx), (wd), (off), (dep), (desc), (flds), (fl), (qptr), (siz) /* Right Justified Octal Register Data */ #define ORDATA(nm,loc,wd) #nm, &(loc), 8, (wd), 0, 1, NULL, NULL /* Right Justified Decimal Register Data */ @@ -781,12 +792,6 @@ struct FILEREF { #define GRDATA(nm,loc,rdx,wd,pos) #nm, &(loc), (rdx), (wd), (pos), 1, NULL, NULL /* 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 -/* 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) -/* Arrayed register whose data is part of an arbitrary structure */ -#define STRDATA(nm,loc,rdx,wd,off,dep,siz,fl) \ - #nm, &(loc), (rdx), (wd), (off), (dep), NULL, NULL, ((fl) | REG_STRUCT), (siz) /* 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 @@ -794,10 +799,6 @@ struct FILEREF { #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 URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \ - #nm, &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_UNIT) -#define STRDATAD(nm,loc,rdx,wd,off,dep,siz,fl,desc) \ - #nm, &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_STRUCT), (siz) /* 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) @@ -805,47 +806,33 @@ struct FILEREF { #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 URDATADF(nm,loc,rdx,wd,off,dep,fl,desc,flds) \ - #nm, &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_UNIT) -#define STRDATADF(nm,loc,rdx,wd,off,dep,siz,fl,desc,flds) \ - #nm, &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_STRUCT), (siz) #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 */ #define BITNCF(sz) {"", 0xffffffff, sz} /* Don't care Bit Field definition */ #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 +#else /* For non-STD-C compiler which can't stringify macro arguments with # */ +#define REGDATA(nm,loc,rdx,wd,off,dep,desc,flds,fl,qptr,siz) \ + "nm", &(loc), (rdx), (wd), (off), (dep), (desc), (flds), (fl), (qptr), (siz) #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 URDATA(nm,loc,rdx,wd,off,dep,fl) \ - "nm", &(loc), (rdx), (wd), (off), (dep), NULL, NULL, ((fl) | REG_UNIT) -#define STRDATA(nm,loc,rdx,wd,off,dep,siz,fl) \ - "nm", &(loc), (rdx), (wd), (off), (dep), NULL, NULL, ((fl) | REG_STRUCT), (siz) #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 URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \ - "nm", &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_UNIT) -#define STRDATAD(nm,loc,rdx,wd,off,dep,fl,siz,desc) \ - "nm", &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_STRUCT), (siz) #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 URDATADF(nm,loc,rdx,wd,off,dep,fl,desc,flds) \ - "nm", &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_UNIT) -#define STRDATADF(nm,loc,rdx,wd,off,dep,fl,siz,desc,flds) \ - "nm", &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_STRUCT), (siz) #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 */ @@ -855,6 +842,23 @@ struct FILEREF { #endif #define ENDBITS {NULL} /* end of bitfield list */ +/* Arrayed register whose data is part of the UNIT structure */ +#define URDATA(nm,loc,rdx,wd,off,dep,fl) \ + REGDATA(nm,(loc),(rdx),(wd),(off),(dep),NULL,NULL,((fl) | REG_UNIT),0,0) +/* Arrayed register whose data is part of an arbitrary structure */ +#define STRDATA(nm,loc,rdx,wd,off,dep,siz,fl) \ + REGDATA(nm,(loc),(rdx),(wd),(off),(dep),NULL,NULL,((fl) | REG_STRUCT),0,(siz)) +/* Same as above, but with additional description initializer */ +#define URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \ + REGDATA(nm,(loc),(rdx),(wd),(off),(dep),(desc),NULL,((fl) | REG_UNIT),0,0) +#define STRDATAD(nm,loc,rdx,wd,off,dep,siz,fl,desc) \ + REGDATA(nm,(loc),(rdx),(wd),(off),(dep),(desc),NULL,((fl) | REG_STRUCT),0,(siz)) +/* Same as above, but with additional description initializer, and bitfields */ +#define URDATADF(nm,loc,rdx,wd,off,dep,fl,desc,flds) \ + REGDATA(nm,(loc),(rdx),(wd),(off),(dep),(desc),(flds),((fl) | REG_UNIT),0,0) +#define STRDATADF(nm,loc,rdx,wd,off,dep,siz,fl,desc,flds) \ + REGDATA(nm,(loc),(rdx),(wd),(off),(dep),(desc),(flds),((fl) | REG_STRUCT),0,(siz)) + /* Function prototypes */