diff options
| author | Cliff Click <cliffc@acm.org> | 2025-04-14 10:42:50 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2025-04-14 10:42:50 -0700 |
| commit | 5e7223504d356cbb48c397bed0cd0012eb075935 (patch) | |
| tree | 5fe6427b6d24a86205b150813446cdc69b6125da | |
| parent | e1351e0f4788779e9f37a77f0abb936f2869cbfc (diff) | |
| download | Simple-5e7223504d356cbb48c397bed0cd0012eb075935.tar.gz Simple-5e7223504d356cbb48c397bed0cd0012eb075935.zip | |
win64 shadow stack killed by calls
| -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() { |
