]>
Commit | Line | Data |
---|---|---|
6cb142fa WD |
1 | /* |
2 | * U-boot - bf533_linux.c | |
3 | * | |
4 | * Copyright (c) 2005 blackfin.uclinux.org | |
5 | * | |
6 | * (C) Copyright 2000-2004 | |
7 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
8 | * | |
9 | * See file CREDITS for list of people who contributed to this | |
10 | * project. | |
11 | * | |
12 | * This program is free software; you can redistribute it and/or | |
13 | * modify it under the terms of the GNU General Public License as | |
14 | * published by the Free Software Foundation; either version 2 of | |
15 | * the License, or (at your option) any later version. | |
16 | * | |
17 | * This program is distributed in the hope that it will be useful, | |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 | * GNU General Public License for more details. | |
21 | * | |
22 | * You should have received a copy of the GNU General Public License | |
23 | * along with this program; if not, write to the Free Software | |
24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
25 | * MA 02111-1307 USA | |
26 | */ | |
27 | ||
28 | /* Dummy functions, currently not in Use */ | |
29 | ||
30 | #include <common.h> | |
31 | #include <command.h> | |
32 | #include <image.h> | |
33 | #include <zlib.h> | |
34 | #include <asm/byteorder.h> | |
35 | ||
36 | #define LINUX_MAX_ENVS 256 | |
37 | #define LINUX_MAX_ARGS 256 | |
38 | ||
39 | #ifdef CONFIG_SHOW_BOOT_PROGRESS | |
40 | #include <status_led.h> | |
41 | #define SHOW_BOOT_PROGRESS(arg) show_boot_progress(arg) | |
42 | #else | |
43 | #define SHOW_BOOT_PROGRESS(arg) | |
44 | #endif | |
45 | ||
46 | #define CMD_LINE_ADDR 0xFF900000 /* L1 scratchpad */ | |
47 | ||
48 | #ifdef SHARED_RESOURCES | |
49 | extern void swap_to(int device_id); | |
50 | #endif | |
51 | ||
52 | static char *make_command_line(void); | |
53 | ||
54 | extern image_header_t header; | |
55 | extern int do_reset(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]); | |
56 | void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], | |
57 | ulong addr, ulong * len_ptr, int verify) | |
58 | { | |
59 | int (*appl)(char *cmdline); | |
60 | char *cmdline; | |
61 | ||
62 | #ifdef SHARED_RESOURCES | |
63 | swap_to(FLASH); | |
64 | #endif | |
65 | ||
66 | appl = (int (*)(char *))ntohl(header.ih_ep); | |
67 | printf("Starting Kernel at = %x\n", appl); | |
68 | cmdline = make_command_line(); | |
69 | if(icache_status()){ | |
70 | flush_instruction_cache(); | |
71 | icache_disable(); | |
72 | } | |
73 | if(dcache_status()){ | |
74 | flush_data_cache(); | |
75 | dcache_disable(); | |
76 | } | |
77 | (*appl)(cmdline); | |
78 | } | |
79 | ||
80 | char *make_command_line(void) | |
81 | { | |
82 | char *dest = (char *) CMD_LINE_ADDR; | |
83 | char *bootargs; | |
84 | ||
85 | if ( (bootargs = getenv("bootargs")) == NULL ) | |
86 | return NULL; | |
87 | ||
88 | strncpy(dest, bootargs, 0x1000); | |
89 | dest[0xfff] = 0; | |
90 | return dest; | |
91 | } |