-#include "stdafx.h"\r
-#include "tester1.h"\r
-#include <commctrl.h>\r
-//#include <aygshell.h>\r
-#include <sipapi.h>\r
-#include "setup.h"\r
-\r
-UINT32 ReadPhysical(UINT32 adr)\r
-{\r
- UINT32 base= adr&0xffff0000;\r
- UINT32 offset=adr&0x0000ffff;\r
- UINT32 *p=(UINT32*)VirtualAlloc(0,0x10000,MEM_RESERVE,PAGE_READWRITE);\r
- if(!p) return 0xFFFFFFFF;\r
- if(!VirtualCopy((void*)p,(void*)(base/256),0x10000,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL)) return 0xFFFFFFFF;\r
- UINT32 val=p[offset/4];\r
- VirtualFree(p,0,MEM_RELEASE);\r
- return val;\r
-}\r
-\r
-void WritePhysical(UINT32 adr,UINT32 val)\r
-{\r
- UINT32 base= adr&0xffff0000;\r
- UINT32 offset=adr&0x0000ffff;\r
- UINT32 *p=(UINT32*)VirtualAlloc(0,0x10000,MEM_RESERVE,PAGE_READWRITE);\r
- VirtualCopy((void*)p,(void*)(base/256),0x10000,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);\r
- p[offset/4]=val;\r
- VirtualFree(p,0,MEM_RELEASE);\r
-}\r
-\r
-UINT32 VirtualToPhysical(UINT32 Virtual)\r
-{\r
- FILE *log=fopen("\\logger1.txt","w");\r
-\r
- fprintf(log,"virtual: 0x%lx\n",Virtual);\r
- UINT32 mmu=(UINT32)read_mmu();\r
-// mmu=0xa0000000;\r
- fprintf(log,"mmu: 0x%lx \n",mmu);\r
-\r
- UINT32 AdrFirstLevDesc=(mmu&0xffffc000)+((Virtual>>18)&0xfffffffc);\r
- fprintf(log,"AdrFirstLevDesc: 0x%lx \n",AdrFirstLevDesc);\r
-\r
- UINT32 FirstLevDesc=ReadPhysical(AdrFirstLevDesc);\r
- fprintf(log,"FirstLevDesc: 0x%lx \n",FirstLevDesc);\r
-\r
- \r
- if(0)\r
- {\r
- fprintf(log,"Page\n");\r
- UINT32 PhysAddr=(FirstLevDesc&0xfff00000)+(Virtual&0xfffff);\r
- fprintf(log,"Physical address: 0x%lx \n",PhysAddr);\r
- fclose(log);\r
- return PhysAddr;\r
- }\r
-\r
- if(FirstLevDesc&0x3==3) // tiny page\r
- {\r
- fprintf(log,"Tiny page\n");\r
- UINT32 AdrSecondLevDesc=(FirstLevDesc&0xfffff000)+((Virtual>>8)&0xffc);\r
- fprintf(log,"AdrSecondLevDesc: 0x%lx \n",AdrSecondLevDesc);\r
-\r
- UINT32 SecondLevDesc=ReadPhysical(AdrSecondLevDesc);\r
- fprintf(log,"SecondLevDesc: 0x%lx \n",SecondLevDesc);\r
- \r
- UINT32 PhysAddr=(SecondLevDesc&0xffffc000)+(Virtual&0x3ff);\r
- fprintf(log,"Physical address: 0x%lx \n",PhysAddr);\r
- fclose(log);\r
- return PhysAddr;\r
- }\r
-// if(FirstLevDesc&0x3==3) // small page\r
- {\r
- fprintf(log,"Else page\n");\r
- UINT32 AdrSecondLevDesc=(FirstLevDesc&0xfffffc00)+((Virtual>>10)&0x03fc);\r
- fprintf(log,"AdrSecondLevDesc: 0x%lx \n",AdrSecondLevDesc);\r
-\r
- UINT32 SecondLevDesc=ReadPhysical(AdrSecondLevDesc);\r
- fprintf(log,"SecondLevDesc: 0x%lx \n",SecondLevDesc);\r
-\r
- UINT32 PhysAddr=(SecondLevDesc&0xffff0000)+(Virtual&0xffff);\r
- fprintf(log,"Physical address: 0x%lx \n",PhysAddr);\r
- fclose(log);\r
- return PhysAddr;\r
-\r
- }\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r
-void DumpMMU()\r
-{\r
- void *mmu=(void*)(MEM_START);\r
-\r
- UINT32 *_mmu=(UINT32*)VirtualAlloc((void*)0x0,sizeof(void*)*0xffff, MEM_RESERVE,PAGE_READWRITE);\r
- int ret=VirtualCopy(_mmu,(void *) ((UINT32)mmu/256),sizeof(void*)*0xffff , PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);\r
-\r
- FILE *log=fopen("\\logger2.txt","w");\r
- fprintf(log,"mmu_table=0x%lx : \n",_mmu);\r
- fprintf(log,"mmu=0x%lx : \n",mmu);\r
- fprintf(log,"ret=0x%x : \n",ret);\r
- for(UINT32 z=0;z<=0x0100;z++)\r
- fprintf(log,"mmu_table[0x%x]=0x%lx: \n",z,_mmu[z]);\r
- fclose(log);\r
- return;\r
-}\r
+#include "stdafx.h"
+#include "tester1.h"
+#include <commctrl.h>
+//#include <aygshell.h>
+#include <sipapi.h>
+#include "setup.h"
+
+UINT32 ReadPhysical(UINT32 adr)
+{
+ UINT32 base= adr&0xffff0000;
+ UINT32 offset=adr&0x0000ffff;
+ UINT32 *p=(UINT32*)VirtualAlloc(0,0x10000,MEM_RESERVE,PAGE_READWRITE);
+ if(!p) return 0xFFFFFFFF;
+ if(!VirtualCopy((void*)p,(void*)(base/256),0x10000,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL)) return 0xFFFFFFFF;
+ UINT32 val=p[offset/4];
+ VirtualFree(p,0,MEM_RELEASE);
+ return val;
+}
+
+void WritePhysical(UINT32 adr,UINT32 val)
+{
+ UINT32 base= adr&0xffff0000;
+ UINT32 offset=adr&0x0000ffff;
+ UINT32 *p=(UINT32*)VirtualAlloc(0,0x10000,MEM_RESERVE,PAGE_READWRITE);
+ VirtualCopy((void*)p,(void*)(base/256),0x10000,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
+ p[offset/4]=val;
+ VirtualFree(p,0,MEM_RELEASE);
+}
+
+UINT32 VirtualToPhysical(UINT32 Virtual)
+{
+ FILE *log=fopen("\\logger1.txt","w");
+
+ fprintf(log,"virtual: 0x%lx\n",Virtual);
+ UINT32 mmu=(UINT32)read_mmu();
+// mmu=0xa0000000;
+ fprintf(log,"mmu: 0x%lx \n",mmu);
+
+ UINT32 AdrFirstLevDesc=(mmu&0xffffc000)+((Virtual>>18)&0xfffffffc);
+ fprintf(log,"AdrFirstLevDesc: 0x%lx \n",AdrFirstLevDesc);
+
+ UINT32 FirstLevDesc=ReadPhysical(AdrFirstLevDesc);
+ fprintf(log,"FirstLevDesc: 0x%lx \n",FirstLevDesc);
+
+
+ if(0)
+ {
+ fprintf(log,"Page\n");
+ UINT32 PhysAddr=(FirstLevDesc&0xfff00000)+(Virtual&0xfffff);
+ fprintf(log,"Physical address: 0x%lx \n",PhysAddr);
+ fclose(log);
+ return PhysAddr;
+ }
+
+ if(FirstLevDesc&0x3==3) // tiny page
+ {
+ fprintf(log,"Tiny page\n");
+ UINT32 AdrSecondLevDesc=(FirstLevDesc&0xfffff000)+((Virtual>>8)&0xffc);
+ fprintf(log,"AdrSecondLevDesc: 0x%lx \n",AdrSecondLevDesc);
+
+ UINT32 SecondLevDesc=ReadPhysical(AdrSecondLevDesc);
+ fprintf(log,"SecondLevDesc: 0x%lx \n",SecondLevDesc);
+
+ UINT32 PhysAddr=(SecondLevDesc&0xffffc000)+(Virtual&0x3ff);
+ fprintf(log,"Physical address: 0x%lx \n",PhysAddr);
+ fclose(log);
+ return PhysAddr;
+ }
+// if(FirstLevDesc&0x3==3) // small page
+ {
+ fprintf(log,"Else page\n");
+ UINT32 AdrSecondLevDesc=(FirstLevDesc&0xfffffc00)+((Virtual>>10)&0x03fc);
+ fprintf(log,"AdrSecondLevDesc: 0x%lx \n",AdrSecondLevDesc);
+
+ UINT32 SecondLevDesc=ReadPhysical(AdrSecondLevDesc);
+ fprintf(log,"SecondLevDesc: 0x%lx \n",SecondLevDesc);
+
+ UINT32 PhysAddr=(SecondLevDesc&0xffff0000)+(Virtual&0xffff);
+ fprintf(log,"Physical address: 0x%lx \n",PhysAddr);
+ fclose(log);
+ return PhysAddr;
+
+ }
+}
+
+
+
+
+
+
+void DumpMMU()
+{
+ void *mmu=(void*)(MEM_START);
+
+ UINT32 *_mmu=(UINT32*)VirtualAlloc((void*)0x0,sizeof(void*)*0xffff, MEM_RESERVE,PAGE_READWRITE);
+ int ret=VirtualCopy(_mmu,(void *) ((UINT32)mmu/256),sizeof(void*)*0xffff , PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
+
+ FILE *log=fopen("\\logger2.txt","w");
+ fprintf(log,"mmu_table=0x%lx : \n",_mmu);
+ fprintf(log,"mmu=0x%lx : \n",mmu);
+ fprintf(log,"ret=0x%x : \n",ret);
+ for(UINT32 z=0;z<=0x0100;z++)
+ fprintf(log,"mmu_table[0x%x]=0x%lx: \n",z,_mmu[z]);
+ fclose(log);
+ return;
+}