Browse Source

Convert ssamoswap load traps to store traps

The difference can manifest when checking triggers.
pull/2266/head
Andrew Waterman 1 month ago
parent
commit
0d05926e3e
Failed to extract signature
  1. 2
      riscv/mmu.h

2
riscv/mmu.h

@ -196,10 +196,12 @@ public:
// for shadow stack amoswap // for shadow stack amoswap
template<typename T> template<typename T>
T ssamoswap(reg_t addr, reg_t value) { T ssamoswap(reg_t addr, reg_t value) {
convert_load_traps_to_store_traps({
store_slow_path(addr, sizeof(T), nullptr, {.ss_access=true}, false, true); store_slow_path(addr, sizeof(T), nullptr, {.ss_access=true}, false, true);
auto data = load<T>(addr, {.ss_access=true}); auto data = load<T>(addr, {.ss_access=true});
store<T>(addr, value, {.ss_access=true}); store<T>(addr, value, {.ss_access=true});
return data; return data;
})
} }
template<typename T> template<typename T>

Loading…
Cancel
Save