00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
#include "ki.h"
00028 
00029 ULONG
00030 KiGetRegisterValue (
00031     IN ULONG Register,
00032     IN PKEXCEPTION_FRAME ExceptionFrame,
00033     IN PKTRAP_FRAME TrapFrame
00034     )
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 {
00060 
00061     
00062     
00063     
00064 
00065     
if (Register == 0) {
00066         
return 0;
00067 
00068     } 
else if (Register < 32) {
00069         
return (ULONG)(&TrapFrame->XIntZero)[Register];
00070 
00071     } 
else {
00072         
switch (Register) {
00073 
00074             
00075             
00076             
00077 
00078         
case 32:
00079             
return TrapFrame->FltF0;
00080 
00081             
00082             
00083             
00084 
00085         
case 33:
00086             
return TrapFrame->FltF1;
00087 
00088             
00089             
00090             
00091 
00092         
case 34:
00093             
return TrapFrame->FltF2;
00094 
00095             
00096             
00097             
00098 
00099         
case 35:
00100             
return TrapFrame->FltF3;
00101 
00102             
00103             
00104             
00105 
00106         
case 36:
00107             
return TrapFrame->FltF4;
00108 
00109             
00110             
00111             
00112 
00113         
case 37:
00114             
return TrapFrame->FltF5;
00115 
00116             
00117             
00118             
00119 
00120         
case 38:
00121             
return TrapFrame->FltF6;
00122 
00123             
00124             
00125             
00126 
00127         
case 39:
00128             
return TrapFrame->FltF7;
00129 
00130             
00131             
00132             
00133 
00134         
case 40:
00135             
return TrapFrame->FltF8;
00136 
00137             
00138             
00139             
00140 
00141         
case 41:
00142             
return TrapFrame->FltF9;
00143 
00144             
00145             
00146             
00147 
00148         
case 42:
00149             
return TrapFrame->FltF10;
00150 
00151             
00152             
00153             
00154 
00155         
case 43:
00156             
return TrapFrame->FltF11;
00157 
00158             
00159             
00160             
00161 
00162         
case 44:
00163             
return TrapFrame->FltF12;
00164 
00165             
00166             
00167             
00168 
00169         
case 45:
00170             
return TrapFrame->FltF13;
00171 
00172             
00173             
00174             
00175 
00176         
case 46:
00177             
return TrapFrame->FltF14;
00178 
00179             
00180             
00181             
00182 
00183         
case 47:
00184             
return TrapFrame->FltF15;
00185 
00186             
00187             
00188             
00189 
00190         
case 48:
00191             
return TrapFrame->FltF16;
00192 
00193             
00194             
00195             
00196 
00197         
case 49:
00198             
return TrapFrame->FltF17;
00199 
00200             
00201             
00202             
00203 
00204         
case 50:
00205             
return TrapFrame->FltF18;
00206 
00207             
00208             
00209             
00210 
00211         
case 51:
00212             
return TrapFrame->FltF19;
00213 
00214             
00215             
00216             
00217 
00218         
case 52:
00219             
return ExceptionFrame->FltF20;
00220 
00221             
00222             
00223             
00224 
00225         
case 53:
00226             
return ExceptionFrame->FltF21;
00227 
00228             
00229             
00230             
00231 
00232         
case 54:
00233             
return ExceptionFrame->FltF22;
00234 
00235             
00236             
00237             
00238 
00239         
case 55:
00240             
return ExceptionFrame->FltF23;
00241 
00242             
00243             
00244             
00245 
00246         
case 56:
00247             
return ExceptionFrame->FltF24;
00248 
00249             
00250             
00251             
00252 
00253         
case 57:
00254             
return ExceptionFrame->FltF25;
00255 
00256             
00257             
00258             
00259 
00260         
case 58:
00261             
return ExceptionFrame->FltF26;
00262 
00263             
00264             
00265             
00266 
00267         
case 59:
00268             
return ExceptionFrame->FltF27;
00269 
00270             
00271             
00272             
00273 
00274         
case 60:
00275             
return ExceptionFrame->FltF28;
00276 
00277             
00278             
00279             
00280 
00281         
case 61:
00282             
return ExceptionFrame->FltF29;
00283 
00284             
00285             
00286             
00287 
00288         
case 62:
00289             
return ExceptionFrame->FltF30;
00290 
00291             
00292             
00293             
00294 
00295         
case 63:
00296             
return ExceptionFrame->FltF31;
00297         }
00298     }
00299 }
00300 
00301 ULONGLONG
00302 KiGetRegisterValue64 (
00303     IN ULONG Register,
00304     IN PKEXCEPTION_FRAME ExceptionFrame,
00305     IN PKTRAP_FRAME TrapFrame
00306     )
00307 
00308 
00309 
00310 
00311 
00312 
00313 
00314 
00315 
00316 
00317 
00318 
00319 
00320 
00321 
00322 
00323 
00324 
00325 
00326 
00327 
00328 
00329 
00330 
00331 {
00332 
00333     
00334     
00335     
00336 
00337     
if (Register == 0) {
00338         
return 0;
00339 
00340     } 
else if (Register < 32) {
00341         
return (&TrapFrame->XIntZero)[Register];
00342 
00343     } 
else {
00344         
switch (Register) {
00345 
00346             
00347             
00348             
00349 
00350         
case 32:
00351             
return TrapFrame->XFltF0;
00352 
00353             
00354             
00355             
00356 
00357         
case 33:
00358             
return TrapFrame->XFltF1;
00359 
00360             
00361             
00362             
00363 
00364         
case 34:
00365             
return TrapFrame->XFltF2;
00366 
00367             
00368             
00369             
00370 
00371         
case 35:
00372             
return TrapFrame->XFltF3;
00373 
00374             
00375             
00376             
00377 
00378         
case 36:
00379             
return TrapFrame->XFltF4;
00380 
00381             
00382             
00383             
00384 
00385         
case 37:
00386             
return TrapFrame->XFltF5;
00387 
00388             
00389             
00390             
00391 
00392         
case 38:
00393             
return TrapFrame->XFltF6;
00394 
00395             
00396             
00397             
00398 
00399         
case 39:
00400             
return TrapFrame->XFltF7;
00401 
00402             
00403             
00404             
00405 
00406         
case 40:
00407             
return TrapFrame->XFltF8;
00408 
00409             
00410             
00411             
00412 
00413         
case 41:
00414             
return TrapFrame->XFltF9;
00415 
00416             
00417             
00418             
00419 
00420         
case 42:
00421             
return TrapFrame->XFltF10;
00422 
00423             
00424             
00425             
00426 
00427         
case 43:
00428             
return TrapFrame->XFltF11;
00429 
00430             
00431             
00432             
00433 
00434         
case 44:
00435             
return TrapFrame->XFltF12;
00436 
00437             
00438             
00439             
00440 
00441         
case 45:
00442             
return TrapFrame->XFltF13;
00443 
00444             
00445             
00446             
00447 
00448         
case 46:
00449             
return TrapFrame->XFltF14;
00450 
00451             
00452             
00453             
00454 
00455         
case 47:
00456             
return TrapFrame->XFltF15;
00457 
00458             
00459             
00460             
00461 
00462         
case 48:
00463             
return TrapFrame->XFltF16;
00464 
00465             
00466             
00467             
00468 
00469         
case 49:
00470             
return TrapFrame->XFltF17;
00471 
00472             
00473             
00474             
00475 
00476         
case 50:
00477             
return TrapFrame->XFltF18;
00478 
00479             
00480             
00481             
00482 
00483         
case 51:
00484             
return TrapFrame->XFltF19;
00485 
00486             
00487             
00488             
00489 
00490         
case 52:
00491             
return ExceptionFrame->XFltF20;
00492 
00493             
00494             
00495             
00496 
00497         
case 53:
00498             
return TrapFrame->XFltF21;
00499 
00500             
00501             
00502             
00503 
00504         
case 54:
00505             
return ExceptionFrame->XFltF22;
00506 
00507             
00508             
00509             
00510 
00511         
case 55:
00512             
return TrapFrame->XFltF23;
00513 
00514             
00515             
00516             
00517 
00518         
case 56:
00519             
return ExceptionFrame->XFltF24;
00520 
00521             
00522             
00523             
00524 
00525         
case 57:
00526             
return TrapFrame->XFltF25;
00527 
00528             
00529             
00530             
00531 
00532         
case 58:
00533             
return ExceptionFrame->XFltF26;
00534 
00535             
00536             
00537             
00538 
00539         
case 59:
00540             
return TrapFrame->XFltF27;
00541 
00542             
00543             
00544             
00545 
00546         
case 60:
00547             
return ExceptionFrame->XFltF28;
00548 
00549             
00550             
00551             
00552 
00553         
case 61:
00554             
return TrapFrame->XFltF29;
00555 
00556             
00557             
00558             
00559 
00560         
case 62:
00561             
return ExceptionFrame->XFltF30;
00562 
00563             
00564             
00565             
00566 
00567         
case 63:
00568             
return TrapFrame->XFltF31;
00569         }
00570     }
00571 }
00572 
00573 
VOID
00574 KiSetRegisterValue (
00575     IN ULONG Register,
00576     IN ULONG Value,
00577     OUT PKEXCEPTION_FRAME ExceptionFrame,
00578     OUT PKTRAP_FRAME TrapFrame
00579     )
00580 
00581 
00582 
00583 
00584 
00585 
00586 
00587 
00588 
00589 
00590 
00591 
00592 
00593 
00594 
00595 
00596 
00597 
00598 
00599 
00600 
00601 
00602 
00603 
00604 
00605 
00606 {
00607 
00608     
00609     
00610     
00611 
00612     
if (Register < 32) {
00613         (&TrapFrame->XIntZero)[Register] = (LONG)Value;
00614 
00615     } 
else {
00616         
switch (Register) {
00617 
00618             
00619             
00620             
00621 
00622         
case 32:
00623             TrapFrame->FltF0 = Value;
00624             
return;
00625 
00626             
00627             
00628             
00629 
00630         
case 33:
00631             TrapFrame->FltF1 = Value;
00632             
return;
00633 
00634             
00635             
00636             
00637 
00638         
case 34:
00639             TrapFrame->FltF2 = Value;
00640             
return;
00641 
00642             
00643             
00644             
00645 
00646         
case 35:
00647             TrapFrame->FltF3 = Value;
00648             
return;
00649 
00650             
00651             
00652             
00653 
00654         
case 36:
00655             TrapFrame->FltF4 = Value;
00656             
return;
00657 
00658             
00659             
00660             
00661 
00662         
case 37:
00663             TrapFrame->FltF5 = Value;
00664             
return;
00665 
00666             
00667             
00668             
00669 
00670         
case 38:
00671             TrapFrame->FltF6 = Value;
00672             
return;
00673 
00674             
00675             
00676             
00677 
00678         
case 39:
00679             TrapFrame->FltF7 = Value;
00680             
return;
00681 
00682             
00683             
00684             
00685 
00686         
case 40:
00687             TrapFrame->FltF8 = Value;
00688             
return;
00689 
00690             
00691             
00692             
00693 
00694         
case 41:
00695             TrapFrame->FltF9 = Value;
00696             
return;
00697 
00698             
00699             
00700             
00701 
00702         
case 42:
00703             TrapFrame->FltF10 = Value;
00704             
return;
00705 
00706             
00707             
00708             
00709 
00710         
case 43:
00711             TrapFrame->FltF11 = Value;
00712             
return;
00713 
00714             
00715             
00716             
00717 
00718         
case 44:
00719             TrapFrame->FltF12 = Value;
00720             
return;
00721 
00722             
00723             
00724             
00725 
00726         
case 45:
00727             TrapFrame->FltF13 = Value;
00728             
return;
00729 
00730             
00731             
00732             
00733 
00734         
case 46:
00735             TrapFrame->FltF14 = Value;
00736             
return;
00737 
00738             
00739             
00740             
00741 
00742         
case 47:
00743             TrapFrame->FltF15 = Value;
00744             
return;
00745 
00746             
00747             
00748             
00749 
00750         
case 48:
00751             TrapFrame->FltF16 = Value;
00752             
return;
00753 
00754             
00755             
00756             
00757 
00758         
case 49:
00759             TrapFrame->FltF17 = Value;
00760             
return;
00761 
00762             
00763             
00764             
00765 
00766         
case 50:
00767             TrapFrame->FltF18 = Value;
00768             
return;
00769 
00770             
00771             
00772             
00773 
00774         
case 51:
00775             TrapFrame->FltF19 = Value;
00776             
return;
00777 
00778             
00779             
00780             
00781 
00782         
case 52:
00783             ExceptionFrame->FltF20 = Value;
00784             
return;
00785 
00786             
00787             
00788             
00789 
00790         
case 53:
00791             ExceptionFrame->FltF21 = Value;
00792             
return;
00793 
00794             
00795             
00796             
00797 
00798         
case 54:
00799             ExceptionFrame->FltF22 = Value;
00800             
return;
00801 
00802             
00803             
00804             
00805 
00806         
case 55:
00807             ExceptionFrame->FltF23 = Value;
00808             
return;
00809 
00810             
00811             
00812             
00813 
00814         
case 56:
00815             ExceptionFrame->FltF24 = Value;
00816             
return;
00817 
00818             
00819             
00820             
00821 
00822         
case 57:
00823             ExceptionFrame->FltF25 = Value;
00824             
return;
00825 
00826             
00827             
00828             
00829 
00830         
case 58:
00831             ExceptionFrame->FltF26 = Value;
00832             
return;
00833 
00834             
00835             
00836             
00837 
00838         
case 59:
00839             ExceptionFrame->FltF27 = Value;
00840             
return;
00841 
00842             
00843             
00844             
00845 
00846         
case 60:
00847             ExceptionFrame->FltF28 = Value;
00848             
return;
00849 
00850             
00851             
00852             
00853 
00854         
case 61:
00855             ExceptionFrame->FltF29 = Value;
00856             
return;
00857 
00858             
00859             
00860             
00861 
00862         
case 62:
00863             ExceptionFrame->FltF30 = Value;
00864             
return;
00865 
00866             
00867             
00868             
00869 
00870         
case 63:
00871             ExceptionFrame->FltF31 = Value;
00872             
return;
00873         }
00874     }
00875 }
00876 
00877 
VOID
00878 KiSetRegisterValue64 (
00879     IN ULONG Register,
00880     IN ULONGLONG Value,
00881     OUT PKEXCEPTION_FRAME ExceptionFrame,
00882     OUT PKTRAP_FRAME TrapFrame
00883     )
00884 
00885 
00886 
00887 
00888 
00889 
00890 
00891 
00892 
00893 
00894 
00895 
00896 
00897 
00898 
00899 
00900 
00901 
00902 
00903 
00904 
00905 
00906 
00907 
00908 
00909 
00910 {
00911 
00912     
00913     
00914     
00915 
00916     
if (Register < 32) {
00917         (&TrapFrame->XIntZero)[Register] = Value;
00918 
00919     } 
else {
00920         
switch (Register) {
00921 
00922             
00923             
00924             
00925 
00926         
case 32:
00927             TrapFrame->XFltF0 = Value;
00928             
return;
00929 
00930             
00931             
00932             
00933 
00934         
case 33:
00935             TrapFrame->XFltF1 = Value;
00936             
return;
00937 
00938             
00939             
00940             
00941 
00942         
case 34:
00943             TrapFrame->XFltF2 = Value;
00944             
return;
00945 
00946             
00947             
00948             
00949 
00950         
case 35:
00951             TrapFrame->XFltF3 = Value;
00952             
return;
00953 
00954             
00955             
00956             
00957 
00958         
case 36:
00959             TrapFrame->XFltF4 = Value;
00960             
return;
00961 
00962             
00963             
00964             
00965 
00966         
case 37:
00967             TrapFrame->XFltF5 = Value;
00968             
return;
00969 
00970             
00971             
00972             
00973 
00974         
case 38:
00975             TrapFrame->XFltF6 = Value;
00976             
return;
00977 
00978             
00979             
00980             
00981 
00982         
case 39:
00983             TrapFrame->XFltF7 = Value;
00984             
return;
00985 
00986             
00987             
00988             
00989 
00990         
case 40:
00991             TrapFrame->XFltF8 = Value;
00992             
return;
00993 
00994             
00995             
00996             
00997 
00998         
case 41:
00999             TrapFrame->XFltF9 = Value;
01000             
return;
01001 
01002             
01003             
01004             
01005 
01006         
case 42:
01007             TrapFrame->XFltF10 = Value;
01008             
return;
01009 
01010             
01011             
01012             
01013 
01014         
case 43:
01015             TrapFrame->XFltF11 = Value;
01016             
return;
01017 
01018             
01019             
01020             
01021 
01022         
case 44:
01023             TrapFrame->XFltF12 = Value;
01024             
return;
01025 
01026             
01027             
01028             
01029 
01030         
case 45:
01031             TrapFrame->XFltF13 = Value;
01032             
return;
01033 
01034             
01035             
01036             
01037 
01038         
case 46:
01039             TrapFrame->XFltF14 = Value;
01040             
return;
01041 
01042             
01043             
01044             
01045 
01046         
case 47:
01047             TrapFrame->XFltF15 = Value;
01048             
return;
01049 
01050             
01051             
01052             
01053 
01054         
case 48:
01055             TrapFrame->XFltF16 = Value;
01056             
return;
01057 
01058             
01059             
01060             
01061 
01062         
case 49:
01063             TrapFrame->XFltF17 = Value;
01064             
return;
01065 
01066             
01067             
01068             
01069 
01070         
case 50:
01071             TrapFrame->XFltF18 = Value;
01072             
return;
01073 
01074             
01075             
01076             
01077 
01078         
case 51:
01079             TrapFrame->XFltF19 = Value;
01080             
return;
01081 
01082             
01083             
01084             
01085 
01086         
case 52:
01087             ExceptionFrame->XFltF20 = Value;
01088             
return;
01089 
01090             
01091             
01092             
01093 
01094         
case 53:
01095             TrapFrame->XFltF21 = Value;
01096             
return;
01097 
01098             
01099             
01100             
01101 
01102         
case 54:
01103             ExceptionFrame->XFltF22 = Value;
01104             
return;
01105 
01106             
01107             
01108             
01109 
01110         
case 55:
01111             TrapFrame->XFltF23 = Value;
01112             
return;
01113 
01114             
01115             
01116             
01117 
01118         
case 56:
01119             ExceptionFrame->XFltF24 = Value;
01120             
return;
01121 
01122             
01123             
01124             
01125 
01126         
case 57:
01127             TrapFrame->XFltF25 = Value;
01128             
return;
01129 
01130             
01131             
01132             
01133 
01134         
case 58:
01135             ExceptionFrame->XFltF26 = Value;
01136             
return;
01137 
01138             
01139             
01140             
01141 
01142         
case 59:
01143             TrapFrame->XFltF27 = Value;
01144             
return;
01145 
01146             
01147             
01148             
01149 
01150         
case 60:
01151             ExceptionFrame->XFltF28 = Value;
01152             
return;
01153 
01154             
01155             
01156             
01157 
01158         
case 61:
01159             TrapFrame->XFltF29 = Value;
01160             
return;
01161 
01162             
01163             
01164             
01165 
01166         
case 62:
01167             ExceptionFrame->XFltF30 = Value;
01168             
return;
01169 
01170             
01171             
01172             
01173 
01174         
case 63:
01175             TrapFrame->XFltF31 = Value;
01176             
return;
01177         }
01178     }
01179 }