This source file includes following definitions.
- find_end_memory
- setup_arch
- sys_ioperm
- get_cpuinfo
1
2
3
4
5
6
7
8
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
42
43
44
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
54
55
56
57 struct screen_info screen_info = {
58 0, 0,
59 { 0, 0 },
60 0,
61 0,
62 80,
63 0,0,0,
64 25,
65 1,
66 16
67 };
68
69 static unsigned long find_end_memory(void)
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
85 high = (high + PAGE_SIZE) & (PAGE_MASK*2);
86 return PAGE_OFFSET + high;
87 }
88
89 void setup_arch(char **cmdline_p,
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);
97
98 ROOT_DEV = 0x0802;
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)
112 {
113 return -EIO;
114 }
115
116
117
118
119
120 int get_cpuinfo(char *buffer)
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 }