sh: Add trigger_address_error and support cpu reset

This add support cpu reset by trigger_address_error function.

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
This commit is contained in:
Nobuhiro Iwamatsu 2010-06-16 16:55:26 +09:00 committed by Nobuhiro Iwamatsu
parent 9a1e3e9fe3
commit 754613f740
4 changed files with 27 additions and 2 deletions

View File

@ -1,6 +1,6 @@
/*
* Copyright (C) 2008 Nobuhiro Iwamatsu <iwamatsu.nobuhoro@renesas.com>
* Copyright (C) 2008 Renesas Solutions Corp.
* Copyright (C) 2008,2010 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
* Copyright (C) 2008,2010 Renesas Solutions Corp.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@ -20,6 +20,7 @@
#include <common.h>
#include <asm/processor.h>
#include <asm/system.h>
int watchdog_init(void)
{
@ -28,6 +29,9 @@ int watchdog_init(void)
void reset_cpu(unsigned long ignored)
{
/* Address error with SR.BL=1 first. */
trigger_address_error();
while (1)
;
}

View File

@ -1,4 +1,7 @@
/*
* (C) Copyright 2010
* Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
*
* (C) Copyright 2007
* Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
*
@ -20,6 +23,7 @@
#include <common.h>
#include <asm/processor.h>
#include <asm/system.h>
int watchdog_init(void)
{
@ -28,6 +32,9 @@ int watchdog_init(void)
void reset_cpu(unsigned long ignored)
{
/* Address error with SR.BL=1 first. */
trigger_address_error();
while (1)
;
}

View File

@ -17,6 +17,7 @@
#include <common.h>
#include <asm/processor.h>
#include <asm/system.h>
#include <asm/io.h>
#define WDT_BASE WTCNT
@ -66,6 +67,9 @@ int watchdog_disable(void)
void reset_cpu(unsigned long ignored)
{
/* Address error with SR.BL=1 first. */
trigger_address_error();
while (1)
;
}

View File

@ -272,4 +272,14 @@ void enable_hlt(void);
#define arch_align_stack(x) (x)
static inline void trigger_address_error(void)
{
__asm__ __volatile__ (
"ldc %0, sr\n\t"
"mov.l @%1, %0"
:
: "r" (0x10000000), "r" (0x80000001)
);
}
#endif