11 #include <linux/kernel.h>
13 #include <linux/sched.h>
19 #include <linux/errno.h>
20 #include <linux/string.h>
25 #include <linux/module.h>
28 #include <asm/bootinfo.h>
29 #include <asm/sections.h>
30 #include <asm/setup.h>
34 #include <asm/machdep.h>
47 #if !FPSTATESIZE || !NR_IRQS
48 #warning No CPU/platform type selected, your kernel will not work!
49 #warning Are you building an allnoconfig kernel?
60 unsigned long vme_brdtype;
79 static char m68k_command_line[
CL_SIZE];
87 unsigned long (*mach_gettimeoffset) (
void);
91 unsigned int (*mach_get_ss)(
void);
101 #ifdef CONFIG_HEARTBEAT
105 #ifdef CONFIG_M68K_L2_CACHE
108 #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
109 void (*mach_beep)(
unsigned int,
unsigned int);
112 #if defined(CONFIG_ISA) && defined(MULTI_ISA)
141 #define MASK_256K 0xfffc0000
149 const unsigned long *
data = record->
data;
151 switch (record->
tag) {
165 printk(
"m68k_parse_bootinfo: too many memory chunks\n");
174 strlcpy(m68k_command_line, (
const char *)data,
175 sizeof(m68k_command_line));
201 printk(
"m68k_parse_bootinfo: unknown tag 0x%04x ignored\n",
203 record = (
struct bi_record *)((
unsigned long)record +
208 #ifdef CONFIG_SINGLE_MEMORY_CHUNK
210 printk(
"Ignoring last %i chunks of physical memory\n",
237 #ifndef CONFIG_M68KFPU_EMU_ONLY
240 volatile int zero = 0;
241 asm volatile (
"frestore %0" : :
"m" (
zero));
248 asm (
".chip 68060; movec %%pcr,%0; .chip 68k"
250 if (((pcr >> 8) & 0xff) <= 5) {
251 printk(
"Enabling workaround for errata I14\n");
252 asm (
".chip 68060; movec %0,%%pcr; .chip 68k"
253 : :
"d" (pcr | 0x20));
262 #if defined(CONFIG_BOOTPARAM)
264 m68k_command_line[
CL_SIZE - 1] = 0;
266 *cmdline_p = m68k_command_line;
271 #ifdef CONFIG_DUMMY_CONSOLE
301 #ifdef CONFIG_MVME147
306 #ifdef CONFIG_MVME16x
311 #ifdef CONFIG_BVME6000
331 #ifdef CONFIG_COLDFIRE
337 panic(
"No configuration setup");
340 #ifdef CONFIG_NATFEAT
350 #ifdef CONFIG_BLK_DEV_INITRD
374 #if defined(CONFIG_ISA) && defined(MULTI_ISA)
376 isa_type = ISA_TYPE_Q40;
379 #ifdef CONFIG_AMIGA_PCMCIA
381 isa_type = ISA_TYPE_AG;
390 const char *
cpu, *mmu, *
fpu;
391 unsigned long clockfreq, clockfactor;
393 #define LOOP_CYCLES_68020 (8)
394 #define LOOP_CYCLES_68030 (8)
395 #define LOOP_CYCLES_68040 (3)
396 #define LOOP_CYCLES_68060 (1)
397 #define LOOP_CYCLES_COLDFIRE (2)
419 #ifdef CONFIG_M68KFPU_EMU_ONLY
420 fpu =
"none(soft float)";
460 "Clocking:\t%lu.%1luMHz\n"
461 "BogoMips:\t%lu.%02lu\n"
462 "Calibration:\t%lu loops\n",
464 clockfreq/1000000,(clockfreq/100000)%10,
472 return *pos < 1 ? (
void *)1 :
NULL;
474 static void *c_next(
struct seq_file *m,
void *v, loff_t *
pos)
479 static void c_stop(
struct seq_file *m,
void *v)
489 #ifdef CONFIG_PROC_HARDWARE
490 static int hardware_proc_show(
struct seq_file *m,
void *v)
499 strcpy(model,
"Unknown m68k");
504 seq_printf(m,
"System Memory:\t%ldK\n", mem >> 10);
506 if (mach_get_hardware_list)
518 .
open = hardware_proc_open,
524 static int __init proc_hardware_init(
void)
526 proc_create(
"hardware", 0,
NULL, &hardware_proc_fops);
534 #ifndef CONFIG_M68KFPU_EMU
537 "WHICH IS REQUIRED BY LINUX/M68K ***\n");
539 "emulation project\n");
546 static int __init adb_probe_sync_enable (
char *
str) {
548 __adb_probe_sync = 1;
552 __setup(
"adb_sync", adb_probe_sync_enable);