notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
compiler work, last(?) C version
[picodrive.git]
/
Pico
/
Misc.c
diff --git
a/Pico/Misc.c
b/Pico/Misc.c
index
38c381d
..
f21c511
100644
(file)
--- a/
Pico/Misc.c
+++ b/
Pico/Misc.c
@@
-316,8
+316,30
@@
PICO_INTERNAL void SRAMUpdPending(unsigned int a, unsigned int d)
\r
\r
#ifndef _ASM_MISC_C
\r
\r
\r
#ifndef _ASM_MISC_C
\r
+typedef struct
\r
+{
\r
+ int b0;
\r
+ int b1;
\r
+ int b2;
\r
+ int b3;
\r
+ int b4;
\r
+ int b5;
\r
+ int b6;
\r
+ int b7;
\r
+} intblock;
\r
+
\r
PICO_INTERNAL_ASM void memcpy16(unsigned short *dest, unsigned short *src, int count)
\r
{
\r
PICO_INTERNAL_ASM void memcpy16(unsigned short *dest, unsigned short *src, int count)
\r
{
\r
+ if ((((int)dest | (int)src) & 3) == 0)
\r
+ {
\r
+ if (count >= 32) {
\r
+ memcpy32((int *)dest, (int *)src, count/2);
\r
+ count&=1;
\r
+ } else {
\r
+ for (; count >= 2; count -= 2, dest+=2, src+=2)
\r
+ *(int *)dest = *(int *)src;
\r
+ }
\r
+ }
\r
while (count--)
\r
*dest++ = *src++;
\r
}
\r
while (count--)
\r
*dest++ = *src++;
\r
}
\r
@@
-331,9
+353,15
@@
PICO_INTERNAL_ASM void memcpy16bswap(unsigned short *dest, void *src, int count)
*dest++ = (src_[0] << 8) | src_[1];
\r
}
\r
\r
*dest++ = (src_[0] << 8) | src_[1];
\r
}
\r
\r
-
\r
+#ifndef _ASM_MISC_C_AMIPS
\r
PICO_INTERNAL_ASM void memcpy32(int *dest, int *src, int count)
\r
{
\r
PICO_INTERNAL_ASM void memcpy32(int *dest, int *src, int count)
\r
{
\r
+ intblock *bd = (intblock *) dest, *bs = (intblock *) src;
\r
+
\r
+ for (; count >= sizeof(*bd)/4; count -= sizeof(*bd)/4)
\r
+ *bd++ = *bs++;
\r
+
\r
+ dest = (int *)bd; src = (int *)bs;
\r
while (count--)
\r
*dest++ = *src++;
\r
}
\r
while (count--)
\r
*dest++ = *src++;
\r
}
\r
@@
-341,8
+369,14
@@
PICO_INTERNAL_ASM void memcpy32(int *dest, int *src, int count)
\r
PICO_INTERNAL_ASM void memset32(int *dest, int c, int count)
\r
{
\r
\r
PICO_INTERNAL_ASM void memset32(int *dest, int c, int count)
\r
{
\r
+ for (; count >= 8; count -= 8, dest += 8)
\r
+ dest[0] = dest[1] = dest[2] = dest[3] =
\r
+ dest[4] = dest[5] = dest[6] = dest[7] = c;
\r
+
\r
while (count--)
\r
*dest++ = c;
\r
}
\r
while (count--)
\r
*dest++ = c;
\r
}
\r
+void memset32_uncached(int *dest, int c, int count) { memset32(dest, c, count); }
\r
+#endif
\r
#endif
\r
\r
#endif
\r
\r