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. */ 50struct 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 */ 56extern const unsigned char relocate_new_kernel[]; 57extern const unsigned long relocate_new_kernel_size; 58extern void relocate_new_kernel_end(void); 59 60/* Provide a dummy definition to avoid build failures. */ 61static inline void crash_setup_regs(struct pt_regs *n, struct pt_regs *o) 62{ 63} 64 65#endif /* _ASM_TILE_KEXEC_H */ 66