[U-Boot] [PATCH] vxworks: Add CONFIG_VXWORKS_PREBOOT

The option CONFIG_VXWORKS_PREBOOT allows a board specific vxworks_preboot to be run just before jumping into the vxWorks images. This can be used to alter a register which is used differently by U-boot and vxWorks.
Signed-off-by: Niklaus Giger niklaus.giger@netstal.com --- common/cmd_elf.c | 4 ++++ include/vxworks.h | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/common/cmd_elf.c b/common/cmd_elf.c index bf7dd63..4e36680 100644 --- a/common/cmd_elf.c +++ b/common/cmd_elf.c @@ -213,6 +213,10 @@ int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) (char *) bootaddr); printf ("## Starting vxWorks at 0x%08lx ...\n", addr);
+#ifdef CONFIG_VXWORKS_PREBOOT + vxworks_preboot(); +#endif + ((void (*)(void)) addr) ();
puts ("## vxWorks terminated\n"); diff --git a/include/vxworks.h b/include/vxworks.h index 1633904..df2b580 100644 --- a/include/vxworks.h +++ b/include/vxworks.h @@ -50,4 +50,8 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); #define CONFIG_SYS_VXWORKS_SERVERNAME "srv" #endif
+#ifdef CONFIG_VXWORKS_PREBOOT + void vxworks_preboot(void); +#endif + #endif

Niklaus Giger wrote:
The option CONFIG_VXWORKS_PREBOOT allows a board specific vxworks_preboot to be run just before jumping into the vxWorks images. This can be used to alter a register which is used differently by U-boot and vxWorks.
Signed-off-by: Niklaus Giger niklaus.giger@netstal.com
common/cmd_elf.c | 4 ++++ include/vxworks.h | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/common/cmd_elf.c b/common/cmd_elf.c index bf7dd63..4e36680 100644 --- a/common/cmd_elf.c +++ b/common/cmd_elf.c @@ -213,6 +213,10 @@ int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) (char *) bootaddr); printf ("## Starting vxWorks at 0x%08lx ...\n", addr);
+#ifdef CONFIG_VXWORKS_PREBOOT
- vxworks_preboot();
+#endif
((void (*)(void)) addr) ();
puts ("## vxWorks terminated\n");
diff --git a/include/vxworks.h b/include/vxworks.h index 1633904..df2b580 100644 --- a/include/vxworks.h +++ b/include/vxworks.h @@ -50,4 +50,8 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); #define CONFIG_SYS_VXWORKS_SERVERNAME "srv" #endif
+#ifdef CONFIG_VXWORKS_PREBOOT
- void vxworks_preboot(void);
+#endif
Where is vxworks_preboot defined ?
Tom
#endif

