home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 13 / MA_Cover_13.bin / source / c / stefanb_src / private_projects / mmureset / readmmu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-06  |  1.8 KB  |  66 lines

  1. void ReadMMU(void);
  2.  
  3. /* MMU Register */
  4. struct RootPointer {
  5.                     unsigned long l1;
  6.                     unsigned long l2;
  7.                    } crp,srp;
  8. unsigned long tc/*,tt0,tt1*/;
  9. /*unsigned short mmusr;*/
  10.  
  11. void main(void)
  12. {
  13.  printf("ReadMMU V0.01\n");
  14.  ReadMMU();
  15.  printf("\nMMU Registers:\n");
  16.  printf("CRP: %08lx %08lx\n",crp.l1,crp.l2);
  17.  printf("SRP: %08lx %08lx\n",srp.l1,srp.l2);
  18.  printf("TC : %08lx\n",tc);
  19.  
  20.  printf("Translation ");
  21.  if (tc&0x80000000L) printf("enabled");
  22.  else printf("disabled");
  23.  printf("\nSupervisor Root Pointer ");
  24.  if (tc&0x02000000L) printf("enabled");
  25.  else printf("disabled");
  26.  printf("\nFunction Code Lookup ");
  27.  if (tc&0x01000000L) printf("enabled");
  28.  else printf("disabled");
  29.  printf("\nPage Size: %5d Bytes\n",256<<((tc&0x00700000L)>>20));
  30.  printf("Initial Shift: %1lx\n",(tc&0x000F0000L)>>16);
  31.  printf("Table Index A: %1lx\n",(tc&0x0000F000L)>>12);
  32.  printf("Table Index B: %1lx\n",(tc&0x00000F00L)>>8);
  33.  printf("Table Index C: %1lx\n",(tc&0x000000F0L)>>4);
  34.  printf("Table Index D: %1lx\n",tc&0x0000000FL);
  35. }
  36.  
  37. void ReadMMU(void)
  38. {
  39. #asm
  40.          machine  mc68020
  41.          mc68851
  42.          xref     _LVODisable,_LVOEnable
  43.          xref     _LVOSuperState
  44.          xref     _LVOUserState
  45.  
  46. Start:   movem.l  d0-d7/a0-a6,-(a7)
  47.          move.l   $4,a6
  48.          jsr      _LVODisable(a6)      ; Disable interrupts
  49.          jsr      _LVOSuperState(a6)   ; go to supervisor mode
  50.          move.l   d0,d7
  51. MagicCode:
  52.          ; MMURegister -> C variables
  53.          pmove    crp,_crp
  54.          pmove    srp,_srp
  55.          pmove    tc,_tc
  56. ;         pmove    tt0,_tt0
  57. ;         pmove    tt1,_tt1
  58. ;         pmove     mmusr,mmusr
  59.  
  60.          move.l   d7,d0                ; go to user mode
  61.          jsr      _LVOUserState(a6)
  62.          jsr      _LVOEnable(a6)       ; Enable interrrupts
  63. End:     movem.l  (a7)+,d0-d7/a0-a6
  64. #endasm
  65. }
  66.