diff options
Diffstat (limited to 'rts')
-rw-r--r-- | rts/AutoApply.h | 4 | ||||
-rw-r--r-- | rts/HeapStackCheck.cmm | 13 | ||||
-rw-r--r-- | rts/Linker.c | 4 |
3 files changed, 17 insertions, 4 deletions
diff --git a/rts/AutoApply.h b/rts/AutoApply.h index ebb7308875..c5dbbcd344 100644 --- a/rts/AutoApply.h +++ b/rts/AutoApply.h @@ -82,9 +82,9 @@ Sp(-1) = CCCS; \ Sp(-2) = stg_restore_cccs_info; \ Sp_adj(-2); \ - jump (target) [*] + jump (target) [R1] #else -#define jump_SAVE_CCCS(target) jump (target) [*] +#define jump_SAVE_CCCS(target) jump (target) [R1] #endif #endif /* APPLY_H */ diff --git a/rts/HeapStackCheck.cmm b/rts/HeapStackCheck.cmm index 4fd44302f5..b3ae2648d9 100644 --- a/rts/HeapStackCheck.cmm +++ b/rts/HeapStackCheck.cmm @@ -509,7 +509,12 @@ INFO_TABLE_RET ( stg_block_takemvar, RET_SMALL, W_ info_ptr, P_ mvar ) // code fragment executed just before we return to the scheduler stg_block_takemvar_finally { + W_ r1, r3; + r1 = R1; + r3 = R3; unlockClosure(R3, stg_MVAR_DIRTY_info); + R1 = r1; + R3 = r3; jump StgReturn [R1]; } @@ -532,7 +537,12 @@ INFO_TABLE_RET( stg_block_putmvar, RET_SMALL, W_ info_ptr, // code fragment executed just before we return to the scheduler stg_block_putmvar_finally { + W_ r1, r3; + r1 = R1; + r3 = R3; unlockClosure(R3, stg_MVAR_DIRTY_info); + R1 = r1; + R3 = r3; jump StgReturn [R1]; } @@ -565,7 +575,10 @@ stg_block_throwto_finally // unlocked. It may have been unlocked if we revoked the message // due to an exception being raised during threadPaused(). if (StgHeader_info(StgTSO_block_info(CurrentTSO)) == stg_WHITEHOLE_info) { + W_ r1; + r1 = R1; unlockClosure(StgTSO_block_info(CurrentTSO), stg_MSG_THROWTO_info); + R1 = r1; } jump StgReturn [R1]; } diff --git a/rts/Linker.c b/rts/Linker.c index dca8a52813..0fd3be1052 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -5002,7 +5002,7 @@ do_Elf_Rel_relocations ( ObjectCode* oc, char* ehdrC, # endif // arm_HOST_ARCH default: - errorBelch("%s: unhandled ELF relocation(Rel) type %" FMT_SizeT "\n", + errorBelch("%s: unhandled ELF relocation(Rel) type %" FMT_Word "\n", oc->fileName, (W_)ELF_R_TYPE(info)); return 0; } @@ -5317,7 +5317,7 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC, #endif default: - errorBelch("%s: unhandled ELF relocation(RelA) type %" FMT_SizeT "\n", + errorBelch("%s: unhandled ELF relocation(RelA) type %" FMT_Word "\n", oc->fileName, (W_)ELF_R_TYPE(info)); return 0; } |