Am Mittwoch 23 September 2009 13:39:55 schrieb Tom:
Niklaus Giger wrote:
The option CONFIG_VXWORKS_PREBOOT allows a board specific vxworks_preboot to be run just before jumping into the vxWorks images. This can be used to alter a register which is used differently by U-boot and vxWorks.
<..>
puts ("## vxWorks terminated\n"); diff --git a/include/vxworks.h b/include/vxworks.h index 1633904..df2b580 100644 --- a/include/vxworks.h +++ b/include/vxworks.h @@ -50,4 +50,8 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); #define CONFIG_SYS_VXWORKS_SERVERNAME "srv" #endif
+#ifdef CONFIG_VXWORKS_PREBOOT
- void vxworks_preboot(void);
+#endif
Where is vxworks_preboot defined ?
This patch should only give the basis for its use.
I use it in one of my Netstal boards MCU25. Patch will come soon, as I am cleaning them up at the moment. But the relevant snippet is here:
board/netstal/mcu25/mcu25.c
void vxworks_preboot(void) { if (sys_install_requested()) mtdcr(CPC0_CR1, CPCO_CR1_USE_EXTERNAL); }
Is this okay for you? Or do you have more questions?
Best regards
Niklaus
Tom
#endif
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Niklaus Giger wrote:
Am Mittwoch 23 September 2009 13:39:55 schrieb Tom:
Niklaus Giger wrote:
The option CONFIG_VXWORKS_PREBOOT allows a board specific vxworks_preboot to be run just before jumping into the vxWorks images. This can be used to alter a register which is used differently by U-boot and vxWorks.
<..>
puts ("## vxWorks terminated\n"); diff --git a/include/vxworks.h b/include/vxworks.h index 1633904..df2b580 100644 --- a/include/vxworks.h +++ b/include/vxworks.h @@ -50,4 +50,8 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); #define CONFIG_SYS_VXWORKS_SERVERNAME "srv" #endif
+#ifdef CONFIG_VXWORKS_PREBOOT
- void vxworks_preboot(void);
+#endif
Where is vxworks_preboot defined ?
This patch should only give the basis for its use.
I use it in one of my Netstal boards MCU25. Patch will come soon, as I am cleaning them up at the moment. But the relevant snippet is here:
board/netstal/mcu25/mcu25.c
void vxworks_preboot(void) { if (sys_install_requested()) mtdcr(CPC0_CR1, CPCO_CR1_USE_EXTERNAL); }
Is this okay for you? Or do you have more questions?
This is a good change.
IMO, it would be better if this patch was included with your upcoming changes as the context of its use would be clear and it would eliminate that the possibility that this change happened without follow-up changes.
Tom
Best regards
Niklaus
Tom
#endif
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Niklas,
On Wednesday 23 September 2009 08:22:38 Niklaus Giger wrote:
The option CONFIG_VXWORKS_PREBOOT allows a board specific vxworks_preboot to be run just before jumping into the vxWorks images. This can be used to alter a register which is used differently by U-boot and vxWorks.
Signed-off-by: Niklaus Giger niklaus.giger@netstal.com
common/cmd_elf.c | 4 ++++ include/vxworks.h | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/common/cmd_elf.c b/common/cmd_elf.c index bf7dd63..4e36680 100644 --- a/common/cmd_elf.c +++ b/common/cmd_elf.c @@ -213,6 +213,10 @@ int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) (char *) bootaddr); printf ("## Starting vxWorks at 0x%08lx ...\n", addr);
+#ifdef CONFIG_VXWORKS_PREBOOT
- vxworks_preboot();
+#endif
We could get rid of this #ifdef by using an empty weak default function for this.
And it seems that you have an indentation problem here.
Cheers, Stefan
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de

Dear Niklaus Giger,
In message 1253686958-30716-1-git-send-email-niklaus.giger@netstal.com you wrote:
The option CONFIG_VXWORKS_PREBOOT allows a board specific vxworks_preboot to be run just before jumping into the vxWorks images. This can be used to alter a register which is used differently by U-boot and vxWorks.
Signed-off-by: Niklaus Giger niklaus.giger@netstal.com
common/cmd_elf.c | 4 ++++ include/vxworks.h | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/common/cmd_elf.c b/common/cmd_elf.c index bf7dd63..4e36680 100644 --- a/common/cmd_elf.c +++ b/common/cmd_elf.c @@ -213,6 +213,10 @@ int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) (char *) bootaddr); printf ("## Starting vxWorks at 0x%08lx ...\n", addr);
+#ifdef CONFIG_VXWORKS_PREBOOT
- vxworks_preboot();
+#endif
Please move that function before the printf "## Starting vxWorks".
puts ("## vxWorks terminated\n"); diff --git a/include/vxworks.h b/include/vxworks.h index 1633904..df2b580 100644 --- a/include/vxworks.h +++ b/include/vxworks.h @@ -50,4 +50,8 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); #define CONFIG_SYS_VXWORKS_SERVERNAME "srv" #endif
+#ifdef CONFIG_VXWORKS_PREBOOT
- void vxworks_preboot(void);
+#endif
Please make this a function returning int, and return (and handle) a proper return code, so we can deal with error situations.
Best regards,
Wolfgang Denk
participants (5)
-
Niklaus Giger
-
Niklaus Giger
-
Stefan Roese
-
Tom
-
Wolfgang Denk