X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=riscv%2Fdebug_defines.h;h=2e0c192e665f12782e26bb8a53bd8fc9a442f43c;hb=ab8a5631c39300c8ecb24635b16d50d19398dbdd;hp=2a78bdf0a19faf1171aef9d23c1494f966668ec3;hpb=4df7f6d279314ccf78d14c482a9f04e49e0e0b47;p=riscv-isa-sim.git diff --git a/riscv/debug_defines.h b/riscv/debug_defines.h index 2a78bdf..2e0c192 100644 --- a/riscv/debug_defines.h +++ b/riscv/debug_defines.h @@ -1,52 +1,139 @@ -#define AC_ACCESS_REGISTER None +#define DTM_IDCODE 0x01 /* -* 2: Access the lowest 32 bits of the register. +* Identifies the release version of this part. + */ +#define DTM_IDCODE_VERSION_OFFSET 28 +#define DTM_IDCODE_VERSION_LENGTH 4 +#define DTM_IDCODE_VERSION (0xf << DTM_IDCODE_VERSION_OFFSET) +/* +* Identifies the designer's part number of this part. + */ +#define DTM_IDCODE_PARTNUMBER_OFFSET 12 +#define DTM_IDCODE_PARTNUMBER_LENGTH 16 +#define DTM_IDCODE_PARTNUMBER (0xffff << DTM_IDCODE_PARTNUMBER_OFFSET) +/* +* Identifies the designer/manufacturer of this part. Bits 6:0 must be +* bits 6:0 of the designer/manufacturer's Identification Code as +* assigned by JEDEC Standard JEP106. Bits 10:7 contain the modulo-16 +* count of the number of continuation characters (0x7f) in that same +* Identification Code. + */ +#define DTM_IDCODE_MANUFID_OFFSET 1 +#define DTM_IDCODE_MANUFID_LENGTH 11 +#define DTM_IDCODE_MANUFID (0x7ff << DTM_IDCODE_MANUFID_OFFSET) +#define DTM_IDCODE_1_OFFSET 0 +#define DTM_IDCODE_1_LENGTH 1 +#define DTM_IDCODE_1 (0x1 << DTM_IDCODE_1_OFFSET) +#define DTM_DTMCONTROL 0x10 +/* +* Writing 1 to this bit resets the DMI controller, clearing any +* sticky error state. + */ +#define DTM_DTMCONTROL_DMIRESET_OFFSET 16 +#define DTM_DTMCONTROL_DMIRESET_LENGTH 1 +#define DTM_DTMCONTROL_DMIRESET (0x1 << DTM_DTMCONTROL_DMIRESET_OFFSET) +/* +* This is the minimum number of cycles a debugger should spend in +* Run-Test/Idle after every DMI scan to avoid a 'busy' +* return code (\Fdmistat of 3). A debugger must still +* check \Fdmistat when necessary. * -* 3: Access the lowest 64 bits of the register. +* 0: It is not necessary to enter Run-Test/Idle at all. * -* 4: Access the lowest 128 bits of the register. +* 1: Enter Run-Test/Idle and leave it immediately. * -* If \Fsize specifies a size larger than the register is, then the -* access must fail. If a register is accessible, then \Fsize matching -* the register's actual size must be supported. +* 2: Enter Run-Test/Idle and stay there for 1 cycle before leaving. +* +* And so on. */ -#define AC_ACCESS_REGISTER_SIZE_OFFSET 19 -#define AC_ACCESS_REGISTER_SIZE_LENGTH 3 -#define AC_ACCESS_REGISTER_SIZE (0x7 << AC_ACCESS_REGISTER_SIZE_OFFSET) +#define DTM_DTMCONTROL_IDLE_OFFSET 12 +#define DTM_DTMCONTROL_IDLE_LENGTH 3 +#define DTM_DTMCONTROL_IDLE (0x7 << DTM_DTMCONTROL_IDLE_OFFSET) /* -* When 1, execute the program in the Program Buffer exactly once -* before performing the read/write. +* 0: No error. +* +* 1: Reserved. Interpret the same as 2. +* +* 2: An operation failed (resulted in \Fop of 2). +* +* 3: An operation was attempted while a DMI access was still in +* progress (resulted in \Fop of 3). */ -#define AC_ACCESS_REGISTER_PREEXEC_OFFSET 18 -#define AC_ACCESS_REGISTER_PREEXEC_LENGTH 1 -#define AC_ACCESS_REGISTER_PREEXEC (0x1 << AC_ACCESS_REGISTER_PREEXEC_OFFSET) +#define DTM_DTMCONTROL_DMISTAT_OFFSET 10 +#define DTM_DTMCONTROL_DMISTAT_LENGTH 2 +#define DTM_DTMCONTROL_DMISTAT (0x3 << DTM_DTMCONTROL_DMISTAT_OFFSET) /* -* When 1, execute the program in the Program Buffer exactly once -* after performing the read/write. +* The size of \Faddress in \Rdmi. */ -#define AC_ACCESS_REGISTER_POSTEXEC_OFFSET 17 -#define AC_ACCESS_REGISTER_POSTEXEC_LENGTH 1 -#define AC_ACCESS_REGISTER_POSTEXEC (0x1 << AC_ACCESS_REGISTER_POSTEXEC_OFFSET) +#define DTM_DTMCONTROL_ABITS_OFFSET 4 +#define DTM_DTMCONTROL_ABITS_LENGTH 6 +#define DTM_DTMCONTROL_ABITS (0x3f << DTM_DTMCONTROL_ABITS_OFFSET) /* -* 0: Copy data from {\tt arg0} portion of {\tt data} into the -* specified register. +* 0: Version described in spec version 0.11. * -* 1: Copy data from the specified register into {\tt arg0} portion -* of {\tt data}. +* 1: Version described in spec version 0.12 (and later?), which +* reduces the DMI data width to 32 bits. +* +* Other values are reserved for future use. */ -#define AC_ACCESS_REGISTER_WRITE_OFFSET 16 -#define AC_ACCESS_REGISTER_WRITE_LENGTH 1 -#define AC_ACCESS_REGISTER_WRITE (0x1 << AC_ACCESS_REGISTER_WRITE_OFFSET) +#define DTM_DTMCONTROL_VERSION_OFFSET 0 +#define DTM_DTMCONTROL_VERSION_LENGTH 4 +#define DTM_DTMCONTROL_VERSION (0xf << DTM_DTMCONTROL_VERSION_OFFSET) +#define DTM_DMI 0x11 /* -* Number of the register to access, as described in Table~\ref{tab:regno}. +* Address used for DMI access. In Update-DR this value is used +* to access the DM over the DMI. */ -#define AC_ACCESS_REGISTER_REGNO_OFFSET 0 -#define AC_ACCESS_REGISTER_REGNO_LENGTH 16 -#define AC_ACCESS_REGISTER_REGNO (0xffff << AC_ACCESS_REGISTER_REGNO_OFFSET) -#define AC_QUICK_ACCESS None -#define AC_QUICK_ACCESS_1_OFFSET 24 -#define AC_QUICK_ACCESS_1_LENGTH 8 -#define AC_QUICK_ACCESS_1 (0xff << AC_QUICK_ACCESS_1_OFFSET) +#define DTM_DMI_ADDRESS_OFFSET 34 +#define DTM_DMI_ADDRESS_LENGTH abits +#define DTM_DMI_ADDRESS (((1L<