+ int (*init_target)(struct command_context *cmd_ctx, struct target *target);
+
+ /**
+ * Free all the resources allocated by the target.
+ *
+ * @param target The target to deinit
+ */
+ void (*deinit_target)(struct target *target);
+
+ /* translate from virtual to physical address. Default implementation is successful
+ * no-op(i.e. virtual==physical).
+ */
+ int (*virt2phys)(struct target *target, target_addr_t address, target_addr_t *physical);
+
+ /* read directly from physical memory. caches are bypassed and untouched.
+ *
+ * If the target does not support disabling caches, leaving them untouched,
+ * then minimally the actual physical memory location will be read even
+ * if cache states are unchanged, flushed, etc.
+ *
+ * Default implementation is to call read_memory.
+ */
+ int (*read_phys_memory)(struct target *target, target_addr_t phys_address,
+ uint32_t size, uint32_t count, uint8_t *buffer);
+
+ /*
+ * same as read_phys_memory, except that it writes...
+ */
+ int (*write_phys_memory)(struct target *target, target_addr_t phys_address,
+ uint32_t size, uint32_t count, const uint8_t *buffer);
+
+ int (*mmu)(struct target *target, int *enabled);
+
+ /* after reset is complete, the target can check if things are properly set up.
+ *
+ * This can be used to check if e.g. DCC memory writes have been enabled for
+ * arm7/9 targets, which they really should except in the most contrived
+ * circumstances.
+ */
+ int (*check_reset)(struct target *target);