~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/m68k/kernel/setup.c

Version: ~ [ linux-6.2-rc3 ] ~ [ linux-6.1.5 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.87 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.162 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.228 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.269 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.302 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.302 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/m68k/kernel/setup.c (Version linux-4.15.18) and /arch/m68k/kernel/setup.c (Version linux-2.6.32.71)


  1 // SPDX-License-Identifier: GPL-2.0            !!   1 /*
  2 #ifdef CONFIG_MMU                              !!   2  *  linux/arch/m68k/kernel/setup.c
  3 #include "setup_mm.c"                          !!   3  *
  4 #else                                          !!   4  *  Copyright (C) 1995  Hamish Macdonald
  5 #include "setup_no.c"                          !!   5  */
                                                   >>   6 
                                                   >>   7 /*
                                                   >>   8  * This file handles the architecture-dependent parts of system setup
                                                   >>   9  */
                                                   >>  10 
                                                   >>  11 #include <linux/kernel.h>
                                                   >>  12 #include <linux/mm.h>
                                                   >>  13 #include <linux/sched.h>
                                                   >>  14 #include <linux/delay.h>
                                                   >>  15 #include <linux/interrupt.h>
                                                   >>  16 #include <linux/fs.h>
                                                   >>  17 #include <linux/console.h>
                                                   >>  18 #include <linux/genhd.h>
                                                   >>  19 #include <linux/errno.h>
                                                   >>  20 #include <linux/string.h>
                                                   >>  21 #include <linux/init.h>
                                                   >>  22 #include <linux/bootmem.h>
                                                   >>  23 #include <linux/proc_fs.h>
                                                   >>  24 #include <linux/seq_file.h>
                                                   >>  25 #include <linux/module.h>
                                                   >>  26 #include <linux/initrd.h>
                                                   >>  27 
                                                   >>  28 #include <asm/bootinfo.h>
                                                   >>  29 #include <asm/sections.h>
                                                   >>  30 #include <asm/setup.h>
                                                   >>  31 #include <asm/fpu.h>
                                                   >>  32 #include <asm/irq.h>
                                                   >>  33 #include <asm/io.h>
                                                   >>  34 #include <asm/machdep.h>
                                                   >>  35 #ifdef CONFIG_AMIGA
                                                   >>  36 #include <asm/amigahw.h>
                                                   >>  37 #endif
                                                   >>  38 #ifdef CONFIG_ATARI
                                                   >>  39 #include <asm/atarihw.h>
                                                   >>  40 #include <asm/atari_stram.h>
                                                   >>  41 #endif
                                                   >>  42 #ifdef CONFIG_SUN3X
                                                   >>  43 #include <asm/dvma.h>
  6 #endif                                             44 #endif
  7                                                    45 
  8 #if IS_ENABLED(CONFIG_INPUT_M68K_BEEP)         !!  46 #if !FPSTATESIZE || !NR_IRQS
                                                   >>  47 #warning No CPU/platform type selected, your kernel will not work!
                                                   >>  48 #warning Are you building an allnoconfig kernel?
                                                   >>  49 #endif
                                                   >>  50 
                                                   >>  51 unsigned long m68k_machtype;
                                                   >>  52 EXPORT_SYMBOL(m68k_machtype);
                                                   >>  53 unsigned long m68k_cputype;
                                                   >>  54 EXPORT_SYMBOL(m68k_cputype);
                                                   >>  55 unsigned long m68k_fputype;
                                                   >>  56 unsigned long m68k_mmutype;
                                                   >>  57 EXPORT_SYMBOL(m68k_mmutype);
                                                   >>  58 #ifdef CONFIG_VME
                                                   >>  59 unsigned long vme_brdtype;
                                                   >>  60 EXPORT_SYMBOL(vme_brdtype);
                                                   >>  61 #endif
                                                   >>  62 
                                                   >>  63 int m68k_is040or060;
                                                   >>  64 EXPORT_SYMBOL(m68k_is040or060);
                                                   >>  65 
                                                   >>  66 extern unsigned long availmem;
                                                   >>  67 
                                                   >>  68 int m68k_num_memory;
                                                   >>  69 EXPORT_SYMBOL(m68k_num_memory);
                                                   >>  70 int m68k_realnum_memory;
                                                   >>  71 EXPORT_SYMBOL(m68k_realnum_memory);
                                                   >>  72 unsigned long m68k_memoffset;
                                                   >>  73 struct mem_info m68k_memory[NUM_MEMINFO];
                                                   >>  74 EXPORT_SYMBOL(m68k_memory);
                                                   >>  75 
                                                   >>  76 struct mem_info m68k_ramdisk;
                                                   >>  77 
                                                   >>  78 static char m68k_command_line[CL_SIZE];
                                                   >>  79 
                                                   >>  80 void (*mach_sched_init) (irq_handler_t handler) __initdata = NULL;
                                                   >>  81 /* machine dependent irq functions */
                                                   >>  82 void (*mach_init_IRQ) (void) __initdata = NULL;
                                                   >>  83 void (*mach_get_model) (char *model);
                                                   >>  84 void (*mach_get_hardware_list) (struct seq_file *m);
                                                   >>  85 /* machine dependent timer functions */
                                                   >>  86 unsigned long (*mach_gettimeoffset) (void);
                                                   >>  87 int (*mach_hwclk) (int, struct rtc_time*);
                                                   >>  88 EXPORT_SYMBOL(mach_hwclk);
                                                   >>  89 int (*mach_set_clock_mmss) (unsigned long);
                                                   >>  90 unsigned int (*mach_get_ss)(void);
                                                   >>  91 int (*mach_get_rtc_pll)(struct rtc_pll_info *);
                                                   >>  92 int (*mach_set_rtc_pll)(struct rtc_pll_info *);
                                                   >>  93 EXPORT_SYMBOL(mach_get_ss);
                                                   >>  94 EXPORT_SYMBOL(mach_get_rtc_pll);
                                                   >>  95 EXPORT_SYMBOL(mach_set_rtc_pll);
                                                   >>  96 void (*mach_reset)( void );
                                                   >>  97 void (*mach_halt)( void );
                                                   >>  98 void (*mach_power_off)( void );
                                                   >>  99 long mach_max_dma_address = 0x00ffffff; /* default set to the lower 16MB */
                                                   >> 100 #ifdef CONFIG_HEARTBEAT
                                                   >> 101 void (*mach_heartbeat) (int);
                                                   >> 102 EXPORT_SYMBOL(mach_heartbeat);
                                                   >> 103 #endif
                                                   >> 104 #ifdef CONFIG_M68K_L2_CACHE
                                                   >> 105 void (*mach_l2_flush) (int);
                                                   >> 106 #endif
                                                   >> 107 #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
  9 void (*mach_beep)(unsigned int, unsigned int);    108 void (*mach_beep)(unsigned int, unsigned int);
 10 EXPORT_SYMBOL(mach_beep);                         109 EXPORT_SYMBOL(mach_beep);
 11 #endif                                            110 #endif
                                                   >> 111 #if defined(CONFIG_ISA) && defined(MULTI_ISA)
                                                   >> 112 int isa_type;
                                                   >> 113 int isa_sex;
                                                   >> 114 EXPORT_SYMBOL(isa_type);
                                                   >> 115 EXPORT_SYMBOL(isa_sex);
                                                   >> 116 #endif
                                                   >> 117 
                                                   >> 118 extern int amiga_parse_bootinfo(const struct bi_record *);
                                                   >> 119 extern int atari_parse_bootinfo(const struct bi_record *);
                                                   >> 120 extern int mac_parse_bootinfo(const struct bi_record *);
                                                   >> 121 extern int q40_parse_bootinfo(const struct bi_record *);
                                                   >> 122 extern int bvme6000_parse_bootinfo(const struct bi_record *);
                                                   >> 123 extern int mvme16x_parse_bootinfo(const struct bi_record *);
                                                   >> 124 extern int mvme147_parse_bootinfo(const struct bi_record *);
                                                   >> 125 extern int hp300_parse_bootinfo(const struct bi_record *);
                                                   >> 126 extern int apollo_parse_bootinfo(const struct bi_record *);
                                                   >> 127 
                                                   >> 128 extern void config_amiga(void);
                                                   >> 129 extern void config_atari(void);
                                                   >> 130 extern void config_mac(void);
                                                   >> 131 extern void config_sun3(void);
                                                   >> 132 extern void config_apollo(void);
                                                   >> 133 extern void config_mvme147(void);
                                                   >> 134 extern void config_mvme16x(void);
                                                   >> 135 extern void config_bvme6000(void);
                                                   >> 136 extern void config_hp300(void);
                                                   >> 137 extern void config_q40(void);
                                                   >> 138 extern void config_sun3x(void);
                                                   >> 139 
                                                   >> 140 #define MASK_256K 0xfffc0000
                                                   >> 141 
                                                   >> 142 extern void paging_init(void);
                                                   >> 143 
                                                   >> 144 static void __init m68k_parse_bootinfo(const struct bi_record *record)
                                                   >> 145 {
                                                   >> 146         while (record->tag != BI_LAST) {
                                                   >> 147                 int unknown = 0;
                                                   >> 148                 const unsigned long *data = record->data;
                                                   >> 149 
                                                   >> 150                 switch (record->tag) {
                                                   >> 151                 case BI_MACHTYPE:
                                                   >> 152                 case BI_CPUTYPE:
                                                   >> 153                 case BI_FPUTYPE:
                                                   >> 154                 case BI_MMUTYPE:
                                                   >> 155                         /* Already set up by head.S */
                                                   >> 156                         break;
                                                   >> 157 
                                                   >> 158                 case BI_MEMCHUNK:
                                                   >> 159                         if (m68k_num_memory < NUM_MEMINFO) {
                                                   >> 160                                 m68k_memory[m68k_num_memory].addr = data[0];
                                                   >> 161                                 m68k_memory[m68k_num_memory].size = data[1];
                                                   >> 162                                 m68k_num_memory++;
                                                   >> 163                         } else
                                                   >> 164                                 printk("m68k_parse_bootinfo: too many memory chunks\n");
                                                   >> 165                         break;
                                                   >> 166 
                                                   >> 167                 case BI_RAMDISK:
                                                   >> 168                         m68k_ramdisk.addr = data[0];
                                                   >> 169                         m68k_ramdisk.size = data[1];
                                                   >> 170                         break;
                                                   >> 171 
                                                   >> 172                 case BI_COMMAND_LINE:
                                                   >> 173                         strlcpy(m68k_command_line, (const char *)data,
                                                   >> 174                                 sizeof(m68k_command_line));
                                                   >> 175                         break;
                                                   >> 176 
                                                   >> 177                 default:
                                                   >> 178                         if (MACH_IS_AMIGA)
                                                   >> 179                                 unknown = amiga_parse_bootinfo(record);
                                                   >> 180                         else if (MACH_IS_ATARI)
                                                   >> 181                                 unknown = atari_parse_bootinfo(record);
                                                   >> 182                         else if (MACH_IS_MAC)
                                                   >> 183                                 unknown = mac_parse_bootinfo(record);
                                                   >> 184                         else if (MACH_IS_Q40)
                                                   >> 185                                 unknown = q40_parse_bootinfo(record);
                                                   >> 186                         else if (MACH_IS_BVME6000)
                                                   >> 187                                 unknown = bvme6000_parse_bootinfo(record);
                                                   >> 188                         else if (MACH_IS_MVME16x)
                                                   >> 189                                 unknown = mvme16x_parse_bootinfo(record);
                                                   >> 190                         else if (MACH_IS_MVME147)
                                                   >> 191                                 unknown = mvme147_parse_bootinfo(record);
                                                   >> 192                         else if (MACH_IS_HP300)
                                                   >> 193                                 unknown = hp300_parse_bootinfo(record);
                                                   >> 194                         else if (MACH_IS_APOLLO)
                                                   >> 195                                 unknown = apollo_parse_bootinfo(record);
                                                   >> 196                         else
                                                   >> 197                                 unknown = 1;
                                                   >> 198                 }
                                                   >> 199                 if (unknown)
                                                   >> 200                         printk("m68k_parse_bootinfo: unknown tag 0x%04x ignored\n",
                                                   >> 201                                record->tag);
                                                   >> 202                 record = (struct bi_record *)((unsigned long)record +
                                                   >> 203                                               record->size);
                                                   >> 204         }
                                                   >> 205 
                                                   >> 206         m68k_realnum_memory = m68k_num_memory;
                                                   >> 207 #ifdef CONFIG_SINGLE_MEMORY_CHUNK
                                                   >> 208         if (m68k_num_memory > 1) {
                                                   >> 209                 printk("Ignoring last %i chunks of physical memory\n",
                                                   >> 210                        (m68k_num_memory - 1));
                                                   >> 211                 m68k_num_memory = 1;
                                                   >> 212         }
                                                   >> 213 #endif
                                                   >> 214 }
                                                   >> 215 
                                                   >> 216 void __init setup_arch(char **cmdline_p)
                                                   >> 217 {
                                                   >> 218         int i;
                                                   >> 219 
                                                   >> 220         /* The bootinfo is located right after the kernel bss */
                                                   >> 221         m68k_parse_bootinfo((const struct bi_record *)_end);
                                                   >> 222 
                                                   >> 223         if (CPU_IS_040)
                                                   >> 224                 m68k_is040or060 = 4;
                                                   >> 225         else if (CPU_IS_060)
                                                   >> 226                 m68k_is040or060 = 6;
                                                   >> 227 
                                                   >> 228         /* FIXME: m68k_fputype is passed in by Penguin booter, which can
                                                   >> 229          * be confused by software FPU emulation. BEWARE.
                                                   >> 230          * We should really do our own FPU check at startup.
                                                   >> 231          * [what do we do with buggy 68LC040s? if we have problems
                                                   >> 232          *  with them, we should add a test to check_bugs() below] */
                                                   >> 233 #ifndef CONFIG_M68KFPU_EMU_ONLY
                                                   >> 234         /* clear the fpu if we have one */
                                                   >> 235         if (m68k_fputype & (FPU_68881|FPU_68882|FPU_68040|FPU_68060)) {
                                                   >> 236                 volatile int zero = 0;
                                                   >> 237                 asm volatile ("frestore %0" : : "m" (zero));
                                                   >> 238         }
                                                   >> 239 #endif
                                                   >> 240 
                                                   >> 241         if (CPU_IS_060) {
                                                   >> 242                 u32 pcr;
                                                   >> 243 
                                                   >> 244                 asm (".chip 68060; movec %%pcr,%0; .chip 68k"
                                                   >> 245                      : "=d" (pcr));
                                                   >> 246                 if (((pcr >> 8) & 0xff) <= 5) {
                                                   >> 247                         printk("Enabling workaround for errata I14\n");
                                                   >> 248                         asm (".chip 68060; movec %0,%%pcr; .chip 68k"
                                                   >> 249                              : : "d" (pcr | 0x20));
                                                   >> 250                 }
                                                   >> 251         }
                                                   >> 252 
                                                   >> 253         init_mm.start_code = PAGE_OFFSET;
                                                   >> 254         init_mm.end_code = (unsigned long)_etext;
                                                   >> 255         init_mm.end_data = (unsigned long)_edata;
                                                   >> 256         init_mm.brk = (unsigned long)_end;
                                                   >> 257 
                                                   >> 258         *cmdline_p = m68k_command_line;
                                                   >> 259         memcpy(boot_command_line, *cmdline_p, CL_SIZE);
                                                   >> 260 
                                                   >> 261         parse_early_param();
                                                   >> 262 
                                                   >> 263 #ifdef CONFIG_DUMMY_CONSOLE
                                                   >> 264         conswitchp = &dummy_con;
                                                   >> 265 #endif
                                                   >> 266 
                                                   >> 267         switch (m68k_machtype) {
                                                   >> 268 #ifdef CONFIG_AMIGA
                                                   >> 269         case MACH_AMIGA:
                                                   >> 270                 config_amiga();
                                                   >> 271                 break;
                                                   >> 272 #endif
                                                   >> 273 #ifdef CONFIG_ATARI
                                                   >> 274         case MACH_ATARI:
                                                   >> 275                 config_atari();
                                                   >> 276                 break;
                                                   >> 277 #endif
                                                   >> 278 #ifdef CONFIG_MAC
                                                   >> 279         case MACH_MAC:
                                                   >> 280                 config_mac();
                                                   >> 281                 break;
                                                   >> 282 #endif
                                                   >> 283 #ifdef CONFIG_SUN3
                                                   >> 284         case MACH_SUN3:
                                                   >> 285                 config_sun3();
                                                   >> 286                 break;
                                                   >> 287 #endif
                                                   >> 288 #ifdef CONFIG_APOLLO
                                                   >> 289         case MACH_APOLLO:
                                                   >> 290                 config_apollo();
                                                   >> 291                 break;
                                                   >> 292 #endif
                                                   >> 293 #ifdef CONFIG_MVME147
                                                   >> 294         case MACH_MVME147:
                                                   >> 295                 config_mvme147();
                                                   >> 296                 break;
                                                   >> 297 #endif
                                                   >> 298 #ifdef CONFIG_MVME16x
                                                   >> 299         case MACH_MVME16x:
                                                   >> 300                 config_mvme16x();
                                                   >> 301                 break;
                                                   >> 302 #endif
                                                   >> 303 #ifdef CONFIG_BVME6000
                                                   >> 304         case MACH_BVME6000:
                                                   >> 305                 config_bvme6000();
                                                   >> 306                 break;
                                                   >> 307 #endif
                                                   >> 308 #ifdef CONFIG_HP300
                                                   >> 309         case MACH_HP300:
                                                   >> 310                 config_hp300();
                                                   >> 311                 break;
                                                   >> 312 #endif
                                                   >> 313 #ifdef CONFIG_Q40
                                                   >> 314         case MACH_Q40:
                                                   >> 315                 config_q40();
                                                   >> 316                 break;
                                                   >> 317 #endif
                                                   >> 318 #ifdef CONFIG_SUN3X
                                                   >> 319         case MACH_SUN3X:
                                                   >> 320                 config_sun3x();
                                                   >> 321                 break;
                                                   >> 322 #endif
                                                   >> 323         default:
                                                   >> 324                 panic("No configuration setup");
                                                   >> 325         }
                                                   >> 326 
                                                   >> 327         paging_init();
                                                   >> 328 
                                                   >> 329 #ifndef CONFIG_SUN3
                                                   >> 330         for (i = 1; i < m68k_num_memory; i++)
                                                   >> 331                 free_bootmem_node(NODE_DATA(i), m68k_memory[i].addr,
                                                   >> 332                                   m68k_memory[i].size);
                                                   >> 333 #ifdef CONFIG_BLK_DEV_INITRD
                                                   >> 334         if (m68k_ramdisk.size) {
                                                   >> 335                 reserve_bootmem_node(__virt_to_node(phys_to_virt(m68k_ramdisk.addr)),
                                                   >> 336                                      m68k_ramdisk.addr, m68k_ramdisk.size,
                                                   >> 337                                      BOOTMEM_DEFAULT);
                                                   >> 338                 initrd_start = (unsigned long)phys_to_virt(m68k_ramdisk.addr);
                                                   >> 339                 initrd_end = initrd_start + m68k_ramdisk.size;
                                                   >> 340                 printk("initrd: %08lx - %08lx\n", initrd_start, initrd_end);
                                                   >> 341         }
                                                   >> 342 #endif
                                                   >> 343 
                                                   >> 344 #ifdef CONFIG_ATARI
                                                   >> 345         if (MACH_IS_ATARI)
                                                   >> 346                 atari_stram_reserve_pages((void *)availmem);
                                                   >> 347 #endif
                                                   >> 348 #ifdef CONFIG_SUN3X
                                                   >> 349         if (MACH_IS_SUN3X) {
                                                   >> 350                 dvma_init();
                                                   >> 351         }
                                                   >> 352 #endif
                                                   >> 353 
                                                   >> 354 #endif /* !CONFIG_SUN3 */
                                                   >> 355 
                                                   >> 356 /* set ISA defs early as possible */
                                                   >> 357 #if defined(CONFIG_ISA) && defined(MULTI_ISA)
                                                   >> 358         if (MACH_IS_Q40) {
                                                   >> 359                 isa_type = ISA_TYPE_Q40;
                                                   >> 360                 isa_sex = 0;
                                                   >> 361         }
                                                   >> 362 #ifdef CONFIG_GG2
                                                   >> 363         if (MACH_IS_AMIGA && AMIGAHW_PRESENT(GG2_ISA)) {
                                                   >> 364                 isa_type = ISA_TYPE_GG2;
                                                   >> 365                 isa_sex = 0;
                                                   >> 366         }
                                                   >> 367 #endif
                                                   >> 368 #ifdef CONFIG_AMIGA_PCMCIA
                                                   >> 369         if (MACH_IS_AMIGA && AMIGAHW_PRESENT(PCMCIA)) {
                                                   >> 370                 isa_type = ISA_TYPE_AG;
                                                   >> 371                 isa_sex = 1;
                                                   >> 372         }
                                                   >> 373 #endif
                                                   >> 374 #endif
                                                   >> 375 }
                                                   >> 376 
                                                   >> 377 static int show_cpuinfo(struct seq_file *m, void *v)
                                                   >> 378 {
                                                   >> 379         const char *cpu, *mmu, *fpu;
                                                   >> 380         unsigned long clockfreq, clockfactor;
                                                   >> 381 
                                                   >> 382 #define LOOP_CYCLES_68020       (8)
                                                   >> 383 #define LOOP_CYCLES_68030       (8)
                                                   >> 384 #define LOOP_CYCLES_68040       (3)
                                                   >> 385 #define LOOP_CYCLES_68060       (1)
                                                   >> 386 
                                                   >> 387         if (CPU_IS_020) {
                                                   >> 388                 cpu = "68020";
                                                   >> 389                 clockfactor = LOOP_CYCLES_68020;
                                                   >> 390         } else if (CPU_IS_030) {
                                                   >> 391                 cpu = "68030";
                                                   >> 392                 clockfactor = LOOP_CYCLES_68030;
                                                   >> 393         } else if (CPU_IS_040) {
                                                   >> 394                 cpu = "68040";
                                                   >> 395                 clockfactor = LOOP_CYCLES_68040;
                                                   >> 396         } else if (CPU_IS_060) {
                                                   >> 397                 cpu = "68060";
                                                   >> 398                 clockfactor = LOOP_CYCLES_68060;
                                                   >> 399         } else {
                                                   >> 400                 cpu = "680x0";
                                                   >> 401                 clockfactor = 0;
                                                   >> 402         }
                                                   >> 403 
                                                   >> 404 #ifdef CONFIG_M68KFPU_EMU_ONLY
                                                   >> 405         fpu = "none(soft float)";
                                                   >> 406 #else
                                                   >> 407         if (m68k_fputype & FPU_68881)
                                                   >> 408                 fpu = "68881";
                                                   >> 409         else if (m68k_fputype & FPU_68882)
                                                   >> 410                 fpu = "68882";
                                                   >> 411         else if (m68k_fputype & FPU_68040)
                                                   >> 412                 fpu = "68040";
                                                   >> 413         else if (m68k_fputype & FPU_68060)
                                                   >> 414                 fpu = "68060";
                                                   >> 415         else if (m68k_fputype & FPU_SUNFPA)
                                                   >> 416                 fpu = "Sun FPA";
                                                   >> 417         else
                                                   >> 418                 fpu = "none";
                                                   >> 419 #endif
                                                   >> 420 
                                                   >> 421         if (m68k_mmutype & MMU_68851)
                                                   >> 422                 mmu = "68851";
                                                   >> 423         else if (m68k_mmutype & MMU_68030)
                                                   >> 424                 mmu = "68030";
                                                   >> 425         else if (m68k_mmutype & MMU_68040)
                                                   >> 426                 mmu = "68040";
                                                   >> 427         else if (m68k_mmutype & MMU_68060)
                                                   >> 428                 mmu = "68060";
                                                   >> 429         else if (m68k_mmutype & MMU_SUN3)
                                                   >> 430                 mmu = "Sun-3";
                                                   >> 431         else if (m68k_mmutype & MMU_APOLLO)
                                                   >> 432                 mmu = "Apollo";
                                                   >> 433         else
                                                   >> 434                 mmu = "unknown";
                                                   >> 435 
                                                   >> 436         clockfreq = loops_per_jiffy * HZ * clockfactor;
                                                   >> 437 
                                                   >> 438         seq_printf(m, "CPU:\t\t%s\n"
                                                   >> 439                    "MMU:\t\t%s\n"
                                                   >> 440                    "FPU:\t\t%s\n"
                                                   >> 441                    "Clocking:\t%lu.%1luMHz\n"
                                                   >> 442                    "BogoMips:\t%lu.%02lu\n"
                                                   >> 443                    "Calibration:\t%lu loops\n",
                                                   >> 444                    cpu, mmu, fpu,
                                                   >> 445                    clockfreq/1000000,(clockfreq/100000)%10,
                                                   >> 446                    loops_per_jiffy/(500000/HZ),(loops_per_jiffy/(5000/HZ))%100,
                                                   >> 447                    loops_per_jiffy);
                                                   >> 448         return 0;
                                                   >> 449 }
                                                   >> 450 
                                                   >> 451 static void *c_start(struct seq_file *m, loff_t *pos)
                                                   >> 452 {
                                                   >> 453         return *pos < 1 ? (void *)1 : NULL;
                                                   >> 454 }
                                                   >> 455 static void *c_next(struct seq_file *m, void *v, loff_t *pos)
                                                   >> 456 {
                                                   >> 457         ++*pos;
                                                   >> 458         return NULL;
                                                   >> 459 }
                                                   >> 460 static void c_stop(struct seq_file *m, void *v)
                                                   >> 461 {
                                                   >> 462 }
                                                   >> 463 const struct seq_operations cpuinfo_op = {
                                                   >> 464         .start  = c_start,
                                                   >> 465         .next   = c_next,
                                                   >> 466         .stop   = c_stop,
                                                   >> 467         .show   = show_cpuinfo,
                                                   >> 468 };
                                                   >> 469 
                                                   >> 470 #ifdef CONFIG_PROC_HARDWARE
                                                   >> 471 static int hardware_proc_show(struct seq_file *m, void *v)
                                                   >> 472 {
                                                   >> 473         char model[80];
                                                   >> 474         unsigned long mem;
                                                   >> 475         int i;
                                                   >> 476 
                                                   >> 477         if (mach_get_model)
                                                   >> 478                 mach_get_model(model);
                                                   >> 479         else
                                                   >> 480                 strcpy(model, "Unknown m68k");
                                                   >> 481 
                                                   >> 482         seq_printf(m, "Model:\t\t%s\n", model);
                                                   >> 483         for (mem = 0, i = 0; i < m68k_num_memory; i++)
                                                   >> 484                 mem += m68k_memory[i].size;
                                                   >> 485         seq_printf(m, "System Memory:\t%ldK\n", mem >> 10);
                                                   >> 486 
                                                   >> 487         if (mach_get_hardware_list)
                                                   >> 488                 mach_get_hardware_list(m);
                                                   >> 489 
                                                   >> 490         return 0;
                                                   >> 491 }
                                                   >> 492 
                                                   >> 493 static int hardware_proc_open(struct inode *inode, struct file *file)
                                                   >> 494 {
                                                   >> 495         return single_open(file, hardware_proc_show, NULL);
                                                   >> 496 }
                                                   >> 497 
                                                   >> 498 static const struct file_operations hardware_proc_fops = {
                                                   >> 499         .open           = hardware_proc_open,
                                                   >> 500         .read           = seq_read,
                                                   >> 501         .llseek         = seq_lseek,
                                                   >> 502         .release        = single_release,
                                                   >> 503 };
                                                   >> 504 
                                                   >> 505 static int __init proc_hardware_init(void)
                                                   >> 506 {
                                                   >> 507         proc_create("hardware", 0, NULL, &hardware_proc_fops);
                                                   >> 508         return 0;
                                                   >> 509 }
                                                   >> 510 module_init(proc_hardware_init);
                                                   >> 511 #endif
                                                   >> 512 
                                                   >> 513 void check_bugs(void)
                                                   >> 514 {
                                                   >> 515 #ifndef CONFIG_M68KFPU_EMU
                                                   >> 516         if (m68k_fputype == 0) {
                                                   >> 517                 printk(KERN_EMERG "*** YOU DO NOT HAVE A FLOATING POINT UNIT, "
                                                   >> 518                         "WHICH IS REQUIRED BY LINUX/M68K ***\n");
                                                   >> 519                 printk(KERN_EMERG "Upgrade your hardware or join the FPU "
                                                   >> 520                         "emulation project\n");
                                                   >> 521                 panic("no FPU");
                                                   >> 522         }
                                                   >> 523 #endif /* !CONFIG_M68KFPU_EMU */
                                                   >> 524 }
                                                   >> 525 
                                                   >> 526 #ifdef CONFIG_ADB
                                                   >> 527 static int __init adb_probe_sync_enable (char *str) {
                                                   >> 528         extern int __adb_probe_sync;
                                                   >> 529         __adb_probe_sync = 1;
                                                   >> 530         return 1;
                                                   >> 531 }
                                                   >> 532 
                                                   >> 533 __setup("adb_sync", adb_probe_sync_enable);
                                                   >> 534 #endif /* CONFIG_ADB */
 12                                                   535 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp