Update make target for ARM supported boards.
Use lowlevel_init() instead of platformsetup() [rename].
Patch by Peter Pearse, 06 Oct 2005
diff --git a/board/integratorap/Makefile b/board/integratorap/Makefile
index cf76ded..358df62 100644
--- a/board/integratorap/Makefile
+++ b/board/integratorap/Makefile
@@ -30,7 +30,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= integratorap.o flash.o
-SOBJS	:= platform.o memsetup.o
+SOBJS	:= lowlevel_init.o memsetup.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/integratorap/integratorap.c b/board/integratorap/integratorap.c
index 4baf39a..d4f61d6 100644
--- a/board/integratorap/integratorap.c
+++ b/board/integratorap/integratorap.c
@@ -649,8 +649,3 @@
 {
 	return CFG_HZ_CLOCK/div_clock;
 }
-
-/* The Integrator/AP timer1 is clocked at 24MHz
- * can be divided by 16 or 256
- * and is a 16-bit counter
- */
diff --git a/board/integratorap/platform.S b/board/integratorap/lowlevel_init.S
similarity index 97%
rename from board/integratorap/platform.S
rename to board/integratorap/lowlevel_init.S
index b208adb..1aacbf4 100644
--- a/board/integratorap/platform.S
+++ b/board/integratorap/lowlevel_init.S
@@ -37,9 +37,9 @@
 reset_failed:
 	b	reset_failed
 
