root/arch/alpha/kernel/setup.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. find_end_memory
  2. setup_arch
  3. sys_ioperm
  4. get_cpuinfo

   1 /*
   2  *  linux/arch/alpha/kernel/setup.c
   3  *
   4  *  Copyright (C) 1995  Linus Torvalds
   5  */
   6 
   7 /*
   8  * bootup setup stuff..
   9  */
  10 
  11 #include <linux/errno.h>
  12 #include <linux/sched.h>
  13 #include <linux/kernel.h>
  14 #include <linux/mm.h>
  15 #include <linux/stddef.h>
  16 #include <linux/unistd.h>
  17 #include <linux/ptrace.h>
  18 #include <linux/malloc.h>
  19 #include <linux/ldt.h>
  20 #include <linux/user.h>
  21 #include <linux/a.out.h>
  22 #include <linux/tty.h>
  23 #include <linux/delay.h>
  24 
  25 #include <asm/segment.h>
  26 #include <asm/system.h>
  27 #include <asm/hwrpb.h>
  28 #include <asm/dma.h>
  29 #include <asm/io.h>
  30 
  31 struct hae hae = {
  32         0,
  33         (unsigned long*) HAE_ADDRESS
  34 };
  35 
  36 struct hwrpb_struct *hwrpb;
  37 
  38 unsigned char aux_device_present = 0xaa;
  39 
  40 /*
  41  * This is setup by the secondary bootstrap loader.  Because
  42  * the zero page is zeroed out as soon as the vm system is
  43  * initialized, we need to copy things out into a more permanent
  44  * place.
  45  */
  46 #define PARAM                   ZERO_PGE
  47 #define COMMAND_LINE            ((char*)(PARAM + 0x0000))
  48 #define COMMAND_LINE_SIZE       256
  49 
  50 static char command_line[COMMAND_LINE_SIZE] = { 0, };
  51 
  52 /*
  53  * The format of "screen_info" is strange, and due to early
  54  * i386-setup code. This is just enough to make the console
  55  * code think we're on a VGA color display.
  56  */
  57 struct screen_info screen_info = {
  58         0, 0,                   /* orig-x, orig-y */
  59         { 0, 0 },               /* unused */
  60         0,                      /* orig-video-page */
  61         0,                      /* orig-video-mode */
  62         80,                     /* orig-video-cols */
  63         0,0,0,                  /* ega_ax, ega_bx, ega_cx */
  64         25,                     /* orig-video-lines */
  65         1,                      /* orig-video-isVGA */
  66         16                      /* orig-video-points */
  67 };
  68 
  69 static unsigned long find_end_memory(void)
     /* [previous][next][first][last][top][bottom][index][help] */
  70 {
  71         int i;
  72         unsigned long high = 0;
  73         struct memclust_struct * cluster;
  74         struct memdesc_struct * memdesc;
  75 
  76         memdesc = (struct memdesc_struct *) (INIT_HWRPB->mddt_offset + (unsigned long) INIT_HWRPB);
  77         cluster = memdesc->cluster;
  78         for (i = memdesc->numclusters ; i > 0; i--, cluster++) {
  79                 unsigned long tmp;
  80                 tmp = (cluster->start_pfn + cluster->numpages) << PAGE_SHIFT;
  81                 if (tmp > high)
  82                         high = tmp;
  83         }
  84         /* round it up to an even number of pages.. */
  85         high = (high + PAGE_SIZE) & (PAGE_MASK*2);
  86         return PAGE_OFFSET + high;
  87 }
  88 
  89 void setup_arch(char **cmdline_p,
     /* [previous][next][first][last][top][bottom][index][help] */
  90         unsigned long * memory_start_p, unsigned long * memory_end_p)
  91 {
  92         extern int _end;
  93 
  94         hwrpb = (struct hwrpb_struct*)(IDENT_ADDR + INIT_HWRPB->phys_addr);
  95 
  96         set_hae(hae.cache);             /* sync HAE register w/hae_cache */
  97 
  98         ROOT_DEV = 0x0802;              /* sda2 */
  99         command_line[COMMAND_LINE_SIZE - 1] = '\0';
 100         strcpy(command_line, COMMAND_LINE);
 101 
 102         *cmdline_p = command_line;
 103         *memory_start_p = (unsigned long) &_end;
 104         *memory_end_p = find_end_memory();
 105 
 106 #ifdef CONFIG_PCI
 107         *memory_start_p = lca_init(*memory_start_p, *memory_end_p);
 108 #endif
 109 }
 110 
 111 asmlinkage int sys_ioperm(unsigned long from, unsigned long num, int on)
     /* [previous][next][first][last][top][bottom][index][help] */
 112 {
 113         return -EIO;
 114 }
 115 
 116 
 117 /*
 118  * BUFFER is PAGE_SIZE bytes long.
 119  */
 120 int get_cpuinfo(char *buffer)
     /* [previous][next][first][last][top][bottom][index][help] */
 121 {
 122         const char *cpu_name[] = {
 123                 "EV3", "EV4", "Unknown 1", "LCA4", "EV5", "EV45"
 124         };
 125         const char *systype_name[] = {
 126                 "ADU", "Cobra", "Ruby", "Flamingo", "Unknown 1", "Jensen",
 127                 "Pelican", "Unknown 2", "Sable", "AXPvme", "Noname",
 128                 "Turbolaser", "Avanti", "Mustang", "Alcor", "Unknown 3",
 129                 "Mikasa", "Unknown3", "EB66", "EB64+"
 130         };
 131         struct percpu_struct *cpu;
 132         unsigned int cpu_index, system_index;
 133         extern struct unaligned_stat {
 134                 unsigned long count, va, pc;
 135         } unaligned;
 136 #       define N(a)     (sizeof(a)/sizeof(a[0]))
 137 
 138         cpu = (struct percpu_struct*)((char*)hwrpb + hwrpb->processor_offset);
 139         cpu_index = (unsigned) (cpu->type - 1);
 140         system_index = (unsigned) (hwrpb->sys_type - 1);
 141 
 142         return sprintf(buffer,
 143                        "cpu\t\t\t: Alpha\n"
 144                        "cpu model\t\t: %s\n"
 145                        "cpu variation\t\t: %ld\n"
 146                        "cpu revision\t\t: %ld\n"
 147                        "cpu serial number\t: %s\n"
 148                        "system type\t\t: %s\n"
 149                        "system variation\t: %ld\n"
 150                        "system revision\t\t: %ld\n"
 151                        "system serial number\t: %s\n"
 152                        "cycle frequency [Hz]\t: %lu\n"
 153                        "timer frequency [Hz]\t: %lu.%02lu\n"
 154                        "page size [bytes]\t: %ld\n"
 155                        "phys. address bits\t: %ld\n"
 156                        "max. addr. space #\t: %ld\n"
 157                        "BogoMIPS\t\t: %lu.%02lu\n"
 158                        "unaligned accesses\t: %ld (pc=%lx,va=%lx)\n",
 159 
 160                        (cpu_index < N(cpu_name) ? cpu_name[cpu_index] : "Unknown"),
 161                        cpu->variation, cpu->revision, (char*)cpu->serial_no,
 162                        (system_index < N(systype_name) ? systype_name[system_index] : "Unknown"),
 163                        hwrpb->sys_variation, hwrpb->sys_revision,
 164                        (char*)hwrpb->ssn,
 165                        hwrpb->cycle_freq,
 166                        hwrpb->intr_freq / 4096,
 167                        (100 * hwrpb->intr_freq / 4096) % 100,
 168                        hwrpb->pagesize,
 169                        hwrpb->pa_bits,
 170                        hwrpb->max_asn,
 171                        loops_per_sec / 500000, (loops_per_sec / 5000) % 100,
 172                        unaligned.count, unaligned.pc, unaligned.va);
 173 #       undef N
 174 }

/* [previous][next][first][last][top][bottom][index][help] */