* Patch by Ronen Shitrit, 10 Dec 2003:
  Add support for the Marvell DB64360 / DB64460 development boards

* Patch by Detlev Zundel, 10 Dec 2003:
  fix dependency problem in examples/Makefile
diff --git a/cpu/74xx_7xx/cpu.c b/cpu/74xx_7xx/cpu.c
index 30a2091..629ed66 100644
--- a/cpu/74xx_7xx/cpu.c
+++ b/cpu/74xx_7xx/cpu.c
@@ -79,6 +79,10 @@
 		type = CPU_750FX;
 		break;
 
+	case 0x7002:
+		type = CPU_750GX;
+		break;
+
 	case 0x800C:
 		type = CPU_7410;
 		break;
@@ -87,6 +91,14 @@
 		type = CPU_7450;
 		break;
 
+	case 0x8001:
+		type = CPU_7455;
+		break;
+
+	case 0x8002:
+		type = CPU_7457;
+		break;
+
 	default:
 		break;
 	}
@@ -124,6 +136,10 @@
 		str = "750FX";
 		break;
 
+	case CPU_750GX:
+		str = "750GX";
+		break;
+
 	case CPU_755:
 		str = "755";
 		break;
@@ -140,6 +156,14 @@
 		str = "MPC7450";
 		break;
 
+	case CPU_7455:
+		str = "MPC7455";
+		break;
+
+	case CPU_7457:
+		str = "MPC7457";
+		break;
+
 	default:
 		printf("Unknown CPU -- PVR: 0x%08x\n", pvr);
 		return -1;
diff --git a/cpu/74xx_7xx/cpu_init.c b/cpu/74xx_7xx/cpu_init.c
index 2843e26..93f180f 100644
--- a/cpu/74xx_7xx/cpu_init.c
+++ b/cpu/74xx_7xx/cpu_init.c
@@ -39,9 +39,16 @@
 void
 cpu_init_f (void)
 {
-	if (get_cpu_type() == CPU_7450) {
+	switch (get_cpu_type()) {
+	case CPU_7450:
+	case CPU_7455:
+	case CPU_7457:
 		/* enable the timebase bit in HID0 */
 		set_hid0(get_hid0() | 0x4000000);
+		break;
+	default:
+		/* do nothing */
+		break;
 	}
 }
 
diff --git a/cpu/74xx_7xx/speed.c b/cpu/74xx_7xx/speed.c
index 12bdf37..f94ff78 100644
--- a/cpu/74xx_7xx/speed.c
+++ b/cpu/74xx_7xx/speed.c
@@ -12,7 +12,7 @@
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
@@ -49,29 +49,29 @@
 };
 
 static const int hid1_fx_multipliers_x_10[] = {
-	00,     /* 0000 - off */
-	00,     /* 0001 - off */
-	10,     /* 0010 - bypass */
-	10,     /* 0011 - bypass */
-	20,     /* 0100 - 2x */
-	25,     /* 0101 - 2.5x */
-	30,     /* 0110 - 3x */
-	35,     /* 0111 - 3.5x */
-	40,     /* 1000 - 4x */
-	45,     /* 1001 - 4.5x */
-	50,     /* 1010 - 5x */
-	55,     /* 1011 - 5.5x */
-	60,     /* 1100 - 6x */
-	65,     /* 1101 - 6.5x */
-	70,     /* 1110 - 7x */
-	75,     /* 1111 - 7.5 */
-	80,     /* 10000 - 8x */
-	85,     /* 10001 - 8.5x */
-	90,     /* 10010 - 9x */
-	95,     /* 10011 - 9.5x */
-	100,    /* 10100 - 10x */
-	110,    /* 10101 - 11x */
-	120,    /* 10110 - 12x */
+	00,	/* 0000 - off */
+	00,	/* 0001 - off */
+	10,	/* 0010 - bypass */
+	10,	/* 0011 - bypass */
+	20,	/* 0100 - 2x */
+	25,	/* 0101 - 2.5x */
+	30,	/* 0110 - 3x */
+	35,	/* 0111 - 3.5x */
+	40,	/* 1000 - 4x */
+	45,	/* 1001 - 4.5x */
+	50,	/* 1010 - 5x */
+	55,	/* 1011 - 5.5x */
+	60,	/* 1100 - 6x */
+	65,	/* 1101 - 6.5x */
+	70,	/* 1110 - 7x */
+	75,	/* 1111 - 7.5 */
+	80,	/* 10000 - 8x */
+	85,	/* 10001 - 8.5x */
+	90,	/* 10010 - 9x */
+	95,	/* 10011 - 9.5x */
+	100,	/* 10100 - 10x */
+	110,	/* 10101 - 11x */
+	120,	/* 10110 - 12x */
 };
 
 
