rockbox/firmware/reggen/cortex-m.regs
Aidan MacDonald 19af7131e2 echoplayer: allow enabling system debug in normal builds
Allow toggling the system debug state from the debug menu
in Rockbox, or by holding a button combo at boot, so that
an SWD/JTAG debugger can be attached to normal non-debug
builds without too much hassle.

Change-Id: Iee47ef916ade2e5ec1094a63c68e48f1b27b0bbb
2026-02-06 07:09:32 -05:00

177 lines
3.3 KiB
Text

// This file is marked CC0 1.0.
// To view a copy of this mark, visit https://creativecommons.org/publicdomain/zero/1.0/
// Register definitions common to ARM Cortex-M series processors
// Cache controller
CM_CACHE @ 0xe000ef00 : block {
ICIALLU @ 0x50 : reg
ICIMVAU @ 0x58 : reg
DCIMVAC @ 0x5c : reg
DCISW @ 0x60 : reg
DCCMVAU @ 0x64 : reg
DCCMVAC @ 0x68 : reg
DCCSW @ 0x6c : reg
DCCIMVAC @ 0x70 : reg
DCCISW @ 0x74 : reg
}
// Nested vectored interrupt controller
CM_NVIC @ 0xe000e000 : block {
ISER @ 0x100 [ 8; 0x4] : reg
ICER @ 0x180 [ 8; 0x4] : reg
ISPR @ 0x200 [ 8; 0x4] : reg
ICPR @ 0x280 [ 8; 0x4] : reg
IABR @ 0x300 [ 8; 0x4] : reg
IPR @ 0x400 [60; 0x4] : reg
STIR @ 0xf00 : reg {
8 0 INTID
}
}
// System control block
CM_SCB @ 0xe000ed00 : block {
ICSR @ 0x04 : reg {
-- 31 NMIPENDSET
-- 28 PENDSVSET
-- 27 PENDSVCLR
-- 26 PENDSTSET
-- 25 PENDSTCLR
-- 23 ISRPREEMPT
-- 22 ISRPENDING
20 12 VECTPENDING
-- 11 RETTOBASE
08 00 VECTACTIVE
}
VTOR @ 0x08 : reg
AIRCR @ 0x0c : reg {
31 16 VECTKEY : { 0x05FA = KEY }
-- 15 ENDIANNESS : { 0 = LITTLE; 1 = BIG }
10 08 PRIGROUP
-- 02 SYSRESETREQ
-- 01 VECTCLRACTIVE
-- 00 VECTRESET
}
SCR @ 0x10 : reg {
4 SEVONPEND
2 SLEEPDEEP
1 SLEEPONEXIT
}
CCR @ 0x14 : reg {
18 BP
17 IC
16 DC
09 STKALIGN
08 BFHFNMIGN
04 DIV_0_TRP
03 UNALIGN_TRP
01 USERSETMPEND
00 NONBASETHRDENA
}
SHPR1 @ 0x18 : reg {
23 16 PRI_USAGEFAULT
15 08 PRI_BUSFAULT
07 00 PRI_MEMMANAGE
}
SHPR2 @ 0x1c : reg {
31 24 PRI_SVCALL
}
SHPR3 @ 0x20 : reg {
31 24 PRI_SYSTICK
23 16 PRI_PENDSV
07 00 PRI_DEBUGMONITOR
}
SHCSR @ 0x24 : reg {
18 USGFAULTENA
17 BUSFAULTENA
16 MEMFAULTENA
15 SVCALLPENDED
14 BUSFAULTPENDED
13 MEMFAULTPENDED
12 USGFAULTPENDED
11 SYSTICKACT
10 PENDSVACT
08 MONITORACT
07 SVCALLACT
03 USGFAULTACT
01 BUSFAULTACT
00 MEMFAULTACT
}
CFSR @ 0x28 : reg {
// UFSR bits
25 DIVBYZERO
24 UNALIGNED
19 NOCP
18 INVPC
17 INVSTATE
16 UNDEFINSTR
// BFSR bits
15 BFARVALID
13 LSPERR
12 STKERR
11 UNSTKERR
10 IMPRECISERR
09 PRECISERR
08 IBUSERR
// MMSR bits
07 MMARVALID
05 MLSPERR
04 MSTKERR
03 MUNSTKERR
01 DACCVIOL
00 IACCVIOL
}
HFSR @ 0x2c : reg {
31 DEBUGEVT
30 FORCED
01 VECTTBL
}
MMFAR @ 0x34 : reg
BFAR @ 0x38 : reg
CPACR @ 0x88 : reg
}
// System timer
CM_SYSTICK @ 0xe000e000 : block {
CSR @ 0x10 : reg {
16 COUNTFLAG
02 CLKSOURCE : { 0 = EXT; 1 = CPU }
01 TICKINT
00 ENABLE
}
RVR @ 0x14 : reg {
23 0 VALUE
}
CVR @ 0x18 : reg {
23 0 VALUE
}
CALIB @ 0x1c : reg {
-- 31 NOREF
-- 30 SKEW
23 00 TENMS
}
}
// Debug
CM_DEBUG @ 0xe000edf0 : block {
DHCSR @ 0x00 : reg {
0 C_DEBUGEN
}
}