Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

getsetrg.c File Reference

#include "ki.h"

Go to the source code of this file.

Functions

ULONGLONG KiGetRegisterValue (IN ULONG Register, IN PKEXCEPTION_FRAME ExceptionFrame, IN PKTRAP_FRAME TrapFrame)
VOID KiSetRegisterValue (IN ULONG Register, IN ULONGLONG Value, OUT PKEXCEPTION_FRAME ExceptionFrame, OUT PKTRAP_FRAME TrapFrame)


Function Documentation

ULONGLONG KiGetRegisterValue IN ULONG  Register,
IN PKEXCEPTION_FRAME  ExceptionFrame,
IN PKTRAP_FRAME  TrapFrame
 

Definition at line 35 of file alpha/getsetrg.c.

Referenced by KiEmulateReference().

00043 : 00044 00045 This function is called to get the value of a register from the specified 00046 exception or trap frame. 00047 00048 Arguments: 00049 00050 Register - Supplies the number of the register whose value is to be 00051 returned. Integer registers are specified as 0 - 31 and floating 00052 registers are specified as 32 - 63. 00053 00054 ExceptionFrame - Supplies a pointer to an exception frame. 00055 00056 TrapFrame - Supplies a pointer to a trap frame. 00057 00058 Return Value: 00059 00060 The value of the specified register is returned as the function value. 00061 00062 --*/ 00063 00064 { 00065 00066 // 00067 // Dispatch on the register number. 00068 // 00069 00070 switch (Register) { 00071 00072 // 00073 // Integer register V0. 00074 // 00075 00076 case 0: 00077 return TrapFrame->IntV0; 00078 00079 // 00080 // Integer register T0. 00081 // 00082 00083 case 1: 00084 return TrapFrame->IntT0; 00085 00086 // 00087 // Integer register T1. 00088 // 00089 00090 case 2: 00091 return TrapFrame->IntT1; 00092 00093 // 00094 // Integer register T2. 00095 // 00096 00097 case 3: 00098 return TrapFrame->IntT2; 00099 00100 // 00101 // Integer register T3. 00102 // 00103 00104 case 4: 00105 return TrapFrame->IntT3; 00106 00107 // 00108 // Integer register T4. 00109 // 00110 00111 case 5: 00112 return TrapFrame->IntT4; 00113 00114 // 00115 // Integer register T5. 00116 // 00117 00118 case 6: 00119 return TrapFrame->IntT5; 00120 00121 // 00122 // Integer register T6. 00123 // 00124 00125 case 7: 00126 return TrapFrame->IntT6; 00127 00128 // 00129 // Integer register T7. 00130 // 00131 00132 case 8: 00133 return TrapFrame->IntT7; 00134 00135 // 00136 // Integer register S0. 00137 // 00138 00139 case 9: 00140 return ExceptionFrame->IntS0; 00141 00142 // 00143 // Integer register S1. 00144 // 00145 00146 case 10: 00147 return ExceptionFrame->IntS1; 00148 00149 // 00150 // Integer register S2. 00151 // 00152 00153 case 11: 00154 return ExceptionFrame->IntS2; 00155 00156 // 00157 // Integer register S3. 00158 // 00159 00160 case 12: 00161 return ExceptionFrame->IntS3; 00162 00163 // 00164 // Integer register S4. 00165 // 00166 00167 case 13: 00168 return ExceptionFrame->IntS4; 00169 00170 // 00171 // Integer register S5. 00172 // 00173 00174 case 14: 00175 return ExceptionFrame->IntS5; 00176 00177 // 00178 // Integer register S6/Fp. 00179 // 00180 // N.B. Unlike the other S registers, S6 is obtained from the trap 00181 // frame instead of the exception frame since it is used by the kernel 00182 // as a trap frame pointer. 00183 // 00184 00185 case 15: 00186 return TrapFrame->IntFp; 00187 00188 // 00189 // Integer register A0. 00190 // 00191 00192 case 16: 00193 return TrapFrame->IntA0; 00194 00195 // 00196 // Integer register A1. 00197 // 00198 00199 case 17: 00200 return TrapFrame->IntA1; 00201 00202 // 00203 // Integer register A2 00204 // 00205 00206 case 18: 00207 return TrapFrame->IntA2; 00208 00209 // 00210 // Integer register A3. 00211 // 00212 00213 case 19: 00214 return TrapFrame->IntA3; 00215 00216 // 00217 // Integer register A4. 00218 // 00219 00220 case 20: 00221 return TrapFrame->IntA4; 00222 00223 // 00224 // Integer register A5. 00225 // 00226 00227 case 21: 00228 return TrapFrame->IntA5; 00229 00230 // 00231 // Integer register T8. 00232 // 00233 00234 case 22: 00235 return TrapFrame->IntT8; 00236 00237 // 00238 // Integer register T9. 00239 // 00240 00241 case 23: 00242 return TrapFrame->IntT9; 00243 00244 // 00245 // Integer register T10. 00246 // 00247 00248 case 24: 00249 return TrapFrame->IntT10; 00250 00251 // 00252 // Integer register T11. 00253 // 00254 00255 case 25: 00256 return TrapFrame->IntT11; 00257 00258 // 00259 // Integer register Ra. 00260 // 00261 00262 case 26: 00263 return TrapFrame->IntRa; 00264 00265 // 00266 // Integer register T12. 00267 // 00268 00269 case 27: 00270 return TrapFrame->IntT12; 00271 00272 // 00273 // Integer register At. 00274 // 00275 00276 case 28: 00277 return TrapFrame->IntAt; 00278 00279 // 00280 // Integer register Gp. 00281 // 00282 00283 case 29: 00284 return TrapFrame->IntGp; 00285 00286 // 00287 // Integer register Sp. 00288 // 00289 00290 case 30: 00291 return TrapFrame->IntSp; 00292 00293 // 00294 // Integer register Zero. 00295 // 00296 00297 case 31: 00298 return 0; 00299 00300 // 00301 // Floating register F0. 00302 // 00303 00304 case 32: 00305 return TrapFrame->FltF0; 00306 00307 // 00308 // Floating register F1. 00309 // 00310 00311 case 33: 00312 return TrapFrame->FltF1; 00313 00314 // 00315 // Floating register F2. 00316 // 00317 00318 case 34: 00319 return ExceptionFrame->FltF2; 00320 00321 // 00322 // Floating register F3. 00323 // 00324 00325 case 35: 00326 return ExceptionFrame->FltF3; 00327 00328 // 00329 // Floating register F4. 00330 // 00331 00332 case 36: 00333 return ExceptionFrame->FltF4; 00334 00335 // 00336 // Floating register F5. 00337 // 00338 00339 case 37: 00340 return ExceptionFrame->FltF5; 00341 00342 // 00343 // Floating register F6. 00344 // 00345 00346 case 38: 00347 return ExceptionFrame->FltF6; 00348 00349 // 00350 // Floating register F7. 00351 // 00352 00353 case 39: 00354 return ExceptionFrame->FltF7; 00355 00356 // 00357 // Floating register F8. 00358 // 00359 00360 case 40: 00361 return ExceptionFrame->FltF8; 00362 00363 // 00364 // Floating register F9. 00365 // 00366 00367 case 41: 00368 return ExceptionFrame->FltF9; 00369 00370 // 00371 // Floating register F10. 00372 // 00373 00374 case 42: 00375 return TrapFrame->FltF10; 00376 00377 // 00378 // Floating register F11. 00379 // 00380 00381 case 43: 00382 return TrapFrame->FltF11; 00383 00384 // 00385 // Floating register F12. 00386 // 00387 00388 case 44: 00389 return TrapFrame->FltF12; 00390 00391 // 00392 // Floating register F13. 00393 // 00394 00395 case 45: 00396 return TrapFrame->FltF13; 00397 00398 // 00399 // Floating register F14. 00400 // 00401 00402 case 46: 00403 return TrapFrame->FltF14; 00404 00405 // 00406 // Floating register F15. 00407 // 00408 00409 case 47: 00410 return TrapFrame->FltF15; 00411 00412 // 00413 // Floating register F16. 00414 // 00415 00416 case 48: 00417 return TrapFrame->FltF16; 00418 00419 // 00420 // Floating register F17. 00421 // 00422 00423 case 49: 00424 return TrapFrame->FltF17; 00425 00426 // 00427 // Floating register F18. 00428 // 00429 00430 case 50: 00431 return TrapFrame->FltF18; 00432 00433 // 00434 // Floating register F19. 00435 // 00436 00437 case 51: 00438 return TrapFrame->FltF19; 00439 00440 // 00441 // Floating register F20. 00442 // 00443 00444 case 52: 00445 return TrapFrame->FltF20; 00446 00447 // 00448 // Floating register F21. 00449 // 00450 00451 case 53: 00452 return TrapFrame->FltF21; 00453 00454 // 00455 // Floating register F22. 00456 // 00457 00458 case 54: 00459 return TrapFrame->FltF22; 00460 00461 // 00462 // Floating register F23. 00463 // 00464 00465 case 55: 00466 return TrapFrame->FltF23; 00467 00468 // 00469 // Floating register F24. 00470 // 00471 00472 case 56: 00473 return TrapFrame->FltF24; 00474 00475 // 00476 // Floating register F25. 00477 // 00478 00479 case 57: 00480 return TrapFrame->FltF25; 00481 00482 // 00483 // Floating register F26. 00484 // 00485 00486 case 58: 00487 return TrapFrame->FltF26; 00488 00489 // 00490 // Floating register F27. 00491 // 00492 00493 case 59: 00494 return TrapFrame->FltF27; 00495 00496 // 00497 // Floating register F28. 00498 // 00499 00500 case 60: 00501 return TrapFrame->FltF28; 00502 00503 // 00504 // Floating register F29. 00505 // 00506 00507 case 61: 00508 return TrapFrame->FltF29; 00509 00510 // 00511 // Floating register F30. 00512 // 00513 00514 case 62: 00515 return TrapFrame->FltF30; 00516 00517 // 00518 // Floating register F31 (Zero). 00519 // 00520 00521 case 63: 00522 return 0; 00523 } 00524 }

VOID KiSetRegisterValue IN ULONG  Register,
IN ULONGLONG  Value,
OUT PKEXCEPTION_FRAME  ExceptionFrame,
OUT PKTRAP_FRAME  TrapFrame
 

Definition at line 527 of file alpha/getsetrg.c.

Referenced by KiEmulateReference().

00536 : 00537 00538 This function is called to set the value of a register in the specified 00539 exception or trap frame. 00540 00541 Arguments: 00542 00543 Register - Supplies the number of the register whose value is to be 00544 stored. Integer registers are specified as 0 - 31 and floating 00545 registers are specified as 32 - 63. 00546 00547 Value - Supplies the value to be stored in the specified register. 00548 00549 ExceptionFrame - Supplies a pointer to an exception frame. 00550 00551 TrapFrame - Supplies a pointer to a trap frame. 00552 00553 Return Value: 00554 00555 None. 00556 00557 --*/ 00558 00559 { 00560 00561 // 00562 // Dispatch on the register number. 00563 // 00564 00565 switch (Register) { 00566 00567 // 00568 // Integer register V0. 00569 // 00570 00571 case 0: 00572 TrapFrame->IntV0 = Value; 00573 return; 00574 00575 // 00576 // Integer register T0. 00577 // 00578 00579 case 1: 00580 TrapFrame->IntT0 = Value; 00581 return; 00582 00583 // 00584 // Integer register T1. 00585 // 00586 00587 case 2: 00588 TrapFrame->IntT1 = Value; 00589 return; 00590 00591 // 00592 // Integer register T2. 00593 // 00594 00595 case 3: 00596 TrapFrame->IntT2 = Value; 00597 return; 00598 00599 // 00600 // Integer register T3. 00601 // 00602 00603 case 4: 00604 TrapFrame->IntT3 = Value; 00605 return; 00606 00607 // 00608 // Integer register T4. 00609 // 00610 00611 case 5: 00612 TrapFrame->IntT4 = Value; 00613 return; 00614 00615 // 00616 // Integer register T5. 00617 // 00618 00619 case 6: 00620 TrapFrame->IntT5 = Value; 00621 return; 00622 00623 // 00624 // Integer register T6. 00625 // 00626 00627 case 7: 00628 TrapFrame->IntT6 = Value; 00629 return; 00630 00631 // 00632 // Integer register T7. 00633 // 00634 00635 case 8: 00636 TrapFrame->IntT7 = Value; 00637 return; 00638 00639 // 00640 // Integer register S0. 00641 // 00642 00643 case 9: 00644 ExceptionFrame->IntS0 = Value; 00645 return; 00646 00647 // 00648 // Integer register S1. 00649 // 00650 00651 case 10: 00652 ExceptionFrame->IntS1 = Value; 00653 return; 00654 00655 // 00656 // Integer register S2. 00657 // 00658 00659 case 11: 00660 ExceptionFrame->IntS2 = Value; 00661 return; 00662 00663 // 00664 // Integer register S3. 00665 // 00666 00667 case 12: 00668 ExceptionFrame->IntS3 = Value; 00669 return; 00670 00671 // 00672 // Integer register S4. 00673 // 00674 00675 case 13: 00676 ExceptionFrame->IntS4 = Value; 00677 return; 00678 00679 // 00680 // Integer register S5. 00681 // 00682 00683 case 14: 00684 ExceptionFrame->IntS5 = Value; 00685 return; 00686 00687 // 00688 // Integer register S6/Fp. 00689 // 00690 // N.B. Unlike the other S registers, S6 is stored back in the trap 00691 // frame instead of the exception frame since it is used by the kernel 00692 // as a trap frame pointer. 00693 // 00694 00695 case 15: 00696 TrapFrame->IntFp = Value; 00697 return; 00698 00699 // 00700 // Integer register A0. 00701 // 00702 00703 case 16: 00704 TrapFrame->IntA0 = Value; 00705 return; 00706 00707 // 00708 // Integer register A1. 00709 // 00710 00711 case 17: 00712 TrapFrame->IntA1 = Value; 00713 return; 00714 00715 // 00716 // Integer register A2. 00717 // 00718 00719 case 18: 00720 TrapFrame->IntA2 = Value; 00721 return; 00722 00723 // 00724 // Integer register A3. 00725 // 00726 00727 case 19: 00728 TrapFrame->IntA3 = Value; 00729 return; 00730 00731 // 00732 // Integer register A4. 00733 // 00734 00735 case 20: 00736 TrapFrame->IntA4 = Value; 00737 return; 00738 00739 // 00740 // Integer register A5. 00741 // 00742 00743 case 21: 00744 TrapFrame->IntA5 = Value; 00745 return; 00746 00747 // 00748 // Integer register T8. 00749 // 00750 00751 case 22: 00752 TrapFrame->IntT8 = Value; 00753 return; 00754 00755 // 00756 // Integer register T9. 00757 // 00758 00759 case 23: 00760 TrapFrame->IntT9 = Value; 00761 return; 00762 00763 // 00764 // Integer register T10. 00765 // 00766 00767 case 24: 00768 TrapFrame->IntT10 = Value; 00769 return; 00770 00771 // 00772 // Integer register T11. 00773 // 00774 00775 case 25: 00776 TrapFrame->IntT11 = Value; 00777 return; 00778 00779 // 00780 // Integer register Ra. 00781 // 00782 00783 case 26: 00784 TrapFrame->IntRa = Value; 00785 return; 00786 00787 // 00788 // Integer register T12. 00789 // 00790 00791 case 27: 00792 TrapFrame->IntT12 = Value; 00793 return; 00794 00795 // 00796 // Integer register At. 00797 // 00798 00799 case 28: 00800 TrapFrame->IntAt = Value; 00801 return; 00802 00803 // 00804 // Integer register Gp. 00805 // 00806 00807 case 29: 00808 TrapFrame->IntGp = Value; 00809 return; 00810 00811 // 00812 // Integer register Sp. 00813 // 00814 00815 case 30: 00816 TrapFrame->IntSp = Value; 00817 return; 00818 00819 // 00820 // Integer register Zero. 00821 // 00822 00823 case 31: 00824 return; 00825 00826 // 00827 // Floating register F0. 00828 // 00829 00830 case 32: 00831 TrapFrame->FltF0 = Value; 00832 return; 00833 00834 // 00835 // Floating register F1. 00836 // 00837 00838 case 33: 00839 TrapFrame->FltF1 = Value; 00840 return; 00841 00842 // 00843 // Floating register F2. 00844 // 00845 00846 case 34: 00847 ExceptionFrame->FltF2 = Value; 00848 return; 00849 00850 // 00851 // Floating register F3. 00852 // 00853 00854 case 35: 00855 ExceptionFrame->FltF3 = Value; 00856 return; 00857 00858 // 00859 // Floating register F4. 00860 // 00861 00862 case 36: 00863 ExceptionFrame->FltF4 = Value; 00864 return; 00865 00866 // 00867 // Floating register F5. 00868 // 00869 00870 case 37: 00871 ExceptionFrame->FltF5 = Value; 00872 return; 00873 00874 // 00875 // Floating register F6. 00876 // 00877 00878 case 38: 00879 ExceptionFrame->FltF6 = Value; 00880 return; 00881 00882 // 00883 // Floating register F7. 00884 // 00885 00886 case 39: 00887 ExceptionFrame->FltF7 = Value; 00888 return; 00889 00890 // 00891 // Floating register F8. 00892 // 00893 00894 case 40: 00895 ExceptionFrame->FltF8 = Value; 00896 return; 00897 00898 // 00899 // Floating register F9. 00900 // 00901 00902 case 41: 00903 ExceptionFrame->FltF9 = Value; 00904 return; 00905 00906 // 00907 // Floating register F10. 00908 // 00909 00910 case 42: 00911 TrapFrame->FltF10 = Value; 00912 return; 00913 00914 // 00915 // Floating register F11. 00916 // 00917 00918 case 43: 00919 TrapFrame->FltF11 = Value; 00920 return; 00921 00922 // 00923 // Floating register F12. 00924 // 00925 00926 case 44: 00927 TrapFrame->FltF12 = Value; 00928 return; 00929 00930 // 00931 // Floating register F13. 00932 // 00933 00934 case 45: 00935 TrapFrame->FltF13 = Value; 00936 return; 00937 00938 // 00939 // Floating register F14. 00940 // 00941 00942 case 46: 00943 TrapFrame->FltF14 = Value; 00944 return; 00945 00946 // 00947 // Floating register F15. 00948 // 00949 00950 case 47: 00951 TrapFrame->FltF15 = Value; 00952 return; 00953 00954 // 00955 // Floating register F16. 00956 // 00957 00958 case 48: 00959 TrapFrame->FltF16 = Value; 00960 return; 00961 00962 // 00963 // Floating register F17. 00964 // 00965 00966 case 49: 00967 TrapFrame->FltF17 = Value; 00968 return; 00969 00970 // 00971 // Floating register F18. 00972 // 00973 00974 case 50: 00975 TrapFrame->FltF18 = Value; 00976 return; 00977 00978 // 00979 // Floating register F19. 00980 // 00981 00982 case 51: 00983 TrapFrame->FltF19 = Value; 00984 return; 00985 00986 // 00987 // Floating register F20. 00988 // 00989 00990 case 52: 00991 TrapFrame->FltF20 = Value; 00992 return; 00993 00994 // 00995 // Floating register F21. 00996 // 00997 00998 case 53: 00999 TrapFrame->FltF21 = Value; 01000 return; 01001 01002 // 01003 // Floating register F22. 01004 // 01005 01006 case 54: 01007 TrapFrame->FltF22 = Value; 01008 return; 01009 01010 // 01011 // Floating register F23. 01012 // 01013 01014 case 55: 01015 TrapFrame->FltF23 = Value; 01016 return; 01017 01018 // 01019 // Floating register F24. 01020 // 01021 01022 case 56: 01023 TrapFrame->FltF24 = Value; 01024 return; 01025 01026 // 01027 // Floating register F25. 01028 // 01029 01030 case 57: 01031 TrapFrame->FltF25 = Value; 01032 return; 01033 01034 // 01035 // Floating register F26. 01036 // 01037 01038 case 58: 01039 TrapFrame->FltF26 = Value; 01040 return; 01041 01042 // 01043 // Floating register F27. 01044 // 01045 01046 case 59: 01047 TrapFrame->FltF27 = Value; 01048 return; 01049 01050 // 01051 // Floating register F28. 01052 // 01053 01054 case 60: 01055 TrapFrame->FltF28 = Value; 01056 return; 01057 01058 // 01059 // Floating register F29. 01060 // 01061 01062 case 61: 01063 TrapFrame->FltF29 = Value; 01064 return; 01065 01066 // 01067 // Floating register F30. 01068 // 01069 01070 case 62: 01071 TrapFrame->FltF30 = Value; 01072 return; 01073 01074 // 01075 // Floating register F31 (Zero). 01076 // 01077 01078 case 63: 01079 return; 01080 } 01081 } }


Generated on Sat May 15 19:43:54 2004 for test by doxygen 1.3.7