From 7ff0ff8a60e443ca1623fecedc81865cc1d9fff8 Mon Sep 17 00:00:00 2001 From: UserDeploy Date: Sat, 19 Apr 2025 12:18:21 +0700 Subject: [PATCH] memset crash --- dcc/memory.c | 8 ++++---- dcc_emu.py | 16 +++++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/dcc/memory.c b/dcc/memory.c index 1dfd9ff..5953e81 100644 --- a/dcc/memory.c +++ b/dcc/memory.c @@ -16,11 +16,11 @@ void *memcpy(void *dst, const void *src, size_t len) void *memset(void *dst, int val, size_t count) { - uint8_t *d = dst; + register uint8_t *ptr = (uint8_t *)dst; - while (count--) { - *d = (uint8_t)val; - d++; + while (count-- > 0) { + if ((count & 0x1ff) == 0x1ff) wdog_reset(); + *ptr++ = val; } return dst; diff --git a/dcc_emu.py b/dcc_emu.py index fe53da4..4ebfaa1 100644 --- a/dcc_emu.py +++ b/dcc_emu.py @@ -124,16 +124,18 @@ def test_arm(): mu.hook_add(UC_HOOK_CODE, hook_code) def on_read(mu, access, address, size, value, data): - if DEBUG and address <= 0x14000000: + #if DEBUG and address <= 0x14000000: + if DEBUG: print("Read at", hex(address), size, mu.mem_read(address, size)) def on_write(mu, access, address, size, value, data): - if DEBUG and address <= 0x14000000: - if address == 0xaaa and value == 0x98: - mu.mem_write(0x00000000, open("cfi_32mb.bin", "rb").read()) - - elif address == 0xaaa and value == 0x90: - mu.mem_write(0x00000000, b"\x01\x00\x7e\x22") + if DEBUG: + if address <= 0x14000000: + if address == 0xaaa and value == 0x98: + mu.mem_write(0x00000000, open("cfi_32mb.bin", "rb").read()) + + elif address == 0xaaa and value == 0x90: + mu.mem_write(0x00000000, b"\x01\x00\x7e\x22") # mu.reg_write(0x) print("Write at", hex(address), size, hex(value)) # if value == 0x98: