summaryrefslogtreecommitdiff
path: root/rtl/freertos/arm/cortexm0.pp
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/freertos/arm/cortexm0.pp')
-rw-r--r--rtl/freertos/arm/cortexm0.pp78
1 files changed, 78 insertions, 0 deletions
diff --git a/rtl/freertos/arm/cortexm0.pp b/rtl/freertos/arm/cortexm0.pp
new file mode 100644
index 0000000000..dfa5a44f51
--- /dev/null
+++ b/rtl/freertos/arm/cortexm0.pp
@@ -0,0 +1,78 @@
+{
+ System register definitions and utility code for Cortex-M0
+ Created by Jeppe Johansen 2012 - jeppe@j-software.dk
+ Modified for M0 by Michael Ring 2013 - mail@michael-ring.org
+}
+unit cortexm0;
+
+interface
+
+{$PACKRECORDS 2}
+const
+ SCS_BASE = $E000E000;
+ SysTick_BASE = SCS_BASE+$0010;
+ NVIC_BASE = SCS_BASE+$0100;
+ SCB_BASE = SCS_BASE+$0D00;
+
+ DWT_BASE = $E0001000;
+ FP_BASE = $E0002000;
+ ITM_BASE = $E0000000;
+ TPIU_BASE = $E0040000;
+ ETM_BASE = $E0041000;
+
+type
+
+ TNVICRegisters = record
+ ISER : dword;
+ RESERVED0 : array[0..30] of dword;
+ ICER : dword;
+ RSERVED1 : array[0..30] of dword;
+ ISPR : dword;
+ RESERVED2 : array[0..30] of dword;
+ ICPR : dword;
+ RESERVED3 : array[0..30] of dword;
+ RESERVED4 : array[0..63] of dword;
+ IPR : array[0..7] of dword;
+ end;
+
+ TSCBRegisters = record
+ CPUID, {!< CPU ID Base Register }
+ ICSR, {!< Interrupt Control State Register }
+ RESERVED0,
+ AIRCR, {!< Application Interrupt / Reset Control Register }
+ SCR, {!< System Control Register }
+ CCR: dword; {!< Configuration Control Register }
+ RESERVED1 : dword;
+ SHP: array[0..1] of dword; {!< System Handlers Priority Registers (4-7, 8-11, 12-15) }
+ end;
+
+ TSysTickRegisters = record
+ Ctrl,
+ Load,
+ Val,
+ Calib: dword;
+ end;
+
+ TCoreDebugRegisters = record
+ DHCSR,
+ DCRSR,
+ DCRDR,
+ DEMCR: longword;
+ end;
+
+
+var
+ // System Control
+ InterruptControlType: longword absolute (SCS_BASE+$0004);
+ SCB: TSCBRegisters absolute (SCS_BASE+$0D00);
+ SysTick: TSysTickRegisters absolute (SCS_BASE+$0010);
+ NVIC: TNVICRegisters absolute (SCS_BASE+$0100);
+ SoftwareTriggerInterrupt: longword absolute (SCS_BASE+$0000);
+
+ // Core Debug
+ CoreDebug: TCoreDebugRegisters absolute (SCS_BASE+$0DF0);
+
+
+implementation
+
+end.