@@ -117,6 +117,10 @@ void pdbg_target_priv_set(struct pdbg_target *target, void *priv);
struct pdbg_target *pdbg_target_root(void);
bool pdbg_target_compatible(struct pdbg_target *target, const char *compatible);
+/* Translate an address offset for a target to absolute address in address
+ * space of a "base" target. */
+struct pdbg_target *pdbg_address_absolute(struct pdbg_target *target, uint64_t *addr);
+
/* Procedures */
int fsi_read(struct pdbg_target *target, uint32_t addr, uint32_t *val);
int fsi_write(struct pdbg_target *target, uint32_t addr, uint32_t val);
@@ -36,6 +36,11 @@ static struct pdbg_target *get_class_target_addr(struct pdbg_target *target, con
return target;
}
+struct pdbg_target *pdbg_address_absolute(struct pdbg_target *target, uint64_t *addr)
+{
+ return get_class_target_addr(target, "pib", addr);
+}
+
/* The indirect access code was largely stolen from hw/xscom.c in skiboot */
#define PIB_IND_MAX_RETRIES 10
#define PIB_IND_READ PPC_BIT(0)