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

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


Function Documentation

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

Definition at line 30 of file mips/getsetrg.c.

00038 : 00039 00040 This function is called to get the 32-bit value of a register from the 00041 specified exception or trap frame. 00042 00043 Arguments: 00044 00045 Register - Supplies the number of the register whose value is to be 00046 returned. Integer registers are specified as 0 - 31 and floating 00047 registers are specified as 32 - 63. 00048 00049 ExceptionFrame - Supplies a pointer to an exception frame. 00050 00051 TrapFrame - Supplies a pointer to a trap frame. 00052 00053 Return Value: 00054 00055 The value of the specified register is returned as the function value. 00056 00057 --*/ 00058 00059 { 00060 00061 // 00062 // Dispatch on the register number. 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 // Floating register F0. 00076 // 00077 00078 case 32: 00079 return TrapFrame->FltF0; 00080 00081 // 00082 // Floating register F1. 00083 // 00084 00085 case 33: 00086 return TrapFrame->FltF1; 00087 00088 // 00089 // Floating register F2. 00090 // 00091 00092 case 34: 00093 return TrapFrame->FltF2; 00094 00095 // 00096 // Floating register F3. 00097 // 00098 00099 case 35: 00100 return TrapFrame->FltF3; 00101 00102 // 00103 // Floating register F4. 00104 // 00105 00106 case 36: 00107 return TrapFrame->FltF4; 00108 00109 // 00110 // Floating register F5. 00111 // 00112 00113 case 37: 00114 return TrapFrame->FltF5; 00115 00116 // 00117 // Floating register F6. 00118 // 00119 00120 case 38: 00121 return TrapFrame->FltF6; 00122 00123 // 00124 // Floating register F7. 00125 // 00126 00127 case 39: 00128 return TrapFrame->FltF7; 00129 00130 // 00131 // Floating register F8. 00132 // 00133 00134 case 40: 00135 return TrapFrame->FltF8; 00136 00137 // 00138 // Floating register F9. 00139 // 00140 00141 case 41: 00142 return TrapFrame->FltF9; 00143 00144 // 00145 // Floating register F10. 00146 // 00147 00148 case 42: 00149 return TrapFrame->FltF10; 00150 00151 // 00152 // Floating register F11. 00153 // 00154 00155 case 43: 00156 return TrapFrame->FltF11; 00157 00158 // 00159 // Floating register F12. 00160 // 00161 00162 case 44: 00163 return TrapFrame->FltF12; 00164 00165 // 00166 // Floating register F13. 00167 // 00168 00169 case 45: 00170 return TrapFrame->FltF13; 00171 00172 // 00173 // Floating register F14. 00174 // 00175 00176 case 46: 00177 return TrapFrame->FltF14; 00178 00179 // 00180 // Floating register F15. 00181 // 00182 00183 case 47: 00184 return TrapFrame->FltF15; 00185 00186 // 00187 // Floating register F16. 00188 // 00189 00190 case 48: 00191 return TrapFrame->FltF16; 00192 00193 // 00194 // Floating register F17. 00195 // 00196 00197 case 49: 00198 return TrapFrame->FltF17; 00199 00200 // 00201 // Floating register F18. 00202 // 00203 00204 case 50: 00205 return TrapFrame->FltF18; 00206 00207 // 00208 // Floating register F19. 00209 // 00210 00211 case 51: 00212 return TrapFrame->FltF19; 00213 00214 // 00215 // Floating register F20. 00216 // 00217 00218 case 52: 00219 return ExceptionFrame->FltF20; 00220 00221 // 00222 // Floating register F21. 00223 // 00224 00225 case 53: 00226 return ExceptionFrame->FltF21; 00227 00228 // 00229 // Floating register F22. 00230 // 00231 00232 case 54: 00233 return ExceptionFrame->FltF22; 00234 00235 // 00236 // Floating register F23. 00237 // 00238 00239 case 55: 00240 return ExceptionFrame->FltF23; 00241 00242 // 00243 // Floating register F24. 00244 // 00245 00246 case 56: 00247 return ExceptionFrame->FltF24; 00248 00249 // 00250 // Floating register F25. 00251 // 00252 00253 case 57: 00254 return ExceptionFrame->FltF25; 00255 00256 // 00257 // Floating register F26. 00258 // 00259 00260 case 58: 00261 return ExceptionFrame->FltF26; 00262 00263 // 00264 // Floating register F27. 00265 // 00266 00267 case 59: 00268 return ExceptionFrame->FltF27; 00269 00270 // 00271 // Floating register F28. 00272 // 00273 00274 case 60: 00275 return ExceptionFrame->FltF28; 00276 00277 // 00278 // Floating register F29. 00279 // 00280 00281 case 61: 00282 return ExceptionFrame->FltF29; 00283 00284 // 00285 // Floating register F30. 00286 // 00287 00288 case 62: 00289 return ExceptionFrame->FltF30; 00290 00291 // 00292 // Floating register F31. 00293 // 00294 00295 case 63: 00296 return ExceptionFrame->FltF31; 00297 } 00298 } 00299 }

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

Definition at line 302 of file mips/getsetrg.c.

Referenced by KiEmulateReference().

00310 : 00311 00312 This function is called to get the 64-bit value of a register from the 00313 specified exception or trap frame. 00314 00315 Arguments: 00316 00317 Register - Supplies the number of the register whose value is to be 00318 returned. Integer registers are specified as 0 - 31 and floating 00319 registers are specified as 32 - 63. 00320 00321 ExceptionFrame - Supplies a pointer to an exception frame. 00322 00323 TrapFrame - Supplies a pointer to a trap frame. 00324 00325 Return Value: 00326 00327 The value of the specified register is returned as the function value. 00328 00329 --*/ 00330 00331 { 00332 00333 // 00334 // Dispatch on the register number. 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 // Floating register F0. 00348 // 00349 00350 case 32: 00351 return TrapFrame->XFltF0; 00352 00353 // 00354 // Floating register F1. 00355 // 00356 00357 case 33: 00358 return TrapFrame->XFltF1; 00359 00360 // 00361 // Floating register F2. 00362 // 00363 00364 case 34: 00365 return TrapFrame->XFltF2; 00366 00367 // 00368 // Floating register F3. 00369 // 00370 00371 case 35: 00372 return TrapFrame->XFltF3; 00373 00374 // 00375 // Floating register F4. 00376 // 00377 00378 case 36: 00379 return TrapFrame->XFltF4; 00380 00381 // 00382 // Floating register F5. 00383 // 00384 00385 case 37: 00386 return TrapFrame->XFltF5; 00387 00388 // 00389 // Floating register F6. 00390 // 00391 00392 case 38: 00393 return TrapFrame->XFltF6; 00394 00395 // 00396 // Floating register F7. 00397 // 00398 00399 case 39: 00400 return TrapFrame->XFltF7; 00401 00402 // 00403 // Floating register F8. 00404 // 00405 00406 case 40: 00407 return TrapFrame->XFltF8; 00408 00409 // 00410 // Floating register F9. 00411 // 00412 00413 case 41: 00414 return TrapFrame->XFltF9; 00415 00416 // 00417 // Floating register F10. 00418 // 00419 00420 case 42: 00421 return TrapFrame->XFltF10; 00422 00423 // 00424 // Floating register F11. 00425 // 00426 00427 case 43: 00428 return TrapFrame->XFltF11; 00429 00430 // 00431 // Floating register F12. 00432 // 00433 00434 case 44: 00435 return TrapFrame->XFltF12; 00436 00437 // 00438 // Floating register F13. 00439 // 00440 00441 case 45: 00442 return TrapFrame->XFltF13; 00443 00444 // 00445 // Floating register F14. 00446 // 00447 00448 case 46: 00449 return TrapFrame->XFltF14; 00450 00451 // 00452 // Floating register F15. 00453 // 00454 00455 case 47: 00456 return TrapFrame->XFltF15; 00457 00458 // 00459 // Floating register F16. 00460 // 00461 00462 case 48: 00463 return TrapFrame->XFltF16; 00464 00465 // 00466 // Floating register F17. 00467 // 00468 00469 case 49: 00470 return TrapFrame->XFltF17; 00471 00472 // 00473 // Floating register F18. 00474 // 00475 00476 case 50: 00477 return TrapFrame->XFltF18; 00478 00479 // 00480 // Floating register F19. 00481 // 00482 00483 case 51: 00484 return TrapFrame->XFltF19; 00485 00486 // 00487 // Floating register F20. 00488 // 00489 00490 case 52: 00491 return ExceptionFrame->XFltF20; 00492 00493 // 00494 // Floating register F21. 00495 // 00496 00497 case 53: 00498 return TrapFrame->XFltF21; 00499 00500 // 00501 // Floating register F22. 00502 // 00503 00504 case 54: 00505 return ExceptionFrame->XFltF22; 00506 00507 // 00508 // Floating register F23. 00509 // 00510 00511 case 55: 00512 return TrapFrame->XFltF23; 00513 00514 // 00515 // Floating register F24. 00516 // 00517 00518 case 56: 00519 return ExceptionFrame->XFltF24; 00520 00521 // 00522 // Floating register F25. 00523 // 00524 00525 case 57: 00526 return TrapFrame->XFltF25; 00527 00528 // 00529 // Floating register F26. 00530 // 00531 00532 case 58: 00533 return ExceptionFrame->XFltF26; 00534 00535 // 00536 // Floating register F27. 00537 // 00538 00539 case 59: 00540 return TrapFrame->XFltF27; 00541 00542 // 00543 // Floating register F28. 00544 // 00545 00546 case 60: 00547 return ExceptionFrame->XFltF28; 00548 00549 // 00550 // Floating register F29. 00551 // 00552 00553 case 61: 00554 return TrapFrame->XFltF29; 00555 00556 // 00557 // Floating register F30. 00558 // 00559 00560 case 62: 00561 return ExceptionFrame->XFltF30; 00562 00563 // 00564 // Floating register F31. 00565 // 00566 00567 case 63: 00568 return TrapFrame->XFltF31; 00569 } 00570 } 00571 }

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

Definition at line 574 of file mips/getsetrg.c.

00583 : 00584 00585 This function is called to set the 32-bit value of a register in the 00586 specified exception or trap frame. 00587 00588 Arguments: 00589 00590 Register - Supplies the number of the register whose value is to be 00591 stored. Integer registers are specified as 0 - 31 and floating 00592 registers are specified as 32 - 63. 00593 00594 Value - Supplies the value to be stored in the specified register. 00595 00596 ExceptionFrame - Supplies a pointer to an exception frame. 00597 00598 TrapFrame - Supplies a pointer to a trap frame. 00599 00600 Return Value: 00601 00602 None. 00603 00604 --*/ 00605 00606 { 00607 00608 // 00609 // Dispatch on the register number. 00610 // 00611 00612 if (Register < 32) { 00613 (&TrapFrame->XIntZero)[Register] = (LONG)Value; 00614 00615 } else { 00616 switch (Register) { 00617 00618 // 00619 // Floating register F0. 00620 // 00621 00622 case 32: 00623 TrapFrame->FltF0 = Value; 00624 return; 00625 00626 // 00627 // Floating register F1. 00628 // 00629 00630 case 33: 00631 TrapFrame->FltF1 = Value; 00632 return; 00633 00634 // 00635 // Floating register F2. 00636 // 00637 00638 case 34: 00639 TrapFrame->FltF2 = Value; 00640 return; 00641 00642 // 00643 // Floating register F3. 00644 // 00645 00646 case 35: 00647 TrapFrame->FltF3 = Value; 00648 return; 00649 00650 // 00651 // Floating register F4. 00652 // 00653 00654 case 36: 00655 TrapFrame->FltF4 = Value; 00656 return; 00657 00658 // 00659 // Floating register F5. 00660 // 00661 00662 case 37: 00663 TrapFrame->FltF5 = Value; 00664 return; 00665 00666 // 00667 // Floating register F6. 00668 // 00669 00670 case 38: 00671 TrapFrame->FltF6 = Value; 00672 return; 00673 00674 // 00675 // Floating register F7. 00676 // 00677 00678 case 39: 00679 TrapFrame->FltF7 = Value; 00680 return; 00681 00682 // 00683 // Floating register F8. 00684 // 00685 00686 case 40: 00687 TrapFrame->FltF8 = Value; 00688 return; 00689 00690 // 00691 // Floating register F9. 00692 // 00693 00694 case 41: 00695 TrapFrame->FltF9 = Value; 00696 return; 00697 00698 // 00699 // Floating register F10. 00700 // 00701 00702 case 42: 00703 TrapFrame->FltF10 = Value; 00704 return; 00705 00706 // 00707 // Floating register F11. 00708 // 00709 00710 case 43: 00711 TrapFrame->FltF11 = Value; 00712 return; 00713 00714 // 00715 // Floating register F12. 00716 // 00717 00718 case 44: 00719 TrapFrame->FltF12 = Value; 00720 return; 00721 00722 // 00723 // Floating register F13. 00724 // 00725 00726 case 45: 00727 TrapFrame->FltF13 = Value; 00728 return; 00729 00730 // 00731 // Floating register F14. 00732 // 00733 00734 case 46: 00735 TrapFrame->FltF14 = Value; 00736 return; 00737 00738 // 00739 // Floating register F15. 00740 // 00741 00742 case 47: 00743 TrapFrame->FltF15 = Value; 00744 return; 00745 00746 // 00747 // Floating register F16. 00748 // 00749 00750 case 48: 00751 TrapFrame->FltF16 = Value; 00752 return; 00753 00754 // 00755 // Floating register F17. 00756 // 00757 00758 case 49: 00759 TrapFrame->FltF17 = Value; 00760 return; 00761 00762 // 00763 // Floating register F18. 00764 // 00765 00766 case 50: 00767 TrapFrame->FltF18 = Value; 00768 return; 00769 00770 // 00771 // Floating register F19. 00772 // 00773 00774 case 51: 00775 TrapFrame->FltF19 = Value; 00776 return; 00777 00778 // 00779 // Floating register F20. 00780 // 00781 00782 case 52: 00783 ExceptionFrame->FltF20 = Value; 00784 return; 00785 00786 // 00787 // Floating register F21. 00788 // 00789 00790 case 53: 00791 ExceptionFrame->FltF21 = Value; 00792 return; 00793 00794 // 00795 // Floating register F22. 00796 // 00797 00798 case 54: 00799 ExceptionFrame->FltF22 = Value; 00800 return; 00801 00802 // 00803 // Floating register F23. 00804 // 00805 00806 case 55: 00807 ExceptionFrame->FltF23 = Value; 00808 return; 00809 00810 // 00811 // Floating register F24. 00812 // 00813 00814 case 56: 00815 ExceptionFrame->FltF24 = Value; 00816 return; 00817 00818 // 00819 // Floating register F25. 00820 // 00821 00822 case 57: 00823 ExceptionFrame->FltF25 = Value; 00824 return; 00825 00826 // 00827 // Floating register F26. 00828 // 00829 00830 case 58: 00831 ExceptionFrame->FltF26 = Value; 00832 return; 00833 00834 // 00835 // Floating register F27. 00836 // 00837 00838 case 59: 00839 ExceptionFrame->FltF27 = Value; 00840 return; 00841 00842 // 00843 // Floating register F28. 00844 // 00845 00846 case 60: 00847 ExceptionFrame->FltF28 = Value; 00848 return; 00849 00850 // 00851 // Floating register F29. 00852 // 00853 00854 case 61: 00855 ExceptionFrame->FltF29 = Value; 00856 return; 00857 00858 // 00859 // Floating register F30. 00860 // 00861 00862 case 62: 00863 ExceptionFrame->FltF30 = Value; 00864 return; 00865 00866 // 00867 // Floating register F31. 00868 // 00869 00870 case 63: 00871 ExceptionFrame->FltF31 = Value; 00872 return; 00873 } 00874 } 00875 }

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

Definition at line 878 of file mips/getsetrg.c.

Referenced by KiEmulateReference().

00887 : 00888 00889 This function is called to set the 64-bit value of a register in the 00890 specified exception or trap frame. 00891 00892 Arguments: 00893 00894 Register - Supplies the number of the register whose value is to be 00895 stored. Integer registers are specified as 0 - 31 and floating 00896 registers are specified as 32 - 63. 00897 00898 Value - Supplies the value to be stored in the specified register. 00899 00900 ExceptionFrame - Supplies a pointer to an exception frame. 00901 00902 TrapFrame - Supplies a pointer to a trap frame. 00903 00904 Return Value: 00905 00906 None. 00907 00908 --*/ 00909 00910 { 00911 00912 // 00913 // Dispatch on the register number. 00914 // 00915 00916 if (Register < 32) { 00917 (&TrapFrame->XIntZero)[Register] = Value; 00918 00919 } else { 00920 switch (Register) { 00921 00922 // 00923 // Floating register F0. 00924 // 00925 00926 case 32: 00927 TrapFrame->XFltF0 = Value; 00928 return; 00929 00930 // 00931 // Floating register F1. 00932 // 00933 00934 case 33: 00935 TrapFrame->XFltF1 = Value; 00936 return; 00937 00938 // 00939 // Floating register F2. 00940 // 00941 00942 case 34: 00943 TrapFrame->XFltF2 = Value; 00944 return; 00945 00946 // 00947 // Floating register F3. 00948 // 00949 00950 case 35: 00951 TrapFrame->XFltF3 = Value; 00952 return; 00953 00954 // 00955 // Floating register F4. 00956 // 00957 00958 case 36: 00959 TrapFrame->XFltF4 = Value; 00960 return; 00961 00962 // 00963 // Floating register F5. 00964 // 00965 00966 case 37: 00967 TrapFrame->XFltF5 = Value; 00968 return; 00969 00970 // 00971 // Floating register F6. 00972 // 00973 00974 case 38: 00975 TrapFrame->XFltF6 = Value; 00976 return; 00977 00978 // 00979 // Floating register F7. 00980 // 00981 00982 case 39: 00983 TrapFrame->XFltF7 = Value; 00984 return; 00985 00986 // 00987 // Floating register F8. 00988 // 00989 00990 case 40: 00991 TrapFrame->XFltF8 = Value; 00992 return; 00993 00994 // 00995 // Floating register F9. 00996 // 00997 00998 case 41: 00999 TrapFrame->XFltF9 = Value; 01000 return; 01001 01002 // 01003 // Floating register F10. 01004 // 01005 01006 case 42: 01007 TrapFrame->XFltF10 = Value; 01008 return; 01009 01010 // 01011 // Floating register F11. 01012 // 01013 01014 case 43: 01015 TrapFrame->XFltF11 = Value; 01016 return; 01017 01018 // 01019 // Floating register F12. 01020 // 01021 01022 case 44: 01023 TrapFrame->XFltF12 = Value; 01024 return; 01025 01026 // 01027 // Floating register F13. 01028 // 01029 01030 case 45: 01031 TrapFrame->XFltF13 = Value; 01032 return; 01033 01034 // 01035 // Floating register F14. 01036 // 01037 01038 case 46: 01039 TrapFrame->XFltF14 = Value; 01040 return; 01041 01042 // 01043 // Floating register F15. 01044 // 01045 01046 case 47: 01047 TrapFrame->XFltF15 = Value; 01048 return; 01049 01050 // 01051 // Floating register F16. 01052 // 01053 01054 case 48: 01055 TrapFrame->XFltF16 = Value; 01056 return; 01057 01058 // 01059 // Floating register F17. 01060 // 01061 01062 case 49: 01063 TrapFrame->XFltF17 = Value; 01064 return; 01065 01066 // 01067 // Floating register F18. 01068 // 01069 01070 case 50: 01071 TrapFrame->XFltF18 = Value; 01072 return; 01073 01074 // 01075 // Floating register F19. 01076 // 01077 01078 case 51: 01079 TrapFrame->XFltF19 = Value; 01080 return; 01081 01082 // 01083 // Floating register F20. 01084 // 01085 01086 case 52: 01087 ExceptionFrame->XFltF20 = Value; 01088 return; 01089 01090 // 01091 // Floating register F21. 01092 // 01093 01094 case 53: 01095 TrapFrame->XFltF21 = Value; 01096 return; 01097 01098 // 01099 // Floating register F22. 01100 // 01101 01102 case 54: 01103 ExceptionFrame->XFltF22 = Value; 01104 return; 01105 01106 // 01107 // Floating register F23. 01108 // 01109 01110 case 55: 01111 TrapFrame->XFltF23 = Value; 01112 return; 01113 01114 // 01115 // Floating register F24. 01116 // 01117 01118 case 56: 01119 ExceptionFrame->XFltF24 = Value; 01120 return; 01121 01122 // 01123 // Floating register F25. 01124 // 01125 01126 case 57: 01127 TrapFrame->XFltF25 = Value; 01128 return; 01129 01130 // 01131 // Floating register F26. 01132 // 01133 01134 case 58: 01135 ExceptionFrame->XFltF26 = Value; 01136 return; 01137 01138 // 01139 // Floating register F27. 01140 // 01141 01142 case 59: 01143 TrapFrame->XFltF27 = Value; 01144 return; 01145 01146 // 01147 // Floating register F28. 01148 // 01149 01150 case 60: 01151 ExceptionFrame->XFltF28 = Value; 01152 return; 01153 01154 // 01155 // Floating register F29. 01156 // 01157 01158 case 61: 01159 TrapFrame->XFltF29 = Value; 01160 return; 01161 01162 // 01163 // Floating register F30. 01164 // 01165 01166 case 62: 01167 ExceptionFrame->XFltF30 = Value; 01168 return; 01169 01170 // 01171 // Floating register F31. 01172 // 01173 01174 case 63: 01175 TrapFrame->XFltF31 = Value; 01176 return; 01177 } 01178 } 01179 } }


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