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