summaryrefslogtreecommitdiff
path: root/src/pal/src/exception/seh-unwind.cpp
diff options
context:
space:
mode:
authorBen Pye <ben@curlybracket.co.uk>2015-07-14 21:52:13 +0100
committerBen Pye <ben@curlybracket.co.uk>2015-07-31 15:44:36 +0100
commitbb1d4ca091d129968f367bbf03755441ce5036ab (patch)
treebfe291a8ed5e41c38005c471839166d12758dd52 /src/pal/src/exception/seh-unwind.cpp
parent2cf141dce5c3a22efd148e88f8a732835ee68336 (diff)
downloadcoreclr-bb1d4ca091d129968f367bbf03755441ce5036ab.tar.gz
coreclr-bb1d4ca091d129968f367bbf03755441ce5036ab.tar.bz2
coreclr-bb1d4ca091d129968f367bbf03755441ce5036ab.zip
Modify unwinder to provide RtlVirtualUnwind.
Use PAL_VirtualUnwind on Linux ARM Add assembler annotation for unwinding
Diffstat (limited to 'src/pal/src/exception/seh-unwind.cpp')
-rw-r--r--src/pal/src/exception/seh-unwind.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/pal/src/exception/seh-unwind.cpp b/src/pal/src/exception/seh-unwind.cpp
index 9dd025c51d..70a1afd7b1 100644
--- a/src/pal/src/exception/seh-unwind.cpp
+++ b/src/pal/src/exception/seh-unwind.cpp
@@ -73,9 +73,9 @@ static void WinContextToUnwindCursor(CONTEXT *winContext, unw_cursor_t *cursor)
unw_set_reg(cursor, UNW_X86_64_R14, winContext->R14);
unw_set_reg(cursor, UNW_X86_64_R15, winContext->R15);
#elif defined(_ARM_)
- unw_set_reg(cursor, UNW_REG_IP, winContext->Pc);
- unw_set_reg(cursor, UNW_REG_SP, winContext->Sp);
+ unw_set_reg(cursor, UNW_ARM_R13, winContext->Sp);
unw_set_reg(cursor, UNW_ARM_R14, winContext->Lr);
+ unw_set_reg(cursor, UNW_ARM_R15, winContext->Pc);
unw_set_reg(cursor, UNW_ARM_R4, winContext->R4);
unw_set_reg(cursor, UNW_ARM_R5, winContext->R5);
unw_set_reg(cursor, UNW_ARM_R6, winContext->R6);
@@ -100,9 +100,9 @@ static void UnwindContextToWinContext(unw_cursor_t *cursor, CONTEXT *winContext)
unw_get_reg(cursor, UNW_X86_64_R14, (unw_word_t *) &winContext->R14);
unw_get_reg(cursor, UNW_X86_64_R15, (unw_word_t *) &winContext->R15);
#elif defined(_ARM_)
- unw_get_reg(cursor, UNW_REG_IP, (unw_word_t *) &winContext->Pc);
- unw_get_reg(cursor, UNW_REG_SP, (unw_word_t *) &winContext->Sp);
+ unw_get_reg(cursor, UNW_ARM_R13, (unw_word_t *) &winContext->Sp);
unw_get_reg(cursor, UNW_ARM_R14, (unw_word_t *) &winContext->Lr);
+ unw_get_reg(cursor, UNW_ARM_R15, (unw_word_t *) &winContext->Pc);
unw_get_reg(cursor, UNW_ARM_R4, (unw_word_t *) &winContext->R4);
unw_get_reg(cursor, UNW_ARM_R5, (unw_word_t *) &winContext->R5);
unw_get_reg(cursor, UNW_ARM_R6, (unw_word_t *) &winContext->R6);