日期:2014-05-16 浏览次数:20610 次
.globl reset_cpu reset_cpu: ldr r1, =ELFIN_CLOCK_POWER_BASE ldr r2, [r1, #SYS_ID_OFFSET] ldr r3, =0xffff and r2, r3, r2, lsr #12 str r2, [r1, #SW_RST_OFFSET] _loop_forever: b _loop_forever
static inline void arch_wdt_reset(void) { struct clk *wdtclk; printk("arch_reset: attempting watchdog reset\n"); __raw_writel(0, S3C2410_WTCON); /* disable watchdog, to be safe */ wdtclk = clk_get(NULL, "watchdog"); if (!IS_ERR(wdtclk)) { clk_enable(wdtclk); } else printk(KERN_WARNING "%s: warning: cannot get watchdog clock\n", __func__); /* put initial values into count and data */ __raw_writel(0x80, S3C2410_WTCNT); __raw_writel(0x80, S3C2410_WTDAT); /* set the watchdog to go and reset... */ __raw_writel(S3C2410_WTCON_ENABLE|S3C2410_WTCON_DIV16|S3C2410_WTCON_RSTEN | S3C2410_WTCON_PRESCALE(0x20), S3C2410_WTCON); /* wait for reset to assert... */ mdelay(500); printk(KERN_ERR "Watchdog reset failed to assert reset\n"); /* delay to allow the serial port to show the message */ mdelay(50);