Index: libffi/src/m68k/ffi.c =================================================================== --- libffi.orig/src/m68k/ffi.c +++ libffi/src/m68k/ffi.c @@ -261,7 +261,8 @@ ffi_prep_closure_loc (ffi_closure* closu void *user_data, void *codeloc) { - FFI_ASSERT (cif->abi == FFI_SYSV); + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; *(unsigned short *)closure->tramp = 0x207c; *(void **)(closure->tramp + 2) = codeloc; Index: libffi/testsuite/libffi.call/return_sc.c =================================================================== --- libffi.orig/testsuite/libffi.call/return_sc.c +++ libffi/testsuite/libffi.call/return_sc.c @@ -30,7 +30,7 @@ int main (void) sc < (signed char) 127; sc++) { ffi_call(&cif, FFI_FN(return_sc), &rint, values); - CHECK(rint == (ffi_arg) sc); + CHECK((signed char)rint == sc); } exit(0); }