Minor memory optimisations.
This commit is contained in:
parent
a66dddfb43
commit
9ba75bd910
5 changed files with 46 additions and 90 deletions
18
src/808x.c
18
src/808x.c
|
|
@ -43,20 +43,20 @@ uint8_t readmemb(uint32_t a)
|
|||
{
|
||||
if (a!=(cs+pc)) memcycs+=4;
|
||||
if (readlookup2[(a)>>12]==0xFFFFFFFF) return readmembl(a);
|
||||
else return ram[readlookup2[(a)>>12]+((a)&0xFFF)];
|
||||
else return *(uint8_t *)(readlookup2[(a) >> 12] + (a));
|
||||
}
|
||||
|
||||
uint8_t readmembf(uint32_t a)
|
||||
{
|
||||
if (readlookup2[(a)>>12]==0xFFFFFFFF) return readmembl(a);
|
||||
else return ram[readlookup2[(a)>>12]+((a)&0xFFF)];
|
||||
else return *(uint8_t *)(readlookup2[(a) >> 12] + (a));
|
||||
}
|
||||
|
||||
uint16_t readmemw(uint32_t s, uint16_t a)
|
||||
{
|
||||
if (a!=(cs+pc)) memcycs+=(8>>is8086);
|
||||
if ((readlookup2[((s)+(a))>>12]==0xFFFFFFFF || (s)==0xFFFFFFFF)) return readmemwl(s,a);
|
||||
else return *((uint16_t *)(&ram[readlookup2[((s)+(a))>>12]+(((s)+(a))&0xFFF)]));
|
||||
else return *(uint16_t *)(readlookup2[(s + a) >> 12] + s + a);
|
||||
}
|
||||
|
||||
void refreshread() { /*pclog("Refreshread\n"); */FETCHCOMPLETE(); memcycs+=4; }
|
||||
|
|
@ -73,20 +73,20 @@ void writememb(uint32_t a, uint8_t v)
|
|||
{
|
||||
memcycs+=4;
|
||||
if (writelookup2[(a)>>12]==0xFFFFFFFF) writemembl(a,v);
|
||||
else ram[writelookup2[(a)>>12]+((a)&0xFFF)]=v;
|
||||
else *(uint8_t *)(writelookup2[a >> 12] + a) = v;
|
||||
}
|
||||
void writememwl(uint32_t seg, uint32_t addr, uint16_t val);
|
||||
void writememw(uint32_t s, uint32_t a, uint16_t v)
|
||||
{
|
||||
memcycs+=(8>>is8086);
|
||||
if (writelookup2[((s)+(a))>>12]==0xFFFFFFFF || (s)==0xFFFFFFFF) writememwl(s,a,v);
|
||||
else *((uint16_t *)(&ram[writelookup2[((s)+(a))>>12]+(((s)+(a))&0xFFF)]))=v;
|
||||
else *(uint16_t *)(writelookup2[(s + a) >> 12] + s + a) = v;
|
||||
}
|
||||
void writememll(uint32_t seg, uint32_t addr, uint32_t val);
|
||||
void writememl(uint32_t s, uint32_t a, uint32_t v)
|
||||
{
|
||||
if (writelookup2[((s)+(a))>>12]==0xFFFFFFFF || (s)==0xFFFFFFFF) writememll(s,a,v);
|
||||
else *((uint32_t *)(&ram[writelookup2[((s)+(a))>>12]+(((s)+(a))&0xFFF)]))=v;
|
||||
else *(uint32_t *)(writelookup2[(s + a) >> 12] + s + a) = v;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -614,11 +614,6 @@ chdir(pcempath);
|
|||
}
|
||||
printf("Entries in readlookup : %i writelookup : %i\n",d,e);
|
||||
x87_dumpregs();
|
||||
/* for (c=0;c<1024*1024;c++)
|
||||
{
|
||||
if (mmucache[c]!=0xFFFFFFFF) d++;
|
||||
}
|
||||
printf("Entries in MMU cache : %i\n",d);*/
|
||||
indump = 0;
|
||||
}
|
||||
|
||||
|
|
@ -642,7 +637,6 @@ void resetx86()
|
|||
idt.base = 0;
|
||||
flags=2;
|
||||
makeznptable();
|
||||
initmmucache();
|
||||
resetreadlookup();
|
||||
makemod1table();
|
||||
resetmcr();
|
||||
|
|
|
|||
Loading…
Reference in a new issue