mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 16:38:31 +00:00 
			
		
		
		
	 24b776bfb6
			
		
	
	
		24b776bfb6
		
	
	
	
	
		
			
			Implement machine specific function crash_setup_regs() which is responsible for storing machine state when crash occured. Signed-off-by: Mika Westerberg <ext-mika.1.westerberg@nokia.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ARM_KEXEC_H
 | |
| #define _ARM_KEXEC_H
 | |
| 
 | |
| #ifdef CONFIG_KEXEC
 | |
| 
 | |
| /* Maximum physical address we can use pages from */
 | |
| #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)
 | |
| /* Maximum address we can reach in physical address mode */
 | |
| #define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)
 | |
| /* Maximum address we can use for the control code buffer */
 | |
| #define KEXEC_CONTROL_MEMORY_LIMIT (-1UL)
 | |
| 
 | |
| #define KEXEC_CONTROL_PAGE_SIZE	4096
 | |
| 
 | |
| #define KEXEC_ARCH KEXEC_ARCH_ARM
 | |
| 
 | |
| #define KEXEC_ARM_ATAGS_OFFSET  0x1000
 | |
| #define KEXEC_ARM_ZIMAGE_OFFSET 0x8000
 | |
| 
 | |
| #ifndef __ASSEMBLY__
 | |
| 
 | |
| /**
 | |
|  * crash_setup_regs() - save registers for the panic kernel
 | |
|  * @newregs: registers are saved here
 | |
|  * @oldregs: registers to be saved (may be %NULL)
 | |
|  *
 | |
|  * Function copies machine registers from @oldregs to @newregs. If @oldregs is
 | |
|  * %NULL then current registers are stored there.
 | |
|  */
 | |
| static inline void crash_setup_regs(struct pt_regs *newregs,
 | |
| 				    struct pt_regs *oldregs)
 | |
| {
 | |
| 	if (oldregs) {
 | |
| 		memcpy(newregs, oldregs, sizeof(*newregs));
 | |
| 	} else {
 | |
| 		__asm__ __volatile__ ("stmia %0, {r0 - r15}"
 | |
| 				      : : "r" (&newregs->ARM_r0));
 | |
| 		__asm__ __volatile__ ("mrs %0, cpsr"
 | |
| 				      : "=r" (newregs->ARM_cpsr));
 | |
| 	}
 | |
| }
 | |
| 
 | |
| #endif /* __ASSEMBLY__ */
 | |
| 
 | |
| #endif /* CONFIG_KEXEC */
 | |
| 
 | |
| #endif /* _ARM_KEXEC_H */
 |