]> git.sur5r.net Git - u-boot/commitdiff
powerpc: mpc52xx: Clear GD in the main U-Boot stage for SPL usage
authorStefan Roese <sr@denx.de>
Wed, 19 Nov 2014 08:37:48 +0000 (09:37 +0100)
committerWolfgang Denk <wd@denx.de>
Wed, 19 Nov 2014 12:08:14 +0000 (13:08 +0100)
When an MPC5200 based board is used with SPL support, the main
U-Boot needs to clear the GD (global data) struct again.

Otherwise the generic board init code in board_init_f (when
CONFIG_SYS_GENERIC_BOARD is defined) will not initialize all
GD variables correctly. Resulting in a hangup on the a4m2k
board.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
arch/powerpc/cpu/mpc5xxx/start.S

index 02c706ec63d2ea95df5108883fee237c63708f9d..94eb0d3fff881ae251ea7bdbcee9b2a5ab58d68f 100644 (file)
@@ -76,6 +76,21 @@ _start:
         * been done in the SPL u-boot version.
         */
        GET_GOT                 /* initialize GOT access                */
+
+       /*
+        * The GD (global data) struct needs to get cleared. Lets do
+        * this by calling memset().
+        * This function is called when the platform is build with SPL
+        * support from the main (full-blown) U-Boot. And the GD needs
+        * to get cleared (again) so that the following generic
+        * board support code, defined via CONFIG_SYS_GENERIC_BOARD,
+        * initializes all variables correctly.
+        */
+       mr      r3, r2          /* parameter 1:  GD pointer             */
+       li      r4,0            /* parameter 2:  value to fill          */
+       li      r5,GD_SIZE      /* parameter 3:  count                  */
+       bl      memset
+
        bl      board_init_f    /* run 1st part of board init code (in Flash)*/
        /* NOTREACHED - board_init_f() does not return */
 #else