annotate packages/hal/mips/arch/current/src/redboot_linux_exec.c @ 182:f62680ef1804

Merge from eCos master repository on 2001-09-07-06:43:02-BST
author jlarmour
date Wed, 12 Sep 2001 00:59:17 +0000
parents 38892b97b685
children e0c0827131d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
1 //==========================================================================
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
2 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
3 // redboot_linux_exec.c
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
4 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
5 // RedBoot exec command for Linux booting
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
6 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
7 //==========================================================================
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
9 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
10 // -------------------------------------------
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
14 // http://www.redhat.com/
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
15 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
19 // the License.
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
20 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
22 // released September 30, 1998.
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
23 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
25 // Portions created by Red Hat are
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
26 // Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
27 // All Rights Reserved.
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
28 // -------------------------------------------
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
29 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
31 //==========================================================================
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
33 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
34 // Author(s): t@keshi.org
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
35 // Contributors: t@keshi.org, jskov, dwmw2
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
36 // Date: 2001-07-09
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
37 // Purpose: RedBoot exec command for Linux booting
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
38 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
39 //####DESCRIPTIONEND####
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
40 //
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
41 //===========================================================================
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
42
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
43 #include <redboot.h>
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
44
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
45 #include <cyg/infra/cyg_type.h>
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
46 #include <cyg/hal/hal_intr.h>
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
47 #include <cyg/hal/hal_cache.h>
174
38892b97b685 Merge from eCos master repository on 2001-07-28-00:17:32-BST
jlarmour
parents: 172
diff changeset
48 #include <cyg/hal/hal_if.h>
172
cd45958b28ff Merge from eCos master repository on 2001-07-20-10:24:43-BST
jlarmour
parents: 171
diff changeset
49
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
50 #define xstr(s) str(s)
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
51 #define str(s...) #s
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
52
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
53 typedef struct
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
54 {
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
55 char *name;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
56 char *val;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
57 } t_env_var;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
58
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
59 struct parmblock {
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
60 t_env_var memsize;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
61 t_env_var modetty0;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
62 t_env_var ethaddr;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
63 t_env_var env_end;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
64 char *argv[2];
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
65 char text[0];
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
66 };
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
67
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
68 static void do_exec(int argc, char *argv[]);
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
69 RedBoot_cmd("exec",
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
70 "Execute an image",
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
71 "[-b <argv addr>] [-c \"kernel command line\"] [-w <timeout>]\n"
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
72 " [<entry point>]",
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
73 do_exec
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
74 );
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
75
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
76 static void
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
77 do_exec(int argc, char *argv[])
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
78 {
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
79 cyg_uint32 entry = (cyg_uint32)entry_address?:CYGDAT_REDBOOT_MIPS_LINUX_BOOT_ENTRY;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
80 cyg_uint32 base_addr = CYGDAT_REDBOOT_MIPS_LINUX_BOOT_ARGV_ADDR;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
81 char *cmd_line = xstr(CYGDAT_REDBOOT_MIPS_LINUX_BOOT_COMMAND_LINE);
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
82 bool base_addr_set, cmd_line_set, wait_time_set;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
83 int wait_time, res;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
84 char line[8];
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
85
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
86 struct option_info opts[3];
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
87 char *pcmd;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
88 struct parmblock *pb;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
89 void (*linux)(int, char **, void *);
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
90 int oldints;
174
38892b97b685 Merge from eCos master repository on 2001-07-28-00:17:32-BST
jlarmour
parents: 172
diff changeset
91 hal_virtual_comm_table_t *__chan;
38892b97b685 Merge from eCos master repository on 2001-07-28-00:17:32-BST
jlarmour
parents: 172
diff changeset
92 int baud;
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
93
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
94 init_opts(&opts[0], 'b', true, OPTION_ARG_TYPE_NUM,
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
95 (void **)&base_addr, &base_addr_set, "base address");
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
96 init_opts(&opts[1], 'w', true, OPTION_ARG_TYPE_NUM,
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
97 (void **)&wait_time, (bool *)&wait_time_set, "wait timeout");
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
98 init_opts(&opts[2], 'c', true, OPTION_ARG_TYPE_STR,
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
99 (void **)&cmd_line, &cmd_line_set, "kernel command line");
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
100
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
101 if (!scan_opts(argc, argv, 1, opts, 3, (void *)&entry,
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
102 OPTION_ARG_TYPE_NUM, "entry address"))
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
103 return;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
104
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
105 linux = (void *)entry;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
106
174
38892b97b685 Merge from eCos master repository on 2001-07-28-00:17:32-BST
jlarmour
parents: 172
diff changeset
107 __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
38892b97b685 Merge from eCos master repository on 2001-07-28-00:17:32-BST
jlarmour
parents: 172
diff changeset
108 baud = CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_GETBAUD);
38892b97b685 Merge from eCos master repository on 2001-07-28-00:17:32-BST
jlarmour
parents: 172
diff changeset
109
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
110 diag_printf("Now booting linux kernel:\n");
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
111 diag_printf(" Base address 0x%08x Entry 0x%08x\n", base_addr, entry);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
112 diag_printf(" Cmdline : %s\n", cmd_line);
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
113
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
114 if (wait_time_set) {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
115 diag_printf("About to start execution at %p - abort with ^C within %d seconds\n",
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
116 (void *)entry, wait_time);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
117 res = _rb_gets(line, sizeof(line), wait_time*1000);
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
118 if (res == _GETS_CTRLC) {
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
119 return;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
120 }
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
121 }
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
122
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
123 HAL_DISABLE_INTERRUPTS(oldints);
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
124
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
125 pb = (struct parmblock *)base_addr;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
126 pcmd = pb->text;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
127
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
128 pb->memsize.name = pcmd;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
129 pcmd += diag_sprintf(pcmd, "memsize");
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
130 pb->memsize.val = ++pcmd;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
131 pcmd += diag_sprintf(pcmd, "0x%08x", (ram_end - ram_start + 0xFFFFF) & ~0xFFFFF);
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
132
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
133 pb->modetty0.name = ++pcmd;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
134 pcmd += diag_sprintf(pcmd, "modetty0");
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
135 pb->modetty0.val = ++pcmd;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
136 pcmd += diag_sprintf(pcmd, "%d,n,8,1,hw", baud);
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
137
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
138 #ifdef CYGPKG_REDBOOT_NETWORKING
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
139 pb->ethaddr.name = ++pcmd;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
140 pcmd += diag_sprintf(pcmd, "ethaddr");
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
141 pb->ethaddr.val = ++pcmd;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
142 pcmd += diag_sprintf(pcmd, "%02x.%02x.%02x.%02x.%02x.%02x",
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
143 __local_enet_addr[0], __local_enet_addr[1],
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
144 __local_enet_addr[2], __local_enet_addr[3],
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
145 __local_enet_addr[4], __local_enet_addr[5]);
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
146 pb->env_end.name = NULL;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
147 pb->env_end.val = NULL;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
148 #else
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
149 pb->ethaddr.name = NULL;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
150 pb->ethaddr.val = NULL;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
151 #endif
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
152
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
153 /* Point argv[0] at a handy `\0` */
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
154 pb->argv[0] = pcmd;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
155 pb->argv[1] = ++pcmd;
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
156
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
157 strcpy(pcmd, cmd_line);
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
158
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
159 HAL_DCACHE_SYNC();
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
160 HAL_ICACHE_DISABLE();
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
161 HAL_DCACHE_DISABLE();
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
162 HAL_DCACHE_SYNC();
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
163 HAL_ICACHE_INVALIDATE_ALL();
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
164 HAL_DCACHE_INVALIDATE_ALL();
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
165
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
166 linux(2, pb->argv, pb);
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
diff changeset
167 }