-/* set up the platform, once the cpu has been initialized */
-.globl platformsetup
-platformsetup:
+/* Set up the platform, once the cpu has been initialized */
+.globl lowlevel_init
+lowlevel_init:
 	/* If U-Boot has been run after the ARM boot monitor
 	 * then all the necessary actions have been done
 	 * otherwise we are running from user flash mapped to 0x00000000
diff --git a/board/integratorap/split_by_variant.sh b/board/integratorap/split_by_variant.sh
new file mode 100644
index 0000000..23fc7b3
--- /dev/null
+++ b/board/integratorap/split_by_variant.sh
@@ -0,0 +1,106 @@
+#!/bin/sh
+# ---------------------------------------------------------
+# Set the platform defines
+# ---------------------------------------------------------
+echo -n "/* Integrator configuration implied "   > tmp.fil
+echo    " by Makefile target */"   		>> tmp.fil
+echo -n "#define CONFIG_INTEGRATOR"  		>> tmp.fil
+echo	 " /* Integrator board */"  		>> tmp.fil
+echo -n "#define CONFIG_ARCH_INTEGRATOR"	>> tmp.fil
+echo     " 1 /* Integrator/AP   */"  		>> tmp.fil
+# ---------------------------------------------------------
+#  Set the core module defines according to Core Module
+# ---------------------------------------------------------
+CC=$(CROSS_COMPILE)gcc
+cpu="arm_intcm"
+
+if [ "$2" == "" ]
+then
+	echo "$0:: No preprocessor parameter - using $(CROSS_COMPILE)gcc"
+else
+	CC=$2
+fi
+
+
+if [ "$1" == "" ]
+then
+	echo "$0:: No parameters - using $(CROSS_COMPILE)gcc arm_intcm"
+else
+	case "$1" in
+	ap7_config		|	\
+	ap966_config		|	\
+	ap922_config		|	\
+	integratorap_config	|	\
+	ap_config)
+	cpu="arm_intcm"
+	;;
+
+	ap720t_config)
+	cpu="arm720t"
+	echo -n "#define CONFIG_CM720T"		>> tmp.fil
+	echo    " 1 /* CPU core is ARM720T */ "	>> tmp.fil
+	;;
+
+	ap922_XA10_config)
+	echo -n "#define CONFIG_CM922T_XA10" 		>> tmp.fil
+	echo    " 1 /* CPU core is ARM922T_XA10 */" 	>> tmp.fil
+	cpu="arm_intcm"
+	;;
+
+	ap920t_config)
+	cpu="arm920t"
+	echo -n "#define CONFIG_CM920T" 		>> tmp.fil
+	echo    " 1 /* CPU core is ARM920T */"		>> tmp.fil
+	;;
+
+	ap926ejs_config)
+	cpu="arm926ejs"
+	echo -n "#define CONFIG_CM926EJ_S"		>> tmp.fil
+	echo    " 1 /* CPU core is ARM926EJ-S */ "	>> tmp.fil
+	;;
+
+
+	ap946es_config)
+	cpu="arm946es"
+	echo -n "#define CONFIG_CM946E_S"		>> tmp.fil
+	echo    " 1 /* CPU core is ARM946E-S */ "	>> tmp.fil
+	;;
+
+	*)
+	echo "$0:: Unrecognised target - using arm_intcm"
+	cpu="arm_intcm"
+	;;
+
+	esac
+
+fi
+
+if [ "$cpu" == "arm_intcm" ]
+then
+	echo "/* Core module undefined/not ported */"	>> tmp.fil
+	echo "#define CONFIG_ARM_INTCM 1"  		>> tmp.fil
+	echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM"	>> tmp.fil
+	echo -n "  /* CM may not have " 		>> tmp.fil
+	echo    "multiple SSRAM mapping */"  		>> tmp.fil
+	echo -n "#undef CONFIG_CM_SPD_DETECT " 		>> tmp.fil
+	echo -n " /* CM may not support SPD " 		>> tmp.fil
+	echo    "query */"    				>> tmp.fil
+	echo -n "#undef CONFIG_CM_REMAP  " 		>> tmp.fil
+	echo -n " /* CM may not support "  		>> tmp.fil
+	echo    "remapping */"   			>> tmp.fil
+	echo -n "#undef CONFIG_CM_INIT  " 		>> tmp.fil
+	echo -n " /* CM may not have  "  		>> tmp.fil
+	echo    "initialization reg */"  		>> tmp.fil
+	echo -n "#undef CONFIG_CM_TCRAM  " 		>> tmp.fil
+	echo    " /* CM may not have TCRAM */" 		>> tmp.fil
+fi
+mv tmp.fil ./include/config.h
+# ---------------------------------------------------------
+#  Ensure correct core object loaded first in U-Boot image
+# ---------------------------------------------------------
+$CC -E -P -C -D CPU_FILE=cpu/$cpu/start.o 		\
+-o board/integratorap/u-boot.lds board/integratorap/u-boot.lds.S
+# ---------------------------------------------------------
+# Complete the configuration
+# ---------------------------------------------------------
+./mkconfig -a integratorap arm $cpu integratorap;
diff --git a/board/integratorap/u-boot.lds b/board/integratorap/u-boot.lds.S
similarity index 88%
rename from board/integratorap/u-boot.lds
rename to board/integratorap/u-boot.lds.S
index cb6ee18..486b5da 100644
--- a/board/integratorap/u-boot.lds
+++ b/board/integratorap/u-boot.lds.S
@@ -20,6 +20,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  * MA 02111-1307 USA
  */
+/* Preprocessed during configuration to emsure the core module processor code,
+   from CPU_FILE, is placed at the start of the image */
 
 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
 OUTPUT_ARCH(arm)
@@ -30,7 +32,7 @@
 	. = ALIGN(4);
 	.text	:
 	{
-	  cpu/arm926ejs/start.o	(.text)
+	  CPU_FILE (.text)
 	  *(.text)
 	}
 	.rodata : { *(.rodata) }
diff --git a/board/integratorcp/Makefile b/board/integratorcp/Makefile
index 71532d1..3d589fc 100644
--- a/board/integratorcp/Makefile
+++ b/board/integratorcp/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= integratorcp.o flash.o
-SOBJS	:= platform.o memsetup.o
+SOBJS	:= lowlevel_init.o memsetup.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/integratorcp/platform.S b/board/integratorcp/lowlevel_init.S
similarity index 97%
rename from board/integratorcp/platform.S
rename to board/integratorcp/lowlevel_init.S
index 612a2c4..e679215 100644
--- a/board/integratorcp/platform.S
+++ b/board/integratorcp/lowlevel_init.S
@@ -37,9 +37,9 @@
 reset_failed:
 	b	reset_failed
 
