]> git.zerfleddert.de Git - linexec-j720/blobdiff - memory.cpp
no longer use deprecated ATAG_INITRD
[linexec-j720] / memory.cpp
index 96ff4331e54860dddb166344b8b2bda56931cf29..563e6ade3c7396d3b1f5ff5f459812ae61051963 100644 (file)
-#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;
+}
Impressum, Datenschutz