diff options
Diffstat (limited to 'src/libtools/signals.c')
| -rw-r--r-- | src/libtools/signals.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c index 1c8247ec..5d932349 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -426,6 +426,32 @@ int is_addr_unaligned(uintptr_t addr) } #ifdef DYNAREC +int nUnalignedRange(uintptr_t start, size_t size) +{ + if(!unaligned) + return 0; + int n = 0; + uintptr_t end = start + size -1; + uintptr_t addr; + kh_foreach_key(unaligned, addr, + if(addr>=start && addr<=end) + ++n; + ); + return n; +} +void getUnalignedRange(uintptr_t start, size_t size, uintptr_t addrs[]) +{ + if(!unaligned) + return; + int n = 0; + uintptr_t end = start + size -1; + uintptr_t addr; + kh_foreach_key(unaligned, addr, + if(addr>=start && addr<=end) + addrs[n++] = addr; + ); +} + int mark_db_unaligned(dynablock_t* db, uintptr_t x64pc) { add_unaligned_address(x64pc); |