summaryrefslogtreecommitdiff
path: root/src/vm/amd64
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2016-02-16 23:22:42 +0100
committerJan Vorlicek <janvorli@microsoft.com>2016-02-16 23:22:42 +0100
commit0121102f14dfc8809292949108c21feaa5b9e67a (patch)
tree33bf94a46a279870e302665a09e627ef19c0d16a /src/vm/amd64
parent9427f6c620450af16afd7cb95a08a1d846c7c79f (diff)
downloadcoreclr-0121102f14dfc8809292949108c21feaa5b9e67a.tar.gz
coreclr-0121102f14dfc8809292949108c21feaa5b9e67a.tar.bz2
coreclr-0121102f14dfc8809292949108c21feaa5b9e67a.zip
Fix INVALIDGCVALUE on Unix
The INVALIDGCVALUE value loaded into the R11 in the JIT_WriteBarrier_Debug and JIT_ByRefWriteBarrier is sign extended to 0xFFFFFFFFCCCCCCCD instead of being the 0x00000000CCCCCCCD. It was introduced during the early days of CoreCLR porting when I have misread the error message that I was getting from Clang when compiling mov R11, 0xCCCCCCCD and didn't know yet that loading 64 bit number requires using the movabs mnemonics.
Diffstat (limited to 'src/vm/amd64')
-rw-r--r--src/vm/amd64/jithelpers_fast.S2
-rw-r--r--src/vm/amd64/jithelpers_slow.S2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/vm/amd64/jithelpers_fast.S b/src/vm/amd64/jithelpers_fast.S
index 9fa35a913b..22f21bb8de 100644
--- a/src/vm/amd64/jithelpers_fast.S
+++ b/src/vm/amd64/jithelpers_fast.S
@@ -186,7 +186,7 @@ LEAF_ENTRY JIT_ByRefWriteBarrier, _TEXT
mov rax, [r10]
cmp rax, r11
je DoneShadow_ByRefWriteBarrier
- mov r11, INVALIDGCVALUE
+ movabs r11, INVALIDGCVALUE
mov [r10], r11
jmp DoneShadow_ByRefWriteBarrier
diff --git a/src/vm/amd64/jithelpers_slow.S b/src/vm/amd64/jithelpers_slow.S
index 5b67d14a60..4d18e4356c 100644
--- a/src/vm/amd64/jithelpers_slow.S
+++ b/src/vm/amd64/jithelpers_slow.S
@@ -45,7 +45,7 @@ LEAF_ENTRY JIT_WriteBarrier_Debug, _TEXT
mov rax, [r10]
cmp rax, r11
je DoneShadow
- mov r11, INVALIDGCVALUE
+ movabs r11, INVALIDGCVALUE
mov [r10], r11
jmp DoneShadow