-/* set up the platform, once the cpu has been initialized */
-.globl platformsetup
-platformsetup:
+/* Set up the platform, once the cpu has been initialized */
+.globl lowlevel_init
+lowlevel_init:
 	/* If U-Boot has been run after the ARM boot monitor
 	 * then all the necessary actions have been done
 	 * otherwise we are running from user flash mapped to 0x00000000
diff --git a/board/integratorcp/split_by_variant.sh b/board/integratorcp/split_by_variant.sh
new file mode 100644
index 0000000..3f63633
--- /dev/null
+++ b/board/integratorcp/split_by_variant.sh
@@ -0,0 +1,106 @@
+#!/bin/sh
+# ---------------------------------------------------------
+# Set the platform defines
+# ---------------------------------------------------------
+echo -n "/* Integrator configuration implied "   > tmp.fil
+echo    " by Makefile target */"   		>> tmp.fil
+echo -n "#define CONFIG_INTEGRATOR"  		>> tmp.fil
+echo	 " /* Integrator board */"  		>> tmp.fil
+echo -n "#define CONFIG_ARCH_CINTEGRATOR"	>> tmp.fil
+echo     " 1 /* Integrator/CP   */"  		>> tmp.fil
+# ---------------------------------------------------------
+#  Set the core module defines according to Core Module
+# ---------------------------------------------------------
+CC=$(CROSS_COMPILE)gcc
+cpu="arm_intcm"
+
+if [ "$2" == "" ]
+then
+	echo "$0:: No preprocessor parameter - using $(CROSS_COMPILE)gcc"
+else
+	CC=$2
+fi
+
+
+if [ "$1" == "" ]
+then
+	echo "$0:: No parameters - using $(CROSS_COMPILE)gcc arm_intcm"
+else
+	case "$1" in
+	cp966_config		|	\
+	cp922_config		|	\
+	cp1026_config		|	\
+	integratorcp_config	|	\
+	cp_config)
+	cpu="arm_intcm"
+	;;
+
+	cp922_XA10_config)
+	echo -n "#define CONFIG_CM922T_XA10" 		>> tmp.fil
+	echo    " 1 /* CPU core is ARM922T_XA10 */" 	>> tmp.fil
+	cpu="arm_intcm"
+	;;
+
+	cp920t_config)
+	cpu="arm920t"
+	echo -n "#define CONFIG_CM920T" 		>> tmp.fil
+	echo    " 1 /* CPU core is ARM920T */"		>> tmp.fil
+	;;
+
+	cp926ejs_config)
+	cpu="arm926ejs"
+	echo -n "#define CONFIG_CM926EJ_S"		>> tmp.fil
+	echo    " 1 /* CPU core is ARM926EJ-S */ "	>> tmp.fil
+	;;
+
+
+	cp946es_config)
+	cpu="arm946es"
+	echo -n "#define CONFIG_CM946E_S"		>> tmp.fil
+	echo    " 1 /* CPU core is ARM946E-S */ "	>> tmp.fil
+	;;
+
+	cp1136_config)
+	cpu="arm1136"
+	echo -n "#define CONFIG_CM1136EJF_S"		>> tmp.fil
+	echo    " 1 /* CPU core is ARM1136JF-S */ "	>> tmp.fil
+	;;
+
+	*)
+	echo "$0:: Unrecognised target - using arm_intcm"
+	cpu="arm_intcm"
+	;;
+
+	esac
+
+fi
+
+if [ "$cpu" == "arm_intcm" ]
+then
+	echo "/* Core module undefined/not ported */"	>> tmp.fil
+	echo "#define CONFIG_ARM_INTCM 1"  		>> tmp.fil
+	echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM"	>> tmp.fil
+	echo -n "  /* CM may not have " 		>> tmp.fil
+	echo    "multiple SSRAM mapping */"  		>> tmp.fil
+	echo -n "#undef CONFIG_CM_SPD_DETECT " 		>> tmp.fil
+	echo -n " /* CM may not support SPD " 		>> tmp.fil
+	echo    "query */"    				>> tmp.fil
+	echo -n "#undef CONFIG_CM_REMAP  " 		>> tmp.fil
+	echo -n " /* CM may not support "  		>> tmp.fil
+	echo    "remapping */"   			>> tmp.fil
+	echo -n "#undef CONFIG_CM_INIT  " 		>> tmp.fil
+	echo -n " /* CM may not have  "  		>> tmp.fil
+	echo    "initialization reg */"  		>> tmp.fil
+	echo -n "#undef CONFIG_CM_TCRAM  " 		>> tmp.fil
+	echo    " /* CM may not have TCRAM */" 		>> tmp.fil
+fi
+mv tmp.fil ./include/config.h
+# ---------------------------------------------------------
+#  Ensure correct core object loaded first in U-Boot image
+# ---------------------------------------------------------
+$CC -E -P -C -D CPU_FILE=cpu/$cpu/start.o 		\
+-o board/integratorcp/u-boot.lds board/integratorcp/u-boot.lds.S
+# ---------------------------------------------------------
+# Complete the configuration
+# ---------------------------------------------------------
+./mkconfig -a integratorcp arm $cpu integratorcp;
diff --git a/board/integratorcp/u-boot.lds b/board/integratorcp/u-boot.lds
deleted file mode 100644
index cb6ee18..0000000
--- a/board/integratorcp/u-boot.lds
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
-	. = 0x00000000;
-	. = ALIGN(4);
-	.text	:
-	{
-	  cpu/arm926ejs/start.o	(.text)
-	  *(.text)
-	}
-	.rodata : { *(.rodata) }
-	. = ALIGN(4);
-	.data : { *(.data) }
-	. = ALIGN(4);
-	.got : { *(.got) }
-
-	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
-
-	. = ALIGN(4);
-	__bss_start = .;
-	.bss : { *(.bss) }
-	_end = .;
-}
diff --git a/board/integratorap/u-boot.lds b/board/integratorcp/u-boot.lds.S
similarity index 88%
copy from board/integratorap/u-boot.lds
copy to board/integratorcp/u-boot.lds.S
index cb6ee18..486b5da 100644
--- a/board/integratorap/u-boot.lds
+++ b/board/integratorcp/u-boot.lds.S
@@ -20,6 +20,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  * MA 02111-1307 USA
  */
