Opened 21 years ago
Closed 21 years ago
Last modified 4 years ago
#18 closed defect (fixed)
Crash on LE CPUs with alignement issues
|Reported by:||SF/bbrox||Owned by:|
On the iPAQ (Little-endian based with ARM CPU), memory accesses NEED to be aligned.
By doing some hacks (ie checking on all READ_LE_UINT16 and READ_LE_UINT32 inline functions if the pointer is correctly aligned), I changed a LOT of these function calls to the (newly created) READ_LE_UINT16_UNALIGNED and READ_LE_UINT32_UNALIGNED.
Now, I wonder if by default, on platform like the ARM, the default should not be 'unaligned'...
Or is there really some places where we are sure to be aligned ?
Ticket imported from: #478437. Ticket imported from: bugs/18.
Change History (8)
comment:1 by , 21 years ago
comment:2 by , 21 years ago
|Status:||new → pending|
comment:3 by , 21 years ago
Have you located the source of the bug, and can this bug report be closed?
comment:4 by , 21 years ago
This is closed since the CVS commit that added the SCUMM_NEED_ALIGNMENT define in scummsys.h .
comment:5 by , 21 years ago
|Status:||pending → new|
comment:6 by , 21 years ago
|Status:||new → closed|
comment:7 by , 4 years ago
comment:8 by , 4 years ago
|Component:||Ports → Port: WinCE|
Just to add that I now changed ALL the READ_LE_UINTxx functions to the UNALIGNED version (by some #define magic in scummsys.h).
Now, Day of the Tentacle almost starts on the iPAQ (yoohoo), but I get this :
Error: Gdi::drawBitmap, strip drawn to 256 below window bottom 200!
Time to go back to some GDBing to search for further alignement problems :-)
Anyway, thanks for the cool project, I was dreaming of doing the same thing on my own but never even knew how to start !