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:
parent
9a1e3e9fe3
commit
754613f740
@ -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)
|
||||
;
|
||||
}
|
||||
|
@ -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)
|
||||
;
|
||||
}
|
||||
|
@ -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)
|
||||
;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user