+/* Preprocessed during configuration to emsure the core module processor code,
+   from CPU_FILE, is placed at the start of the image */
 
 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
 OUTPUT_ARCH(arm)
@@ -30,7 +32,7 @@
 	. = ALIGN(4);
 	.text	:
 	{
-	  cpu/arm926ejs/start.o	(.text)
+	  CPU_FILE (.text)
 	  *(.text)
 	}
 	.rodata : { *(.rodata) }
diff --git a/board/ns9750dev/Makefile b/board/ns9750dev/Makefile
index d2718cc..fb4333c 100644
--- a/board/ns9750dev/Makefile
+++ b/board/ns9750dev/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= ns9750dev.o flash.o led.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $(OBJS) $(SOBJS)
diff --git a/board/ns9750dev/platform.S b/board/ns9750dev/lowlevel_init.S
similarity index 99%
rename from board/ns9750dev/platform.S
rename to board/ns9750dev/lowlevel_init.S
index afcad15..3a09786 100644
--- a/board/ns9750dev/platform.S
+++ b/board/ns9750dev/lowlevel_init.S
@@ -75,8 +75,8 @@
 	.word	0x00022000	@ for CAS2 latency
 
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 	/* U-Boot may be linked to RAM at 0x780000. But this code will run in
 	   flash from 0x0. But in order to enable RAM we have to disable the
diff --git a/board/omap1510inn/Makefile b/board/omap1510inn/Makefile
index bd6285c..902b24e 100644
--- a/board/omap1510inn/Makefile
+++ b/board/omap1510inn/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= omap1510innovator.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/omap1510inn/platform.S b/board/omap1510inn/lowlevel_init.S
similarity index 99%
rename from board/omap1510inn/platform.S
rename to board/omap1510inn/lowlevel_init.S
index 8045e84..1c68e5b 100644
--- a/board/omap1510inn/platform.S
+++ b/board/omap1510inn/lowlevel_init.S
@@ -39,8 +39,8 @@
 _TEXT_BASE:
 	.word	TEXT_BASE        /* sdram load addr from config.mk */
 
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 	/*
 	 * Configure 1510 pins functions to match our board.
diff --git a/board/omap1610inn/Makefile b/board/omap1610inn/Makefile
index 4a96b83..4560102 100644
--- a/board/omap1610inn/Makefile
+++ b/board/omap1610inn/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= omap1610innovator.o flash.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/omap1610inn/platform.S b/board/omap1610inn/lowlevel_init.S
similarity index 99%
rename from board/omap1610inn/platform.S
rename to board/omap1610inn/lowlevel_init.S
index d694f94..eaf1742 100644
--- a/board/omap1610inn/platform.S
+++ b/board/omap1610inn/lowlevel_init.S
@@ -37,8 +37,8 @@
 _TEXT_BASE:
 	.word	TEXT_BASE	/* sdram load addr from config.mk */
 
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 
 	/*------------------------------------------------------*
diff --git a/board/omap2420h4/Makefile b/board/omap2420h4/Makefile
index 38dec00..ed47868 100644
--- a/board/omap2420h4/Makefile
+++ b/board/omap2420h4/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= omap2420h4.o mem.o sys_info.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/omap2420h4/platform.S b/board/omap2420h4/lowlevel_init.S
similarity index 98%
rename from board/omap2420h4/platform.S
rename to board/omap2420h4/lowlevel_init.S
index 73ba462..9752fc4 100644
--- a/board/omap2420h4/platform.S
+++ b/board/omap2420h4/lowlevel_init.S
@@ -158,8 +158,8 @@
 pll_div_val:
     .word DPLL_VAL	/* DPLL setting (300MHz default) */
 
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 	ldr	sp,	SRAM_STACK
 	str	ip,	[sp]	/* stash old link register */
 	mov	ip,	lr	/* save link reg across call */
