/* * arch/ppc/boot/simple/misc-mv64x60.S * * Code to change the base address of the host bridges and call board specific * init routine. * * Author: Mark Greer * * 2002 (c) MontaVista, Software, Inc. This file is licensed under the terms * of the GNU General Public License version 2. This program is licensed * "as is" without any warranty of any kind, whether express or implied. */ #include #include #include #include #include .globl mv64x60_init mv64x60_init: mflr r27 #if (CONFIG_MV64X60_NEW_BASE != CONFIG_MV64X60_BASE) bl move_base #endif bl mv64x60_board_init mtlr r27 blr #if (CONFIG_MV64X60_NEW_BASE != CONFIG_MV64X60_BASE) move_base: li r20,0 li r23,20 /* Relocate bridge's regs */ addis r25,0,CONFIG_MV64X60_BASE@h ori r25,r25,MV64x60_INTERNAL_SPACE_DECODE lwbrx r26,0,(r25) lis r24,0xffff and r26,r26,r24 addis r24,0,CONFIG_MV64X60_NEW_BASE@h srw r24,r24,r23 or r26,r26,r24 stwbrx r26,0,(r25) sync /* Wait for write to take effect */ addis r25,0,CONFIG_MV64X60_NEW_BASE@h ori r25,r25,MV64x60_INTERNAL_SPACE_DECODE 1: lwbrx r24,0,(r25) cmpw r24,r26 bne 1b blr #endif