@@ -86,13 +86,48 @@
 int get_clocks (void)
 {
 	DECLARE_GLOBAL_DATA_PTR;
-#ifdef CONFIG_750FX
-	ulong clock = CFG_BUS_CLK * \
-		      hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10;
-#else
-	ulong clock = CFG_BUS_CLK * \
-		      hid1_multipliers_x_10[get_hid1 () >> 28] / 10;
-#endif
+	ulong clock = 0;
+
+	/* calculate the clock frequency based upon the CPU type */
+	switch (get_cpu_type()) {
+	case CPU_7455:
+	case CPU_7457:
+		/*
+		 * It is assumed that the PLL_EXT line is zero.
+		 * Make sure division is done before multiplication to prevent 32-bit
+		 * arithmetic overflows which will cause a negative number
+		 */
+		clock = (CFG_BUS_CLK / 10) * hid1_multipliers_x_10[(get_hid1 () >> 13) & 0xF];
+		break;
+
+	case CPU_750GX:
+	case CPU_750FX:
+		clock = CFG_BUS_CLK * hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10;
+		break;
+
+	case CPU_7450:
+	case CPU_740:
+	case CPU_740P:
+	case CPU_745:
+	case CPU_750CX:
+	case CPU_750:
+	case CPU_750P:
+	case CPU_755:
+	case CPU_7400:
+	case CPU_7410:
+		/*
+		 * Make sure division is done before multiplication to prevent 32-bit
+		 * arithmetic overflows which will cause a negative number
+		 */
+		clock = (CFG_BUS_CLK / 10) * hid1_multipliers_x_10[get_hid1 () >> 28];
+		break;
+
+	case CPU_UNKNOWN:
+	       printf ("get_gclk_freq(): unknown CPU type\n");
+	       clock = 0;
+	       return (1);
+	}
+
 	gd->cpu_clk = clock;
 	gd->bus_clk = CFG_BUS_CLK;
 
@@ -100,12 +135,3 @@
 }
 
 /* ------------------------------------------------------------------------- */
-
-#if 0	/* disabled XXX - use global data instead */
-ulong get_bus_freq (ulong gclk_freq)
-{
-	return CFG_BUS_CLK;
-}
-#endif /* 0 */
-
-/* ------------------------------------------------------------------------- */
diff --git a/cpu/74xx_7xx/start.S b/cpu/74xx_7xx/start.S
index 7d7a493..e8854f0 100644
--- a/cpu/74xx_7xx/start.S
+++ b/cpu/74xx_7xx/start.S
@@ -42,7 +42,10 @@
 #include <asm/cache.h>
 #include <asm/mmu.h>
 
+#if !defined(CONFIG_DB64360) && \
+    !defined(CONFIG_DB64460)
 #include <galileo/gt64260R.h>
+#endif
 
 #ifndef  CONFIG_IDENT_STRING
 #define  CONFIG_IDENT_STRING ""
@@ -749,7 +752,9 @@
 	bne	5b
 6:
 	mr	r3, r10		/* Destination Address		*/
-#ifdef CONFIG_AMIGAONEG3SE
+#if defined(CONFIG_AMIGAONEG3SE) || \
+    defined(CONFIG_DB64360)	 || \
+    defined(CONFIG_DB64460)
 	mr	r4, r9		/* Use RAM copy of the global data */
 #endif
 	bl	after_reloc
diff --git a/cpu/mpc5xx/spi.c b/cpu/mpc5xx/spi.c
index 797d0c9..81c9ddb 100644
--- a/cpu/mpc5xx/spi.c
+++ b/cpu/mpc5xx/spi.c
@@ -354,8 +354,6 @@
 	return (len);
 }
 
-
-
 /****************************************************************************
  *  Function:    spi_xfer
  **************************************************************************** */
@@ -412,5 +410,3 @@
 }
 
 #endif	/* CONFIG_SPI  */
-
-
diff --git a/cpu/mpc5xx/start.S b/cpu/mpc5xx/start.S
index b56be2f..087435e 100644
--- a/cpu/mpc5xx/start.S
+++ b/cpu/mpc5xx/start.S
@@ -601,5 +601,3 @@
 	nop
 	blr
 #endif
-
-