diff --git a/board/omap5912osk/Makefile b/board/omap5912osk/Makefile
index 6480466..4b56421 100644
--- a/board/omap5912osk/Makefile
+++ b/board/omap5912osk/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= omap5912osk.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/omap5912osk/platform.S b/board/omap5912osk/lowlevel_init.S
similarity index 99%
rename from board/omap5912osk/platform.S
rename to board/omap5912osk/lowlevel_init.S
index 33c7242..3b9633a 100644
--- a/board/omap5912osk/platform.S
+++ b/board/omap5912osk/lowlevel_init.S
@@ -38,8 +38,8 @@
 _TEXT_BASE:
 	.word	TEXT_BASE	/* sdram load addr from config.mk */
 
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 
 	/*------------------------------------------------------*
diff --git a/board/omap730p2/Makefile b/board/omap730p2/Makefile
index 1058508..29467ac 100644
--- a/board/omap730p2/Makefile
+++ b/board/omap730p2/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= omap730p2.o flash.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/omap730p2/platform.S b/board/omap730p2/lowlevel_init.S
similarity index 99%
rename from board/omap730p2/platform.S
rename to board/omap730p2/lowlevel_init.S
index f30c242..6c6f482 100644
--- a/board/omap730p2/platform.S
+++ b/board/omap730p2/lowlevel_init.S
@@ -43,8 +43,8 @@
 _TEXT_BASE:
 	.word	TEXT_BASE	/* sdram load addr from config.mk */
 
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 	/* Save callers address in r11 - r11 must never be modified */
 	mov r11, lr
 
