diff options
Diffstat (limited to 'chapter21/src/main/java')
| -rw-r--r-- | chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java b/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java index 53671eae..b8688f53 100644 --- a/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java +++ b/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java @@ -316,7 +316,12 @@ public class x86_64_v2 extends Machine { (1L<<FLAGS)| // Flags are killed // Only XMM0-XMM5 are killed; XMM6-XMM15 are preserved (1L<<XMM0) | (1L<<XMM1) | (1L<<XMM2) | (1L<<XMM3) | - (1L<<XMM4) | (1L<<XMM5); + (1L<<XMM4) | (1L<<XMM5) | + // Shadow arg space is killed by caller: 1st 4 stack slots past RPC + (1L<<(MAX_REG+1)) | + (1L<<(MAX_REG+2)) | + (1L<<(MAX_REG+3)) | + (1L<<(MAX_REG+4)) ; static final RegMask WIN64_CALLER_SAVE_MASK = new RegMask(WIN64_CALLER_SAVE); static RegMask x86CallerSave() { |
