1*fe8c2806Swdenk #ifndef load_kernel_h 2*fe8c2806Swdenk #define load_kernel_h 3*fe8c2806Swdenk /*------------------------------------------------------------------------- 4*fe8c2806Swdenk * Filename: load_kernel.h 5*fe8c2806Swdenk * Version: $Id: load_kernel.h,v 1.3 2002/01/25 01:34:11 nyet Exp $ 6*fe8c2806Swdenk * Copyright: Copyright (C) 2001, Russ Dill 7*fe8c2806Swdenk * Author: Russ Dill <Russ.Dill@asu.edu> 8*fe8c2806Swdenk * Description: header for load kernel modules 9*fe8c2806Swdenk *-----------------------------------------------------------------------*/ 10*fe8c2806Swdenk /* 11*fe8c2806Swdenk * 12*fe8c2806Swdenk * This program is free software; you can redistribute it and/or modify 13*fe8c2806Swdenk * it under the terms of the GNU General Public License as published by 14*fe8c2806Swdenk * the Free Software Foundation; either version 2 of the License, or 15*fe8c2806Swdenk * (at your option) any later version. 16*fe8c2806Swdenk * 17*fe8c2806Swdenk * This program is distributed in the hope that it will be useful, 18*fe8c2806Swdenk * but WITHOUT ANY WARRANTY; without even the implied warranty of 19*fe8c2806Swdenk * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20*fe8c2806Swdenk * GNU General Public License for more details. 21*fe8c2806Swdenk * 22*fe8c2806Swdenk * You should have received a copy of the GNU General Public License 23*fe8c2806Swdenk * along with this program; if not, write to the Free Software 24*fe8c2806Swdenk * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25*fe8c2806Swdenk * 26*fe8c2806Swdenk */ 27*fe8c2806Swdenk 28*fe8c2806Swdenk /* this struct is very similar to mtd_info */ 29*fe8c2806Swdenk struct part_info { 30*fe8c2806Swdenk u32 size; /* Total size of the Partition */ 31*fe8c2806Swdenk 32*fe8c2806Swdenk /* "Major" erase size for the device. Na�ve users may take this 33*fe8c2806Swdenk * to be the only erase size available, or may use the more detailed 34*fe8c2806Swdenk * information below if they desire 35*fe8c2806Swdenk */ 36*fe8c2806Swdenk u32 erasesize; 37*fe8c2806Swdenk 38*fe8c2806Swdenk /* Where in memory does this partition start? */ 39*fe8c2806Swdenk char *offset; 40*fe8c2806Swdenk 41*fe8c2806Swdenk /* used by jffs2 set to NULL */ 42*fe8c2806Swdenk void *jffs2_priv; 43*fe8c2806Swdenk 44*fe8c2806Swdenk /* private filed used by user */ 45*fe8c2806Swdenk void *usr_priv; 46*fe8c2806Swdenk }; 47*fe8c2806Swdenk 48*fe8c2806Swdenk struct part_info* 49*fe8c2806Swdenk jffs2_part_info(int part_num); 50*fe8c2806Swdenk 51*fe8c2806Swdenk struct kernel_loader { 52*fe8c2806Swdenk 53*fe8c2806Swdenk /* Return true if there is a kernel contained at src */ 54*fe8c2806Swdenk int (* check_magic)(struct part_info *part); 55*fe8c2806Swdenk 56*fe8c2806Swdenk /* load the kernel from the partition part to dst, return the number 57*fe8c2806Swdenk * of bytes copied if successful, zero if not */ 58*fe8c2806Swdenk u32 (* load_kernel)(u32 *dst, struct part_info *part, const char *kernel_filename); 59*fe8c2806Swdenk 60*fe8c2806Swdenk /* A brief description of the module (ie, "cramfs") */ 61*fe8c2806Swdenk char *name; 62*fe8c2806Swdenk }; 63*fe8c2806Swdenk 64*fe8c2806Swdenk #define ldr_strlen strlen 65*fe8c2806Swdenk #define ldr_strncmp strncmp 66*fe8c2806Swdenk #define ldr_memcpy memcpy 67*fe8c2806Swdenk #define putstr(x) printf("%s", x) 68*fe8c2806Swdenk #define mmalloc malloc 69*fe8c2806Swdenk #define UDEBUG printf 70*fe8c2806Swdenk 71*fe8c2806Swdenk #define putnstr(str, size) printf("%*.*s", size, size, str) 72*fe8c2806Swdenk #define ldr_output_string(x) puts(x) 73*fe8c2806Swdenk #define putLabeledWord(x, y) printf("%s %08x\n", x, (unsigned int)y) 74*fe8c2806Swdenk #define led_blink(x, y, z, a) 75*fe8c2806Swdenk 76*fe8c2806Swdenk #endif /* load_kernel_h */ 77