1 /* 2 * Copyright 2010 Tilera Corporation. All Rights Reserved. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation, version 2. 7 * 8 * This program is distributed in the hope that it will be useful, but 9 * WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or 11 * NON INFRINGEMENT. See the GNU General Public License for 12 * more details. 13 * 14 * based on kexec.h from other architectures in linux-2.6.18 15 */ 16 17 #ifndef _ASM_TILE_KEXEC_H 18 #define _ASM_TILE_KEXEC_H 19 20 #include <asm/page.h> 21 22 #ifndef __tilegx__ 23 /* Maximum physical address we can use pages from. */ 24 #define KEXEC_SOURCE_MEMORY_LIMIT TASK_SIZE 25 /* Maximum address we can reach in physical address mode. */ 26 #define KEXEC_DESTINATION_MEMORY_LIMIT TASK_SIZE 27 /* Maximum address we can use for the control code buffer. */ 28 #define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE 29 #else 30 /* We need to limit the memory below PGDIR_SIZE since 31 * we only setup page table for [0, PGDIR_SIZE) before final kexec. 32 */ 33 /* Maximum physical address we can use pages from. */ 34 #define KEXEC_SOURCE_MEMORY_LIMIT PGDIR_SIZE 35 /* Maximum address we can reach in physical address mode. */ 36 #define KEXEC_DESTINATION_MEMORY_LIMIT PGDIR_SIZE 37 /* Maximum address we can use for the control code buffer. */ 38 #define KEXEC_CONTROL_MEMORY_LIMIT PGDIR_SIZE 39 #endif 40 41 #define KEXEC_CONTROL_PAGE_SIZE PAGE_SIZE 42 43 /* 44 * We don't bother to provide a unique identifier, since we can only 45 * reboot with a single type of kernel image anyway. 46 */ 47 #define KEXEC_ARCH KEXEC_ARCH_DEFAULT 48 49 /* Use the tile override for the page allocator. */ 50 struct page *kimage_alloc_pages_arch(gfp_t gfp_mask, unsigned int order); 51 #define kimage_alloc_pages_arch kimage_alloc_pages_arch 52 53 #define MAX_NOTE_BYTES 1024 54 55 /* Defined in arch/tile/kernel/relocate_kernel.S */ 56 extern const unsigned char relocate_new_kernel[]; 57 extern const unsigned long relocate_new_kernel_size; 58 extern void relocate_new_kernel_end(void); 59 60 /* Provide a dummy definition to avoid build failures. */ crash_setup_regs(struct pt_regs * n,struct pt_regs * o)61static inline void crash_setup_regs(struct pt_regs *n, struct pt_regs *o) 62 { 63 } 64 65 #endif /* _ASM_TILE_KEXEC_H */ 66