summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
Diffstat (limited to 'rts')
-rw-r--r--rts/AutoApply.h4
-rw-r--r--rts/HeapStackCheck.cmm13
-rw-r--r--rts/Linker.c4
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;
}