Index: c/src/exec/score/cpu/sh/rtems/score/sh.h
===================================================================
--- c/src/exec/score/cpu/sh/rtems/score/sh.h	(revision e90c5a1e768b30909d6346acb49b16af6f10c387)
+++ c/src/exec/score/cpu/sh/rtems/score/sh.h	(revision 7046cddb1b07083d23f9f62592790f2f9174a470)
@@ -149,29 +149,4 @@
 #define CPU_swap_u16( value ) sh_swap_u16( value )
 
-/*
- *  Simple spin delay in microsecond units for device drivers.
- *  This is very dependent on the clock speed of the target.
- *
- *  Since we don't have a real time clock, this is a very rough
- *  approximation, assuming that each cycle of the delay loop takes
- *  approx. 4 machine cycles.
- *
- *  e.g.: MHZ = 20 =>     5e-8 secs per instruction
- *                 => 4 * 5e-8 secs per delay loop
- */
-
-#define sh_delay( microseconds ) \
-{ register unsigned int _delay = (microseconds) * (MHZ / 4 ); \
-  asm volatile ( \
-"0:	add  #-1,%0\n \
-	nop\n \
-	cmp/pl %0\n \
-	bt 0b\
-	nop" \
-    :: "r" (_delay) );  \
-}
-
-#define CPU_delay( microseconds ) sh_delay( microseconds )
-
 extern unsigned int sh_set_irq_priority( 
   unsigned int irq, 
Index: c/src/lib/libbsp/sh/gensh1/include/bsp.h
===================================================================
--- c/src/lib/libbsp/sh/gensh1/include/bsp.h	(revision e90c5a1e768b30909d6346acb49b16af6f10c387)
+++ c/src/lib/libbsp/sh/gensh1/include/bsp.h	(revision 7046cddb1b07083d23f9f62592790f2f9174a470)
@@ -69,6 +69,37 @@
 
 /* Constants */
+#ifndef MHZ
+#error Missing MHZ
+#endif
 
-#define MHZ 20
+/*
+ *  Simple spin delay in microsecond units for device drivers.
+ *  This is very dependent on the clock speed of the target.
+ *
+ *  Since we don't have a real time clock, this is a very rough
+ *  approximation, assuming that each cycle of the delay loop takes
+ *  approx. 4 machine cycles.
+ *
+ *  e.g.: MHZ = 20 =>     5e-8 secs per instruction
+ *                 => 4 * 5e-8 secs per delay loop
+ */
+
+#define delay( microseconds ) \
+{ register unsigned int _delay = (microseconds) * (MHZ / 4 ); \
+  asm volatile ( \
+"0:	add  #-1,%0\n \
+	nop\n \
+	cmp/pl %0\n \
+	bt 0b\
+	nop" \
+    :: "r" (_delay) );  \
+}
+
+/*
+ * For backward compatibility only.
+ * Do not rely on them being present in future
+ */
+#define CPU_delay( microseconds ) delay( microseconds )
+#define sh_deley( microseconds ) delay( microseconds )
 
 /*
Index: c/src/lib/libbsp/sh/gensh1/startup/Makefile.in
===================================================================
--- c/src/lib/libbsp/sh/gensh1/startup/Makefile.in	(revision e90c5a1e768b30909d6346acb49b16af6f10c387)
+++ c/src/lib/libbsp/sh/gensh1/startup/Makefile.in	(revision 7046cddb1b07083d23f9f62592790f2f9174a470)
@@ -48,5 +48,5 @@
 
 DEFINES +=
-CPPFLAGS +=
+CPPFLAGS += $(BSP_CPPFLAGS)
 CFLAGS +=
 
Index: c/src/lib/libcpu/sh/sh7032/clock/Makefile.in
===================================================================
--- c/src/lib/libcpu/sh/sh7032/clock/Makefile.in	(revision e90c5a1e768b30909d6346acb49b16af6f10c387)
+++ c/src/lib/libcpu/sh/sh7032/clock/Makefile.in	(revision 7046cddb1b07083d23f9f62592790f2f9174a470)
@@ -41,5 +41,5 @@
 
 DEFINES +=
-CPPFLAGS +=
+CPPFLAGS += -DMHZ=$(MHZ)
 CFLAGS += $(CFLAGS_OS_V)
 
Index: c/src/lib/libcpu/sh/sh7032/timer/Makefile.in
===================================================================
--- c/src/lib/libcpu/sh/sh7032/timer/Makefile.in	(revision e90c5a1e768b30909d6346acb49b16af6f10c387)
+++ c/src/lib/libcpu/sh/sh7032/timer/Makefile.in	(revision 7046cddb1b07083d23f9f62592790f2f9174a470)
@@ -41,5 +41,5 @@
 
 DEFINES +=
-CPPFLAGS +=
+CPPFLAGS += -DMHZ=$(MHZ)
 CFLAGS +=
 
Index: cpukit/score/cpu/sh/rtems/score/sh.h
===================================================================
--- cpukit/score/cpu/sh/rtems/score/sh.h	(revision e90c5a1e768b30909d6346acb49b16af6f10c387)
+++ cpukit/score/cpu/sh/rtems/score/sh.h	(revision 7046cddb1b07083d23f9f62592790f2f9174a470)
@@ -149,29 +149,4 @@
 #define CPU_swap_u16( value ) sh_swap_u16( value )
 
-/*
- *  Simple spin delay in microsecond units for device drivers.
- *  This is very dependent on the clock speed of the target.
- *
- *  Since we don't have a real time clock, this is a very rough
- *  approximation, assuming that each cycle of the delay loop takes
- *  approx. 4 machine cycles.
- *
- *  e.g.: MHZ = 20 =>     5e-8 secs per instruction
- *                 => 4 * 5e-8 secs per delay loop
- */
-
-#define sh_delay( microseconds ) \
-{ register unsigned int _delay = (microseconds) * (MHZ / 4 ); \
-  asm volatile ( \
-"0:	add  #-1,%0\n \
-	nop\n \
-	cmp/pl %0\n \
-	bt 0b\
-	nop" \
-    :: "r" (_delay) );  \
-}
-
-#define CPU_delay( microseconds ) sh_delay( microseconds )
-
 extern unsigned int sh_set_irq_priority( 
   unsigned int irq, 
Index: make/custom/gensh1.cfg
===================================================================
--- make/custom/gensh1.cfg	(revision e90c5a1e768b30909d6346acb49b16af6f10c387)
+++ make/custom/gensh1.cfg	(revision 7046cddb1b07083d23f9f62592790f2f9174a470)
@@ -9,5 +9,5 @@
 #
 
-MHZ:=20
+MHZ=20
 
 include $(RTEMS_ROOT)/make/custom/default.cfg
@@ -19,9 +19,16 @@
 RTEMS_BSP_FAMILY=gensh1
 
+# BSP specific preprocessor flags.
+# These should only be used in BSP dependent directories.
+BSP_CPPFLAGS=-DMHZ=$(MHZ)
+
 #
 #  This contains the compiler options necessary to select the CPU model
 #  and (hopefully) optimize for it.
 #
-CPU_CFLAGS=-m1
+#  HACK: We have to append BSP_CPPFLAGS to CPU_CFLAGS, because
+#        per BSP and per CPU CPPFLAGS are not (yet?) supported
+CPU_CFLAGS=-m1 $(BSP_CPPFLAGS)
+# CPU_CFLAGS=-m1
 
 # debug flags: typically none, but we use -O1 as it produces better code
@@ -31,4 +38,6 @@
 # -O4 is ok for RTEMS
 CFLAGS_OPTIMIZE_V = -O4 
+
+CPPFLAGS+=$(BSP_CPPFLAGS)
 
 #  This section makes the target dependent options file.
