|
|
42d3218 |
Patch by Guillem Jover <guillem@debian.org> for arj <= 3.10.22, which
|
|
|
42d3218 |
fixes unaligned memory accesses.
|
|
|
42d3218 |
|
|
|
42d3218 |
Index: b/arj_proc.c
|
|
|
42d3218 |
===================================================================
|
|
|
42d3218 |
--- a/arj_proc.c 2005-06-21 22:53:12.000000000 +0300
|
|
|
42d3218 |
+++ b/arj_proc.c 2008-06-16 08:25:28.000000000 +0300
|
|
|
42d3218 |
@@ -2898,7 +2898,7 @@ char *ltrim(char *str)
|
|
|
42d3218 |
}
|
|
|
42d3218 |
#endif
|
|
|
42d3218 |
|
|
|
42d3218 |
-#if defined(WORDS_BIGENDIAN)&&!defined(ARJDISP)&&!defined(REGISTER)
|
|
|
42d3218 |
+#if (defined(WORDS_BIGENDIAN) || defined(ALIGN_POINTERS)) && !defined(ARJDISP) && !defined(REGISTER)
|
|
|
42d3218 |
/* Model-independent routine to get 2 bytes from far RAM */
|
|
|
42d3218 |
|
|
|
42d3218 |
unsigned int mget_word(char FAR *p)
|
|
|
42d3218 |
Index: b/arj_proc.h
|
|
|
42d3218 |
===================================================================
|
|
|
42d3218 |
--- a/arj_proc.h 2004-01-25 12:39:30.000000000 +0200
|
|
|
42d3218 |
+++ b/arj_proc.h 2008-06-16 08:25:28.000000000 +0300
|
|
|
42d3218 |
@@ -12,7 +12,7 @@
|
|
|
42d3218 |
|
|
|
42d3218 |
#define mget_byte(p) (*(unsigned char FAR *)(p)&0xFF)
|
|
|
42d3218 |
#define mput_byte(c, p) *(unsigned char FAR *)(p)=(unsigned char)(c)
|
|
|
42d3218 |
-#ifndef WORDS_BIGENDIAN
|
|
|
42d3218 |
+#if !defined(ALIGN_POINTERS) && !defined(WORDS_BIGENDIAN)
|
|
|
42d3218 |
#define mget_word(p) (*(unsigned short *)(p)&0xFFFF)
|
|
|
42d3218 |
#define mput_word(w,p) (*(unsigned short *)(p)=(unsigned short)(w))
|
|
|
42d3218 |
#define mget_dword(p) (*(unsigned long *)(p))
|
|
|
42d3218 |
@@ -60,7 +60,7 @@ void pack_mem(struct mempack *mempack);
|
|
|
42d3218 |
void unpack_mem(struct mempack *mempack);
|
|
|
42d3218 |
void strip_lf(char *str);
|
|
|
42d3218 |
char *ltrim(char *str);
|
|
|
42d3218 |
-#ifdef WORDS_BIGENDIAN
|
|
|
42d3218 |
+#if defined(ALIGN_POINTERS) || defined(WORDS_BIGENDIAN)
|
|
|
42d3218 |
unsigned int mget_word(char FAR *p);
|
|
|
42d3218 |
unsigned long mget_dword(char FAR *p);
|
|
|
42d3218 |
void mput_word(unsigned int w, char FAR *p);
|