summaryrefslogtreecommitdiffstatshomepage
path: root/docs/source/techspecs/device_memory_interface.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/techspecs/device_memory_interface.rst')
-rw-r--r--docs/source/techspecs/device_memory_interface.rst68
1 files changed, 63 insertions, 5 deletions
diff --git a/docs/source/techspecs/device_memory_interface.rst b/docs/source/techspecs/device_memory_interface.rst
index d38faf8c996..1b338db94d8 100644
--- a/docs/source/techspecs/device_memory_interface.rst
+++ b/docs/source/techspecs/device_memory_interface.rst
@@ -102,14 +102,72 @@ version tests for AS_PROGRAM/AS_0.
5. MMU support for disassembler
-------------------------------
-| bool **translate**\ (int spacenum, int intention, offs_t &address)
+| int **translate**\ (int spacenum, int intention, offs_t &address)
Does a logical to physical address translation through the device's
MMU. spacenum gives the space number, intention the type of the
future access (TRANSLATE_(READ|WRITE|FETCH)(|_USER|_DEBUG)) and
address is an inout parameter with the address to translate and its
-translated version. Should return true if the translation went
-correctly, false if the address is unmapped.
+translated version. This returns the translated space number if
+the translation went correctly, or AS_INVALID if the address is
+unmapped.
-Note that for some historical reason the device itself must override
-the virtual method **memory_translate** with the same signature.
+Note that the device itself must override the virtual method
+**memory_translate** with the same signature.
+
+
+| u8 **read_byte**\ (int spacenum, offs_t address, int intention)
+
+Returns a byte from the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_READ(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| u16 **read_word**\ (int spacenum, offs_t address, int intention)
+
+Returns a word from the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_READ(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| u32 **read_dword**\ (int spacenum, offs_t address, int intention)
+
+Returns a dword from the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_READ(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| u64 **read_qword**\ (int spacenum, offs_t address, int intention)
+Returns a qword from the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_READ(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| u64 **read_memory**\ (int spacenum, offs_t address, int size, int intention)
+Returns 1, 2, 4 or 8 bytes from the specified memory space, as per
+**read_byte**, **read_word**, **read_dword** or **read_qword**.
+
+| void **write_byte**\ (int spacenum, offs_t address, u8 data, int intention)
+Writes a byte to the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_WRITE(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| void **write_word**\ (int spacenum, offs_t address, u16 data, int intention)
+Writes a word to the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_WRITE(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| void **write_dword**\ (int spacenum, offs_t address, u32 data, int intention)
+Writes a dword to the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_WRITE(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| void **write_qword**\ (int spacenum, offs_t address, u64 data, int intention)
+Writes a qword to the specified memory space, doing address
+translation if requested. The intention must be specified as either
+TRANSLATE_WRITE(|_USER|_DEBUG) or TRANSLATE_NONE.
+
+| void **write_memory**\ (int spacenum, offs_t address, u64 data, int size, int intention)
+Writes 1, 2, 4 or 8 bytes to the specified memory space, as per
+**write_byte**, **write_word**, **write_dword** or **write_qword**.
+
+| u64 read_opcode(int spacenum, offs_t offset, int size)
+Reads 1, 2, 4 or 8 bytes at the given offset from the specified
+opcode space. This calls **translate** with TRANSLATE_FETCH_DEBUG
+as the intention.