notaz.gp2x.de
/
fceu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mmuhack, 6502 tweaks, fskip
[fceu.git]
/
memory.c
diff --git
a/memory.c
b/memory.c
index
bec7270
..
8fb701d
100644
(file)
--- a/
memory.c
+++ b/
memory.c
@@
-40,6
+40,8
@@
void FCEU_free(void *ptr) // Might do something with this and FCEU_malloc later
free(ptr);
}
free(ptr);
}
+
+
void FASTAPASS(3) FCEU_memmove(void *d, void *s, uint32 l)
{
uint32 x;
void FASTAPASS(3) FCEU_memmove(void *d, void *s, uint32 l)
{
uint32 x;
@@
-51,17
+53,32
@@
void FASTAPASS(3) FCEU_memmove(void *d, void *s, uint32 l)
t|=(int)l;
if(t&3) // Not 4-byte aligned and/or length is not a multiple of 4.
t|=(int)l;
if(t&3) // Not 4-byte aligned and/or length is not a multiple of 4.
+ {
+ uint8 *tmpd, *tmps;
+
+ tmpd = d;
+ tmps = s;
+
for(x=l;x;x--) // This could be optimized further, though(more tests could be performed).
{
for(x=l;x;x--) // This could be optimized further, though(more tests could be performed).
{
- *(uint8*)d=*(uint8 *)s;
- ((uint8 *)d)++;
- ((uint8 *)s)++;
+ *tmpd=*tmps;
+ tmpd++;
+ tmps++;
+ }
}
else
}
else
+ {
+ uint32 *tmpd, *tmps;
+
+ tmpd = d;
+ tmps = s;
+
for(x=l>>2;x;x--)
{
for(x=l>>2;x;x--)
{
- *
(uint32*)d=*(uint32*)
s;
-
((uint32 *)d)
++;
-
((uint32 *)s)
++;
+ *
tmpd=*tmp
s;
+
tmpd
++;
+
tmps
++;
}
}
}
}
+}
+