In the RX_ERROR_HANDLER: routine (in /firmware/rosco_m68k_v1/base_servers/serial_isr.S), the arguments passed to the C function handleRxError are not correctly cleaned up (required since -mrtd is not used in this codebase). This will cause the registers to be 'restored' to incorrect value and probably lead to a crash.
Need to look in to the GCC M68K ABI to see how these (byte-sized) arguments should be properly passed (suspect as a uint32) and then make sure they're cleaned up properly after the function call.
In the
RX_ERROR_HANDLER:
routine (in/firmware/rosco_m68k_v1/base_servers/serial_isr.S
), the arguments passed to the C functionhandleRxError
are not correctly cleaned up (required since -mrtd is not used in this codebase). This will cause the registers to be 'restored' to incorrect value and probably lead to a crash.Need to look in to the GCC M68K ABI to see how these (byte-sized) arguments should be properly passed (suspect as a uint32) and then make sure they're cleaned up properly after the function call.