/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr>
*/
/* * CBR addr doesn't change and we can cache it. * For broken SoC/Bootloader CBR addr might also be provided via DT * with "brcm,bmips-cbr-reg" in the "cpus" node.
*/ void __iomem *bmips_cbr_addr __read_mostly;
void bcm63xx_machine_halt(void)
{
pr_info("System halted\n"); while (1)
;
}
staticvoid bcm6348_a1_reboot(void)
{
u32 reg;
/* soft reset all blocks */
pr_info("soft-resetting all blocks ...\n");
reg = bcm_perf_readl(PERF_SOFTRESET_REG);
reg &= ~SOFTRESET_6348_ALL;
bcm_perf_writel(reg, PERF_SOFTRESET_REG);
mdelay(10);
/* Jump to the power on address. */
pr_info("jumping to reset vector.\n"); /* set high vectors (base at 0xbfc00000 */
set_c0_status(ST0_BEV | ST0_ERL); /* run uncached in kseg0 */
change_c0_config(CONF_CM_CMASK, CONF_CM_UNCACHED);
__flush_cache_all(); /* remove all wired TLB entries */
write_c0_wired(0);
__asm__ __volatile__( "jr\t%0"
:
: "r" (0xbfc00000)); while (1)
;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.