only use faster byte_copy on i386 to avoid bus error
This commit is contained in:
parent
ffc91c62a3
commit
52b12478c6
3
CHANGES
3
CHANGES
@ -1,3 +1,6 @@
|
|||||||
|
0.14:
|
||||||
|
only use faster byte_copy on i386
|
||||||
|
|
||||||
0.13:
|
0.13:
|
||||||
fixed several bugs in test/uudecode.c
|
fixed several bugs in test/uudecode.c
|
||||||
add uninstall target
|
add uninstall target
|
||||||
|
@ -6,6 +6,7 @@ void byte_copy(void* out, unsigned int len, const void* in) {
|
|||||||
register char* s=out;
|
register char* s=out;
|
||||||
register const char* t=in;
|
register const char* t=in;
|
||||||
register const char* u=t+len;
|
register const char* u=t+len;
|
||||||
|
#ifdef __i386__
|
||||||
if (len>127) {
|
if (len>127) {
|
||||||
if (sizeof(unsigned long)>4) { /* a good compiler should optimize this check away */
|
if (sizeof(unsigned long)>4) { /* a good compiler should optimize this check away */
|
||||||
for (;(unsigned long)t&7;) {
|
for (;(unsigned long)t&7;) {
|
||||||
@ -21,6 +22,7 @@ void byte_copy(void* out, unsigned int len, const void* in) {
|
|||||||
s+=sizeof(long); t+=sizeof(long);
|
s+=sizeof(long); t+=sizeof(long);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (t==u) break; *s=*t; ++s; ++t;
|
if (t==u) break; *s=*t; ++s; ++t;
|
||||||
if (t==u) break; *s=*t; ++s; ++t;
|
if (t==u) break; *s=*t; ++s; ++t;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user