Skip to content

Commit 4acb5e5

Browse files
committed
Add debug decorator
1 parent d479d7a commit 4acb5e5

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

qiling/hw/peripheral.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,32 @@ def step(self):
3636
called after each instruction is executed
3737
"""
3838
pass
39+
40+
@staticmethod
41+
def read_debug(read):
42+
def read_wrapper(self, offset: int, size: int) -> int:
43+
self.ql.log.debug(f'[{self.label.upper()}] [R] {self.find_field(offset, size):10s}')
44+
return read(self, offset, size)
45+
46+
return read_wrapper
47+
48+
@staticmethod
49+
def write_debug(write):
50+
def write_wrapper(self, offset: int, size: int, value: int):
51+
field, extra = self.find_field(offset, size), ''
52+
if field.startswith('DR') and value <= 255:
53+
extra = f'({repr(chr(value))})'
54+
55+
self.ql.log.debug(f'[{self.label.upper()}] [W] {field:10s} = {hex(value)} {extra}')
56+
return write(self, offset, size, value)
57+
58+
return write_wrapper
3959

4060
def read(self, offset: int, size: int) -> int:
41-
self.ql.log.debug(f'[{self.label.upper()}] [R] {self.find_field(offset, size):10s}')
4261
return 0
4362

4463
def write(self, offset: int, size: int, value: int):
45-
self.ql.log.debug(f'[{self.label.upper()}] [W] {self.find_field(offset, size):10s} = {hex(value)}')
64+
pass
4665

4766
def in_field(self, field, offset: int, size: int) -> bool:
4867
return field.offset <= offset and offset + size <= field.offset + field.size

0 commit comments

Comments
 (0)