|  | /* | 
|  | * arch/arm/mach-lpc32xx/include/mach/system.h | 
|  | * | 
|  | * Author: Kevin Wells <kevin.wells@nxp.com> | 
|  | * | 
|  | * Copyright (C) 2010 NXP Semiconductors | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or modify | 
|  | * it under the terms of the GNU General Public License as published by | 
|  | * the Free Software Foundation; either version 2 of the License, or | 
|  | * (at your option) any later version. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | * GNU General Public License for more details. | 
|  | */ | 
|  |  | 
|  | #ifndef __ASM_ARCH_SYSTEM_H | 
|  | #define __ASM_ARCH_SYSTEM_H | 
|  |  | 
|  | static void arch_idle(void) | 
|  | { | 
|  | cpu_do_idle(); | 
|  | } | 
|  |  | 
|  | static inline void arch_reset(char mode, const char *cmd) | 
|  | { | 
|  | extern void lpc32xx_watchdog_reset(void); | 
|  |  | 
|  | switch (mode) { | 
|  | case 's': | 
|  | case 'h': | 
|  | printk(KERN_CRIT "RESET: Rebooting system\n"); | 
|  |  | 
|  | /* Disable interrupts */ | 
|  | local_irq_disable(); | 
|  |  | 
|  | lpc32xx_watchdog_reset(); | 
|  | break; | 
|  |  | 
|  | default: | 
|  | /* Do nothing */ | 
|  | break; | 
|  | } | 
|  |  | 
|  | /* Wait for watchdog to reset system */ | 
|  | while (1) | 
|  | ; | 
|  | } | 
|  |  | 
|  | #endif |