summaryrefslogtreecommitdiffstats
path: root/bsps/m68k/mrm332
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/m68k/mrm332')
-rw-r--r--bsps/m68k/mrm332/headers.am7
-rw-r--r--bsps/m68k/mrm332/include/bsp.h90
-rw-r--r--bsps/m68k/mrm332/include/mrm332.h71
-rw-r--r--bsps/m68k/mrm332/include/tm27.h1
4 files changed, 169 insertions, 0 deletions
diff --git a/bsps/m68k/mrm332/headers.am b/bsps/m68k/mrm332/headers.am
new file mode 100644
index 0000000000..84ad4ec522
--- /dev/null
+++ b/bsps/m68k/mrm332/headers.am
@@ -0,0 +1,7 @@
+## This file was generated by "./boostrap -H".
+
+include_HEADERS =
+include_HEADERS += ../../../../../../bsps/m68k/mrm332/include/bsp.h
+include_HEADERS += include/bspopts.h
+include_HEADERS += ../../../../../../bsps/m68k/mrm332/include/mrm332.h
+include_HEADERS += ../../../../../../bsps/m68k/mrm332/include/tm27.h
diff --git a/bsps/m68k/mrm332/include/bsp.h b/bsps/m68k/mrm332/include/bsp.h
new file mode 100644
index 0000000000..6d4f7b8eb2
--- /dev/null
+++ b/bsps/m68k/mrm332/include/bsp.h
@@ -0,0 +1,90 @@
+/* bsp.h
+ *
+ * This include file contains all mrm board IO definitions.
+ */
+
+/*
+ * COPYRIGHT (c) 1989-2009.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef LIBBSP_M68K_MRM332_BSP_H
+#define LIBBSP_M68K_MRM332_BSP_H
+
+#include <bspopts.h>
+#include <bsp/default-initial-extension.h>
+
+#include <rtems.h>
+#include <rtems/bspIo.h>
+#include <mrm332.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CONSOLE_SCI
+
+/* externals */
+
+extern char _etext[];
+extern char _copy_start[];
+extern char _edata[];
+extern char _clear_start[];
+extern char end[];
+extern bool _copy_data_from_rom;
+
+/* constants */
+
+#ifdef __START_C__
+#define STACK_SIZE "#0x800"
+#else
+#define STACK_SIZE 0x800
+#endif
+
+/* macros */
+
+#define RAW_PUTS(str) \
+ { register char *ptr = str; \
+ while (*ptr) SCI_output_char(*ptr++); \
+ }
+
+#define RAW_PUTI(n) { \
+ register int i, j; \
+ \
+ RAW_PUTS("0x"); \
+ for (i=28;i>=0;i -= 4) { \
+ j = (n>>i) & 0xf; \
+ SCI_output_char( (j>9 ? j-10+'a' : j+'0') ); \
+ } \
+ }
+
+/* miscellaneous stuff assumed to exist */
+
+extern rtems_isr_entry M68Kvec[]; /* vector table address */
+
+extern int stack_size;
+extern int stack_start;
+
+/* functions */
+
+rtems_isr_entry set_vector(
+ rtems_isr_entry handler,
+ rtems_vector_number vector,
+ int type
+);
+
+void Spurious_Initialize(void);
+
+void _UART_flush(void);
+
+void outbyte(char);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsps/m68k/mrm332/include/mrm332.h b/bsps/m68k/mrm332/include/mrm332.h
new file mode 100644
index 0000000000..1b8672752d
--- /dev/null
+++ b/bsps/m68k/mrm332/include/mrm332.h
@@ -0,0 +1,71 @@
+/* mrm332.h
+ */
+
+#ifndef _MRM332_H_
+#define _MRM332_H_
+
+/* SIM_MM (SIM Module Mapping) determines the location of the control
+ register block. When MM=0, register addresses range fom 0x7ff000 to
+ 0x7FFFFF. When MM=1, register addresses range from 0xfff000 to
+ 0xffffff. */
+#define SIM_MM 1
+
+/* Interrupt related definitions */
+#define SIM_IARB 15
+#define QSM_IARB 10
+
+#define MRM_PIV 64
+#define ISRL_PIT 4 /* zero disables PIT */
+
+#define EFI_QIVR 66 /* 66=>SCI and 67=>QSPI interrupt */
+#define ISRL_QSPI 0
+
+#define EFI_SPINT 24 /* spurious interrupt */
+#define EFI_INT1 25 /* CTS interrupt */
+#define ISRL_SCI 6
+
+/* System Clock definitions */
+#define XTAL 32768.0 /* crystal frequency in Hz */
+
+/* Specify the CPU frequency. Do not specify a faster clock than your */
+/* CPU is rated for! */
+#if 0
+/* Default MRM clock rate (8.388688 MHz) set by CPU32: */
+#define MRM_W 0 /* system clock parameters */
+#define MRM_X 0
+#define MRM_Y 0x3f
+#endif
+
+#if 0
+/* 16.77722 MHz: */
+#define MRM_W 1 /* system clock parameters */
+#define MRM_X 1
+#define MRM_Y 0x0f
+#endif
+
+#if 1
+/* 25.16582 MHz: */
+#define MRM_W 1 /* system clock parameters */
+#define MRM_X 1
+#define MRM_Y 0x17
+#define SET_EDIV
+#endif
+
+#define SYS_CLOCK (XTAL*4.0*(MRM_Y+1)*(1 << (2*MRM_W+MRM_X)))
+#define SCI_BAUD 19200 /* RS232 Baud Rate */
+
+/* macros/functions */
+
+#ifndef ASM
+
+/*
+ * This prototype really should have the noreturn attribute but
+ * that causes a warning. Not sure how to fix that.
+ */
+/* static void reboot(void) __attribute__ ((noreturn)); */
+static void reboot(void);
+__inline__ static void reboot() {__asm__ ("trap #15; .word 0x0063");}
+
+#endif /* ASM */
+
+#endif /* _MRM_H_ */
diff --git a/bsps/m68k/mrm332/include/tm27.h b/bsps/m68k/mrm332/include/tm27.h
new file mode 100644
index 0000000000..0dfa7bf628
--- /dev/null
+++ b/bsps/m68k/mrm332/include/tm27.h
@@ -0,0 +1 @@
+#include <rtems/tm27-default.h>