diff --git a/board/sx1/Makefile b/board/sx1/Makefile
index 8cd02d1..8fbdf2a 100644
--- a/board/sx1/Makefile
+++ b/board/sx1/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= sx1.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/sx1/platform.S b/board/sx1/lowlevel_init.S
similarity index 99%
rename from board/sx1/platform.S
rename to board/sx1/lowlevel_init.S
index bd54df1..bdf812e 100644
--- a/board/sx1/platform.S
+++ b/board/sx1/lowlevel_init.S
@@ -39,8 +39,8 @@
 _TEXT_BASE:
 	.word	TEXT_BASE	 /* sdram load addr from config.mk */
 
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 	/*
 	 * Configure 1510 pins functions to match our board.
diff --git a/board/versatile/Makefile b/board/versatile/Makefile
index 42b6ed5..fbdc627 100644
--- a/board/versatile/Makefile
+++ b/board/versatile/Makefile
@@ -26,7 +26,7 @@
 LIB	= lib$(BOARD).a
 
 OBJS	:= versatile.o flash.o
-SOBJS	:= platform.o
+SOBJS	:= lowlevel_init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
 	$(AR) crv $@ $^
diff --git a/board/versatile/platform.S b/board/versatile/lowlevel_init.S
similarity index 90%
rename from board/versatile/platform.S
rename to board/versatile/lowlevel_init.S
index 68c3e8b..bdfce2d 100644
--- a/board/versatile/platform.S
+++ b/board/versatile/lowlevel_init.S
@@ -26,8 +26,9 @@
 #include <config.h>
 #include <version.h>
 
-.globl platformsetup
-platformsetup:
+/* Set up the platform, once the cpu has been initialized */
+.globl lowlevel_init
+lowlevel_init:
 
 	/* All done by Versatile's boot monitor! */
 	mov pc, lr
diff --git a/board/versatile/split_by_variant.sh b/board/versatile/split_by_variant.sh
new file mode 100644
index 0000000..b462b7e
--- /dev/null
+++ b/board/versatile/split_by_variant.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+# ---------------------------------------------------------
+#  Set the core module defines according to Core Module
+# ---------------------------------------------------------
+CC=$(CROSS_COMPILE)gcc
+config="versatilepb_config"
+
+if [ "$2" == "" ]
+then
+	echo "$0:: No preprocessor parameter - using $(CROSS_COMPILE)gcc"
+else
+	CC=$2
+fi
+
+
+# ---------------------------------------------------------
+# Set up the Versatile type define
+# ---------------------------------------------------------
+if [ "$1" == "" ]
+then
+	echo "$0:: No parameters - using $(CROSS_COMPILE)gcc versatilepb_config"
+
+else
+	case "$config" in
+	versatilepb_config	|	\
+	versatile_config)
+	echo "#define CONFIG_ARCH_VERSATILE_PB" > ./include/config.h
+	;;
+
+	versatileab_config)
+	echo "#define CONFIG_ARCH_VERSATILE_AB" > ./include/config.h
+	;;
+
+
+	*)
+	echo "$0:: Unrecognised config - using versatilepb_config"
+	;;
+
+	esac
+
+fi
+# ---------------------------------------------------------
+# Complete the configuration
+# ---------------------------------------------------------
+./mkconfig -a versatile arm arm926ejs versatile
diff --git a/board/voiceblue/setup.S b/board/voiceblue/setup.S
index 4a110e8..dcf37b5 100644
--- a/board/voiceblue/setup.S
+++ b/board/voiceblue/setup.S
@@ -122,8 +122,8 @@
 	.byte 0x0c		@ COMP_MODE_CTRL_0
 	.byte 0xff
 
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 	/* Improve performance a bit... */
 	mrc	p15, 0, r1, c0, c0, 0		@ read C15 ID register
 	mrc	p15, 0, r1, c0, c0, 1		@ read C15 Cache information register