kernel: remove references to TARGET_ubicom32
[openwrt/staging/chunkeey.git] / toolchain / kernel-headers / patches-2.6.30 / 100-ubicom32_headers.patch
1 --- /dev/null
2 +++ b/arch/ubicom32/include/asm/a.out.h
3 @@ -0,0 +1,47 @@
4 +/*
5 + * arch/ubicom32/include/asm/a.out.h
6 + * Definitions for Ubicom32 a.out executable format.
7 + *
8 + * (C) Copyright 2009, Ubicom, Inc.
9 + *
10 + * This file is part of the Ubicom32 Linux Kernel Port.
11 + *
12 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
13 + * it and/or modify it under the terms of the GNU General Public License
14 + * as published by the Free Software Foundation, either version 2 of the
15 + * License, or (at your option) any later version.
16 + *
17 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
18 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
19 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
20 + * the GNU General Public License for more details.
21 + *
22 + * You should have received a copy of the GNU General Public License
23 + * along with the Ubicom32 Linux Kernel Port. If not,
24 + * see <http://www.gnu.org/licenses/>.
25 + *
26 + * Ubicom32 implementation derived from (with many thanks):
27 + * arch/m68knommu
28 + * arch/blackfin
29 + * arch/parisc
30 + */
31 +#ifndef _ASM_UBICOM32_A_OUT_H
32 +#define _ASM_UBICOM32_A_OUT_H
33 +
34 +struct exec
35 +{
36 + unsigned long a_info; /* Use macros N_MAGIC, etc for access */
37 + unsigned a_text; /* length of text, in bytes */
38 + unsigned a_data; /* length of data, in bytes */
39 + unsigned a_bss; /* length of uninitialized data area for file, in bytes */
40 + unsigned a_syms; /* length of symbol table data in file, in bytes */
41 + unsigned a_entry; /* start address */
42 + unsigned a_trsize; /* length of relocation info for text, in bytes */
43 + unsigned a_drsize; /* length of relocation info for data, in bytes */
44 +};
45 +
46 +#define N_TRSIZE(a) ((a).a_trsize)
47 +#define N_DRSIZE(a) ((a).a_drsize)
48 +#define N_SYMSIZE(a) ((a).a_syms)
49 +
50 +#endif /* _ASM_UBICOM32_A_OUT_H */
51 --- /dev/null
52 +++ b/arch/ubicom32/include/asm/auxvec.h
53 @@ -0,0 +1,32 @@
54 +/*
55 + * arch/ubicom32/include/asm/auxvec.h
56 + * Symbolic values for the entries in the auxiliary table
57 + * put on the initial stack.
58 + *
59 + * (C) Copyright 2009, Ubicom, Inc.
60 + *
61 + * This file is part of the Ubicom32 Linux Kernel Port.
62 + *
63 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
64 + * it and/or modify it under the terms of the GNU General Public License
65 + * as published by the Free Software Foundation, either version 2 of the
66 + * License, or (at your option) any later version.
67 + *
68 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
69 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
70 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
71 + * the GNU General Public License for more details.
72 + *
73 + * You should have received a copy of the GNU General Public License
74 + * along with the Ubicom32 Linux Kernel Port. If not,
75 + * see <http://www.gnu.org/licenses/>.
76 + *
77 + * Ubicom32 implementation derived from (with many thanks):
78 + * arch/m68knommu
79 + * arch/blackfin
80 + * arch/parisc
81 + */
82 +#ifndef _ASM_UBICOM32_AUXVEC_H
83 +#define _ASM_UBICOM32_AUXVEC_H
84 +
85 +#endif /* _ASM_UBICOM32_AUXVEC_H */
86 --- /dev/null
87 +++ b/arch/ubicom32/include/asm/bitops.h
88 @@ -0,0 +1,41 @@
89 +/*
90 + * arch/ubicom32/include/asm/bitops.h
91 + * Bit manipulation definitions for Ubicom32 architecture.
92 + *
93 + * (C) Copyright 2009, Ubicom, Inc.
94 + *
95 + * This file is part of the Ubicom32 Linux Kernel Port.
96 + *
97 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
98 + * it and/or modify it under the terms of the GNU General Public License
99 + * as published by the Free Software Foundation, either version 2 of the
100 + * License, or (at your option) any later version.
101 + *
102 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
103 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
104 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
105 + * the GNU General Public License for more details.
106 + *
107 + * You should have received a copy of the GNU General Public License
108 + * along with the Ubicom32 Linux Kernel Port. If not,
109 + * see <http://www.gnu.org/licenses/>.
110 + *
111 + * Ubicom32 implementation derived from (with many thanks):
112 + * arch/m68knommu
113 + * arch/blackfin
114 + * arch/parisc
115 + */
116 +#ifndef _ASM_UBICOM32_BITOPS_H
117 +#define _ASM_UBICOM32_BITOPS_H
118 +
119 +/*
120 + * Copyright 1992, Linus Torvalds.
121 + */
122 +
123 +#include <linux/compiler.h>
124 +#include <asm/byteorder.h> /* swab32 */
125 +
126 +#include <asm-generic/bitops/fls.h>
127 +#include <asm-generic/bitops/fls64.h>
128 +
129 +#endif /* _ASM_UBICOM32_BITOPS_H */
130 --- /dev/null
131 +++ b/arch/ubicom32/include/asm/board.h
132 @@ -0,0 +1,34 @@
133 +/*
134 + * arch/ubicom32/include/asm/board.h
135 + * Board init and revision definitions for Ubicom32 architecture.
136 + *
137 + * (C) Copyright 2009, Ubicom, Inc.
138 + *
139 + * This file is part of the Ubicom32 Linux Kernel Port.
140 + *
141 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
142 + * it and/or modify it under the terms of the GNU General Public License
143 + * as published by the Free Software Foundation, either version 2 of the
144 + * License, or (at your option) any later version.
145 + *
146 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
147 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
148 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
149 + * the GNU General Public License for more details.
150 + *
151 + * You should have received a copy of the GNU General Public License
152 + * along with the Ubicom32 Linux Kernel Port. If not,
153 + * see <http://www.gnu.org/licenses/>.
154 + *
155 + * Ubicom32 implementation derived from (with many thanks):
156 + * arch/m68knommu
157 + * arch/blackfin
158 + * arch/parisc
159 + */
160 +#ifndef _ASM_UBICOM32_BOARD_H
161 +#define _ASM_UBICOM32_BOARD_H
162 +
163 +extern const char *board_get_revision(void);
164 +extern void __init board_init(void);
165 +
166 +#endif /* _ASM_UBICOM32_BOARD_H */
167 --- /dev/null
168 +++ b/arch/ubicom32/include/asm/byteorder.h
169 @@ -0,0 +1,35 @@
170 +/*
171 + * arch/ubicom32/include/asm/byteorder.h
172 + * Byte order swapping utility routines.
173 + *
174 + * (C) Copyright 2009, Ubicom, Inc.
175 + *
176 + * This file is part of the Ubicom32 Linux Kernel Port.
177 + *
178 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
179 + * it and/or modify it under the terms of the GNU General Public License
180 + * as published by the Free Software Foundation, either version 2 of the
181 + * License, or (at your option) any later version.
182 + *
183 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
184 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
185 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
186 + * the GNU General Public License for more details.
187 + *
188 + * You should have received a copy of the GNU General Public License
189 + * along with the Ubicom32 Linux Kernel Port. If not,
190 + * see <http://www.gnu.org/licenses/>.
191 + *
192 + * Ubicom32 implementation derived from (with many thanks):
193 + * arch/m68knommu
194 + * arch/blackfin
195 + * arch/parisc
196 + */
197 +#ifndef _ASM_UBICOM32_BYTEORDER_H
198 +#define _ASM_UBICOM32_BYTEORDER_H
199 +
200 +#include <linux/types.h>
201 +#include <linux/byteorder/big_endian.h>
202 +
203 +#endif /* _ASM_UBICOM32_BYTEORDER_H */
204 +
205 --- /dev/null
206 +++ b/arch/ubicom32/include/asm/elf.h
207 @@ -0,0 +1,167 @@
208 +/*
209 + * arch/ubicom32/include/asm/elf.h
210 + * Definitions for elf executable format for Ubicom32 architecture.
211 + *
212 + * (C) Copyright 2009, Ubicom, Inc.
213 + *
214 + * This file is part of the Ubicom32 Linux Kernel Port.
215 + *
216 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
217 + * it and/or modify it under the terms of the GNU General Public License
218 + * as published by the Free Software Foundation, either version 2 of the
219 + * License, or (at your option) any later version.
220 + *
221 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
222 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
223 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
224 + * the GNU General Public License for more details.
225 + *
226 + * You should have received a copy of the GNU General Public License
227 + * along with the Ubicom32 Linux Kernel Port. If not,
228 + * see <http://www.gnu.org/licenses/>.
229 + *
230 + * Ubicom32 implementation derived from (with many thanks):
231 + * arch/m68knommu
232 + * arch/blackfin
233 + * arch/parisc
234 + */
235 +#ifndef _ASM_UBICOM32_ELF_H
236 +#define _ASM_UBICOM32_ELF_H
237 +
238 +/*
239 + * ELF register definitions..
240 + */
241 +
242 +#include <asm/ptrace.h>
243 +#include <asm/user.h>
244 +
245 +/*
246 + * Processor specific flags for the ELF header e_flags field.
247 + */
248 +#define EF_UBICOM32_V3 0x00000001 /* -fmarch=ubicom32v3 */
249 +#define EF_UBICOM32_V4 0x00000002 /* -fmarch=ubicom32v4 */
250 +#define EF_UBICOM32_PIC 0x80000000 /* -fpic */
251 +#define EF_UBICOM32_FDPIC 0x40000000 /* -mfdpic */
252 +
253 +/*
254 + * Ubicom32 ELF relocation types
255 + */
256 +#define R_UBICOM32_NONE 0
257 +#define R_UBICOM32_16 1
258 +#define R_UBICOM32_32 2
259 +#define R_UBICOM32_LO16 3
260 +#define R_UBICOM32_HI16 4
261 +#define R_UBICOM32_21_PCREL 5
262 +#define R_UBICOM32_24_PCREL 6
263 +#define R_UBICOM32_HI24 7
264 +#define R_UBICOM32_LO7_S 8
265 +#define R_UBICOM32_LO7_2_S 9
266 +#define R_UBICOM32_LO7_4_S 10
267 +#define R_UBICOM32_LO7_D 11
268 +#define R_UBICOM32_LO7_2_D 12
269 +#define R_UBICOM32_LO7_4_D 13
270 +#define R_UBICOM32_32_HARVARD 14
271 +#define R_UBICOM32_LO7_CALLI 15
272 +#define R_UBICOM32_LO16_CALLI 16
273 +#define R_UBICOM32_GOT_HI24 17
274 +#define R_UBICOM32_GOT_LO7_S 18
275 +#define R_UBICOM32_GOT_LO7_2_S 19
276 +#define R_UBICOM32_GOT_LO7_4_S 20
277 +#define R_UBICOM32_GOT_LO7_D 21
278 +#define R_UBICOM32_GOT_LO7_2_D 22
279 +#define R_UBICOM32_GOT_LO7_4_D 23
280 +#define R_UBICOM32_FUNCDESC_GOT_HI24 24
281 +#define R_UBICOM32_FUNCDESC_GOT_LO7_S 25
282 +#define R_UBICOM32_FUNCDESC_GOT_LO7_2_S 26
283 +#define R_UBICOM32_FUNCDESC_GOT_LO7_4_S 27
284 +#define R_UBICOM32_FUNCDESC_GOT_LO7_D 28
285 +#define R_UBICOM32_FUNCDESC_GOT_LO7_2_D 29
286 +#define R_UBICOM32_FUNCDESC_GOT_LO7_4_D 30
287 +#define R_UBICOM32_GOT_LO7_CALLI 31
288 +#define R_UBICOM32_FUNCDESC_GOT_LO7_CALLI 32
289 +#define R_UBICOM32_FUNCDESC_VALUE 33
290 +#define R_UBICOM32_FUNCDESC 34
291 +#define R_UBICOM32_GOTOFFSET_LO 35
292 +#define R_UBICOM32_GOTOFFSET_HI 36
293 +#define R_UBICOM32_FUNCDESC_GOTOFFSET_LO 37
294 +#define R_UBICOM32_FUNCDESC_GOTOFFSET_HI 38
295 +#define R_UBICOM32_GNU_VTINHERIT 200
296 +#define R_UBICOM32_GNU_VTENTRY 201
297 +
298 +typedef unsigned long elf_greg_t;
299 +
300 +#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
301 +typedef elf_greg_t elf_gregset_t[ELF_NGREG];
302 +
303 +typedef struct user_ubicom32fp_struct elf_fpregset_t;
304 +
305 +/*
306 + * This is used to ensure we don't load something for the wrong architecture.
307 + */
308 +#define elf_check_arch(x) ((x)->e_machine == EM_UBICOM32)
309 +
310 +#define elf_check_fdpic(x) ((x)->e_flags & EF_UBICOM32_FDPIC)
311 +
312 +#define elf_check_const_displacement(x) ((x)->e_flags & EF_UBICOM32_PIC)
313 +
314 +/*
315 + * These are used to set parameters in the core dumps.
316 + */
317 +#define ELF_CLASS ELFCLASS32
318 +#define ELF_DATA ELFDATA2MSB
319 +#define ELF_ARCH EM_UBICOM32
320 +
321 +/* For SVR4/m68k the function pointer to be registered with `atexit' is
322 + passed in %a1. Although my copy of the ABI has no such statement, it
323 + is actually used on ASV. */
324 +#define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0
325 +
326 +#define ELF_FDPIC_PLAT_INIT(_regs, _exec_map_addr, _interp_map_addr, \
327 + _dynamic_addr) \
328 + do { \
329 + _regs->dn[1] = _exec_map_addr; \
330 + _regs->dn[2] = _interp_map_addr; \
331 + _regs->dn[3] = _dynamic_addr; \
332 + _regs->an[1] = 0; /* dl_fini will be set by ldso */ \
333 + } while (0)
334 +
335 +#define USE_ELF_CORE_DUMP
336 +#define ELF_EXEC_PAGESIZE 4096
337 +
338 +#ifdef __KERNEL__
339 +#ifdef CONFIG_UBICOM32_V4
340 +#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V4)
341 +#elif defined CONFIG_UBICOM32_V3
342 +#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V3)
343 +#else
344 +#error Unknown/Unsupported ubicom32 architecture.
345 +#endif
346 +#endif
347 +
348 +/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
349 + use of this is to invoke "./ld.so someprog" to test out a new version of
350 + the loader. We need to make sure that it is out of the way of the program
351 + that it will "exec", and that there is sufficient room for the brk. */
352 +
353 +#define ELF_ET_DYN_BASE 0xD0000000UL
354 +
355 +/*
356 + * For Ubicom32, the elf_gregset_t and struct pt_regs are the same size
357 + * data structure so a copy is performed instead of providing the
358 + * ELF_CORE_COPY_REGS macro.
359 + */
360 +
361 +/* This yields a mask that user programs can use to figure out what
362 + instruction set this cpu supports. */
363 +
364 +#define ELF_HWCAP (0)
365 +
366 +/* This yields a string that ld.so will use to load implementation
367 + specific libraries for optimization. This is more specific in
368 + intent than poking at uname or /proc/cpuinfo. */
369 +
370 +#define ELF_PLATFORM (NULL)
371 +
372 +#define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
373 +
374 +#endif /* _ASM_UBICOM32_ELF_H */
375 --- /dev/null
376 +++ b/arch/ubicom32/include/asm/errno.h
377 @@ -0,0 +1,33 @@
378 +/*
379 + * arch/ubicom32/include/asm/errno.h
380 + * Generic errno.h for Ubicom32 architecture.
381 + *
382 + * (C) Copyright 2009, Ubicom, Inc.
383 + *
384 + * This file is part of the Ubicom32 Linux Kernel Port.
385 + *
386 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
387 + * it and/or modify it under the terms of the GNU General Public License
388 + * as published by the Free Software Foundation, either version 2 of the
389 + * License, or (at your option) any later version.
390 + *
391 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
392 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
393 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
394 + * the GNU General Public License for more details.
395 + *
396 + * You should have received a copy of the GNU General Public License
397 + * along with the Ubicom32 Linux Kernel Port. If not,
398 + * see <http://www.gnu.org/licenses/>.
399 + *
400 + * Ubicom32 implementation derived from (with many thanks):
401 + * arch/m68knommu
402 + * arch/blackfin
403 + * arch/parisc
404 + */
405 +#ifndef _ASM_UBICOM32_ERRNO_H
406 +#define _ASM_UBICOM32_ERRNO_H
407 +
408 +#include <asm-generic/errno.h>
409 +
410 +#endif /* _ASM_UBICOM32_ERRNO_H */
411 --- /dev/null
412 +++ b/arch/ubicom32/include/asm/fcntl.h
413 @@ -0,0 +1,38 @@
414 +/*
415 + * arch/ubicom32/include/asm/fcntl.h
416 + * File control bit definitions for Ubicom32 architecture.
417 + *
418 + * (C) Copyright 2009, Ubicom, Inc.
419 + *
420 + * This file is part of the Ubicom32 Linux Kernel Port.
421 + *
422 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
423 + * it and/or modify it under the terms of the GNU General Public License
424 + * as published by the Free Software Foundation, either version 2 of the
425 + * License, or (at your option) any later version.
426 + *
427 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
428 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
429 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
430 + * the GNU General Public License for more details.
431 + *
432 + * You should have received a copy of the GNU General Public License
433 + * along with the Ubicom32 Linux Kernel Port. If not,
434 + * see <http://www.gnu.org/licenses/>.
435 + *
436 + * Ubicom32 implementation derived from (with many thanks):
437 + * arch/m68knommu
438 + * arch/blackfin
439 + * arch/parisc
440 + */
441 +#ifndef _ASM_UBICOM32_FCNTL_H
442 +#define _ASM_UBICOM32_FCNTL_H
443 +
444 +#define O_DIRECTORY 040000 /* must be a directory */
445 +#define O_NOFOLLOW 0100000 /* don't follow links */
446 +#define O_DIRECT 0200000 /* direct disk access hint - currently ignored */
447 +#define O_LARGEFILE 0400000
448 +
449 +#include <asm-generic/fcntl.h>
450 +
451 +#endif /* _ASM_UBICOM32_FCNTL_H */
452 --- /dev/null
453 +++ b/arch/ubicom32/include/asm/flat.h
454 @@ -0,0 +1,73 @@
455 +/*
456 + * arch/ubicom32/include/asm/flat.h
457 + * Definitions to support flat-format executables.
458 + *
459 + * (C) Copyright 2009, Ubicom, Inc.
460 + *
461 + * This file is part of the Ubicom32 Linux Kernel Port.
462 + *
463 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
464 + * it and/or modify it under the terms of the GNU General Public License
465 + * as published by the Free Software Foundation, either version 2 of the
466 + * License, or (at your option) any later version.
467 + *
468 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
469 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
470 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
471 + * the GNU General Public License for more details.
472 + *
473 + * You should have received a copy of the GNU General Public License
474 + * along with the Ubicom32 Linux Kernel Port. If not,
475 + * see <http://www.gnu.org/licenses/>.
476 + *
477 + * Ubicom32 implementation derived from (with many thanks):
478 + * arch/m68knommu
479 + * arch/blackfin
480 + * arch/parisc
481 + */
482 +
483 +#ifndef _ASM_UBICOM32_FLAT_H
484 +#define _ASM_UBICOM32_FLAT_H
485 +
486 +#define ARCH_FLAT_ALIGN 0x80
487 +#define ARCH_FLAT_ALIGN_TEXT 1
488 +
489 +#define R_UBICOM32_32 2
490 +#define R_UBICOM32_HI24 7
491 +#define R_UBICOM32_LO7_S 8
492 +#define R_UBICOM32_LO7_2_S 9
493 +#define R_UBICOM32_LO7_4_S 10
494 +#define R_UBICOM32_LO7_D 11
495 +#define R_UBICOM32_LO7_2_D 12
496 +#define R_UBICOM32_LO7_4_D 13
497 +#define R_UBICOM32_LO7_CALLI 15
498 +#define R_UBICOM32_LO16_CALLI 16
499 +
500 +extern void ubicom32_flat_put_addr_at_rp(unsigned long *rp, u32_t val, u32_t rval, unsigned long *p);
501 +extern unsigned long ubicom32_flat_get_addr_from_rp(unsigned long *rp, u32_t relval, u32_t flags, unsigned long *p);
502 +
503 +#define flat_stack_align(sp) /* nothing needed */
504 +#define flat_argvp_envp_on_stack() 1
505 +#define flat_old_ram_flag(flags) (flags)
506 +#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
507 +#define flat_get_addr_from_rp(rp, relval, flags, p) (ubicom32_flat_get_addr_from_rp(rp, relval,flags, p))
508 +#define flat_put_addr_at_rp(rp, val, relval) do {ubicom32_flat_put_addr_at_rp(rp, val, relval, &persistent);} while(0)
509 +#define flat_get_relocate_addr(rel) ((persistent) ? (persistent & 0x07ffffff) : (rel & 0x07ffffff))
510 +
511 +static inline int flat_set_persistent(unsigned int relval, unsigned long *p)
512 +{
513 + if (*p) {
514 + return 0;
515 + } else {
516 + if ((relval >> 27) != R_UBICOM32_32) {
517 + /*
518 + * Something other than UBICOM32_32. The next entry has the relocation.
519 + */
520 + *p = relval;
521 + return 1;
522 + }
523 + }
524 + return 0;
525 +}
526 +
527 +#endif /* _ASM_UBICOM32_FLAT_H */
528 --- /dev/null
529 +++ b/arch/ubicom32/include/asm/fpu.h
530 @@ -0,0 +1,37 @@
531 +/*
532 + * arch/ubicom32/include/asm/fpu.h
533 + * Floating point state definitions for Ubicom32 architecture.
534 + *
535 + * (C) Copyright 2009, Ubicom, Inc.
536 + *
537 + * This file is part of the Ubicom32 Linux Kernel Port.
538 + *
539 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
540 + * it and/or modify it under the terms of the GNU General Public License
541 + * as published by the Free Software Foundation, either version 2 of the
542 + * License, or (at your option) any later version.
543 + *
544 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
545 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
546 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
547 + * the GNU General Public License for more details.
548 + *
549 + * You should have received a copy of the GNU General Public License
550 + * along with the Ubicom32 Linux Kernel Port. If not,
551 + * see <http://www.gnu.org/licenses/>.
552 + *
553 + * Ubicom32 implementation derived from (with many thanks):
554 + * arch/m68knommu
555 + * arch/blackfin
556 + * arch/parisc
557 + */
558 +#ifndef _ASM_UBICOM32_FPU_H
559 +#define _ASM_UBICOM32_FPU_H
560 +
561 +/*
562 + * MAX floating point unit state size (FSAVE/FRESTORE)
563 + */
564 +/* No FP unit present then... */
565 +#define FPSTATESIZE (2) /* dummy size */
566 +
567 +#endif /* _ASM_UBICOM32_FPU_H */
568 --- /dev/null
569 +++ b/arch/ubicom32/include/asm/futex.h
570 @@ -0,0 +1,33 @@
571 +/*
572 + * arch/ubicom32/include/asm/futex.h
573 + * Generic futex.h for Ubicom32 architecture.
574 + *
575 + * (C) Copyright 2009, Ubicom, Inc.
576 + *
577 + * This file is part of the Ubicom32 Linux Kernel Port.
578 + *
579 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
580 + * it and/or modify it under the terms of the GNU General Public License
581 + * as published by the Free Software Foundation, either version 2 of the
582 + * License, or (at your option) any later version.
583 + *
584 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
585 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
586 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
587 + * the GNU General Public License for more details.
588 + *
589 + * You should have received a copy of the GNU General Public License
590 + * along with the Ubicom32 Linux Kernel Port. If not,
591 + * see <http://www.gnu.org/licenses/>.
592 + *
593 + * Ubicom32 implementation derived from (with many thanks):
594 + * arch/m68knommu
595 + * arch/blackfin
596 + * arch/parisc
597 + */
598 +#ifndef _ASM_UBICOM32_FUTEX_H
599 +#define _ASM_UBICOM32_FUTEX_H
600 +
601 +#include <asm-generic/futex.h>
602 +
603 +#endif /* _ASM_UBICOM32_FUTEX_H */
604 --- /dev/null
605 +++ b/arch/ubicom32/include/asm/ioctl.h
606 @@ -0,0 +1,33 @@
607 +/*
608 + * arch/ubicom32/include/asm/ioctl.h
609 + * Generic ioctl.h for Ubicom32 architecture.
610 + *
611 + * (C) Copyright 2009, Ubicom, Inc.
612 + *
613 + * This file is part of the Ubicom32 Linux Kernel Port.
614 + *
615 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
616 + * it and/or modify it under the terms of the GNU General Public License
617 + * as published by the Free Software Foundation, either version 2 of the
618 + * License, or (at your option) any later version.
619 + *
620 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
621 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
622 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
623 + * the GNU General Public License for more details.
624 + *
625 + * You should have received a copy of the GNU General Public License
626 + * along with the Ubicom32 Linux Kernel Port. If not,
627 + * see <http://www.gnu.org/licenses/>.
628 + *
629 + * Ubicom32 implementation derived from (with many thanks):
630 + * arch/m68knommu
631 + * arch/blackfin
632 + * arch/parisc
633 + */
634 +#ifndef _ASM_UBICOM32_IOCTL_H
635 +#define _ASM_UBICOM32_IOCTL_H
636 +
637 +#include <asm-generic/ioctl.h>
638 +
639 +#endif /* _ASM_UBICOM32_IOCTL_H */
640 --- /dev/null
641 +++ b/arch/ubicom32/include/asm/ioctls.h
642 @@ -0,0 +1,111 @@
643 +/*
644 + * arch/ubicom32/include/asm/ioctls.h
645 + * Definitions of ioctls for Ubicom32 architecture.
646 + *
647 + * (C) Copyright 2009, Ubicom, Inc.
648 + *
649 + * This file is part of the Ubicom32 Linux Kernel Port.
650 + *
651 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
652 + * it and/or modify it under the terms of the GNU General Public License
653 + * as published by the Free Software Foundation, either version 2 of the
654 + * License, or (at your option) any later version.
655 + *
656 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
657 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
658 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
659 + * the GNU General Public License for more details.
660 + *
661 + * You should have received a copy of the GNU General Public License
662 + * along with the Ubicom32 Linux Kernel Port. If not,
663 + * see <http://www.gnu.org/licenses/>.
664 + *
665 + * Ubicom32 implementation derived from (with many thanks):
666 + * arch/m68knommu
667 + * arch/blackfin
668 + * arch/parisc
669 + */
670 +#ifndef _ASM_UBICOM32_IOCTLS_H
671 +#define _ASM_UBICOM32_IOCTLS_H
672 +
673 +#include <asm/ioctl.h>
674 +
675 +/* 0x54 is just a magic number to make these relatively unique ('T') */
676 +
677 +#define TCGETS 0x5401
678 +#define TCSETS 0x5402
679 +#define TCSETSW 0x5403
680 +#define TCSETSF 0x5404
681 +#define TCGETA 0x5405
682 +#define TCSETA 0x5406
683 +#define TCSETAW 0x5407
684 +#define TCSETAF 0x5408
685 +#define TCSBRK 0x5409
686 +#define TCXONC 0x540A
687 +#define TCFLSH 0x540B
688 +#define TIOCEXCL 0x540C
689 +#define TIOCNXCL 0x540D
690 +#define TIOCSCTTY 0x540E
691 +#define TIOCGPGRP 0x540F
692 +#define TIOCSPGRP 0x5410
693 +#define TIOCOUTQ 0x5411
694 +#define TIOCSTI 0x5412
695 +#define TIOCGWINSZ 0x5413
696 +#define TIOCSWINSZ 0x5414
697 +#define TIOCMGET 0x5415
698 +#define TIOCMBIS 0x5416
699 +#define TIOCMBIC 0x5417
700 +#define TIOCMSET 0x5418
701 +#define TIOCGSOFTCAR 0x5419
702 +#define TIOCSSOFTCAR 0x541A
703 +#define FIONREAD 0x541B
704 +#define TIOCINQ FIONREAD
705 +#define TIOCLINUX 0x541C
706 +#define TIOCCONS 0x541D
707 +#define TIOCGSERIAL 0x541E
708 +#define TIOCSSERIAL 0x541F
709 +#define TIOCPKT 0x5420
710 +#define FIONBIO 0x5421
711 +#define TIOCNOTTY 0x5422
712 +#define TIOCSETD 0x5423
713 +#define TIOCGETD 0x5424
714 +#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
715 +#define TIOCSBRK 0x5427 /* BSD compatibility */
716 +#define TIOCCBRK 0x5428 /* BSD compatibility */
717 +#define TIOCGSID 0x5429 /* Return the session ID of FD */
718 +#define TCGETS2 _IOR('T',0x2A, struct termios2)
719 +#define TCSETS2 _IOW('T',0x2B, struct termios2)
720 +#define TCSETSW2 _IOW('T',0x2C, struct termios2)
721 +#define TCSETSF2 _IOW('T',0x2D, struct termios2)
722 +#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
723 +#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
724 +
725 +#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
726 +#define FIOCLEX 0x5451
727 +#define FIOASYNC 0x5452
728 +#define TIOCSERCONFIG 0x5453
729 +#define TIOCSERGWILD 0x5454
730 +#define TIOCSERSWILD 0x5455
731 +#define TIOCGLCKTRMIOS 0x5456
732 +#define TIOCSLCKTRMIOS 0x5457
733 +#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
734 +#define TIOCSERGETLSR 0x5459 /* Get line status register */
735 +#define TIOCSERGETMULTI 0x545A /* Get multiport config */
736 +#define TIOCSERSETMULTI 0x545B /* Set multiport config */
737 +
738 +#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
739 +#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
740 +#define FIOQSIZE 0x545E
741 +
742 +/* Used for packet mode */
743 +#define TIOCPKT_DATA 0
744 +#define TIOCPKT_FLUSHREAD 1
745 +#define TIOCPKT_FLUSHWRITE 2
746 +#define TIOCPKT_STOP 4
747 +#define TIOCPKT_START 8
748 +#define TIOCPKT_NOSTOP 16
749 +#define TIOCPKT_DOSTOP 32
750 +
751 +#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
752 +
753 +#endif /* _ASM_UBICOM32_IOCTLS_H */
754 --- /dev/null
755 +++ b/arch/ubicom32/include/asm/ipcbuf.h
756 @@ -0,0 +1,55 @@
757 +/*
758 + * arch/ubicom32/include/asm/ipcbuf.h
759 + * Definition of ipc64_perm struct for Ubicom32 architecture.
760 + *
761 + * (C) Copyright 2009, Ubicom, Inc.
762 + *
763 + * This file is part of the Ubicom32 Linux Kernel Port.
764 + *
765 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
766 + * it and/or modify it under the terms of the GNU General Public License
767 + * as published by the Free Software Foundation, either version 2 of the
768 + * License, or (at your option) any later version.
769 + *
770 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
771 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
772 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
773 + * the GNU General Public License for more details.
774 + *
775 + * You should have received a copy of the GNU General Public License
776 + * along with the Ubicom32 Linux Kernel Port. If not,
777 + * see <http://www.gnu.org/licenses/>.
778 + *
779 + * Ubicom32 implementation derived from (with many thanks):
780 + * arch/m68knommu
781 + * arch/blackfin
782 + * arch/parisc
783 + */
784 +#ifndef _ASM_UBICOM32_IPCBUF_H
785 +#define _ASM_UBICOM32_IPCBUF_H
786 +
787 +/*
788 + * The user_ipc_perm structure for m68k architecture.
789 + * Note extra padding because this structure is passed back and forth
790 + * between kernel and user space.
791 + *
792 + * Pad space is left for:
793 + * - 32-bit mode_t and seq
794 + * - 2 miscellaneous 32-bit values
795 + */
796 +struct ipc64_perm
797 +{
798 + __kernel_key_t key;
799 + __kernel_uid32_t uid;
800 + __kernel_gid32_t gid;
801 + __kernel_uid32_t cuid;
802 + __kernel_gid32_t cgid;
803 + __kernel_mode_t mode;
804 + unsigned short __pad1;
805 + unsigned short seq;
806 + unsigned short __pad2;
807 + unsigned long __unused1;
808 + unsigned long __unused2;
809 +};
810 +
811 +#endif /* _ASM_UBICOM32_IPCBUF_H */
812 --- /dev/null
813 +++ b/arch/ubicom32/include/asm/irqflags.h
814 @@ -0,0 +1,94 @@
815 +/*
816 + * arch/ubicom32/include/asm/irqflags.h
817 + * Raw implementation of local IRQ functions.
818 + *
819 + * (C) Copyright 2009, Ubicom, Inc.
820 + *
821 + * This file is part of the Ubicom32 Linux Kernel Port.
822 + *
823 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
824 + * it and/or modify it under the terms of the GNU General Public License
825 + * as published by the Free Software Foundation, either version 2 of the
826 + * License, or (at your option) any later version.
827 + *
828 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
829 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
830 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
831 + * the GNU General Public License for more details.
832 + *
833 + * You should have received a copy of the GNU General Public License
834 + * along with the Ubicom32 Linux Kernel Port. If not,
835 + * see <http://www.gnu.org/licenses/>.
836 + *
837 + * Ubicom32 implementation derived from (with many thanks):
838 + * arch/m68knommu
839 + * arch/blackfin
840 + * arch/parisc
841 + */
842 +#ifndef _ASM_UBICOM32_IRQFLAGS_H
843 +#define _ASM_UBICOM32_IRQFLAGS_H
844 +
845 +#include <linux/thread_info.h>
846 +#include <asm/ubicom32-common.h>
847 +#include <asm/smp.h>
848 +#include <asm/ldsr.h>
849 +
850 +#if defined(CONFIG_PREEMPT)
851 +#error Not supported by Ubicom32 irq handling, yet!
852 +#endif
853 +
854 +/*
855 + * raw_local_irq_enable()
856 + * Enable interrupts for this thread.
857 + */
858 +static inline void raw_local_irq_enable(void)
859 +{
860 + ldsr_local_irq_enable();
861 +}
862 +
863 +/*
864 + * raw_local_irq_disable()
865 + * Disable interrupts for this thread.
866 + */
867 +static inline void raw_local_irq_disable(void)
868 +{
869 + ldsr_local_irq_disable();
870 +}
871 +
872 +/*
873 + * raw_local_save_flags()
874 + * Get the current IRQ state.
875 + */
876 +#define raw_local_save_flags(flags) \
877 +do { \
878 + (flags) = ldsr_local_irq_is_disabled(); \
879 +} while (0)
880 +
881 +/*
882 + * raw_local_irq_save()
883 + * Save the current interrupt state and disable interrupts.
884 + */
885 +#define raw_local_irq_save(flags) \
886 +do { \
887 + (flags) = ldsr_local_irq_save(); \
888 +} while (0)
889 +
890 +/*
891 + * raw_local_irq_restore()
892 + * Restore the IRQ state back to flags.
893 + */
894 +static inline void raw_local_irq_restore(unsigned long flags)
895 +{
896 + ldsr_local_irq_restore(flags);
897 +}
898 +
899 +/*
900 + * raw_irqs_disabled_flags()
901 + * Return true if the flags indicate that IRQ(s) are disabled.
902 + */
903 +static inline int raw_irqs_disabled_flags(unsigned long flags)
904 +{
905 + return (flags);
906 +}
907 +
908 +#endif /* _ASM_UBICOM32_IRQFLAGS_H */
909 --- /dev/null
910 +++ b/arch/ubicom32/include/asm/Kbuild
911 @@ -0,0 +1 @@
912 +include include/asm-generic/Kbuild.asm
913 --- /dev/null
914 +++ b/arch/ubicom32/include/asm/kdebug.h
915 @@ -0,0 +1,33 @@
916 +/*
917 + * arch/ubicom32/include/asm/kdebug.h
918 + * Generic kdebug.h for Ubicom32 architecture.
919 + *
920 + * (C) Copyright 2009, Ubicom, Inc.
921 + *
922 + * This file is part of the Ubicom32 Linux Kernel Port.
923 + *
924 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
925 + * it and/or modify it under the terms of the GNU General Public License
926 + * as published by the Free Software Foundation, either version 2 of the
927 + * License, or (at your option) any later version.
928 + *
929 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
930 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
931 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
932 + * the GNU General Public License for more details.
933 + *
934 + * You should have received a copy of the GNU General Public License
935 + * along with the Ubicom32 Linux Kernel Port. If not,
936 + * see <http://www.gnu.org/licenses/>.
937 + *
938 + * Ubicom32 implementation derived from (with many thanks):
939 + * arch/m68knommu
940 + * arch/blackfin
941 + * arch/parisc
942 + */
943 +#ifndef _ASM_UBICOM32_KDEBUG_H
944 +#define _ASM_UBICOM32_KDEBUG_H
945 +
946 +#include <asm-generic/kdebug.h>
947 +
948 +#endif /* _ASM_UBICOM32_KDEBUG_H */
949 --- /dev/null
950 +++ b/arch/ubicom32/include/asm/linkage.h
951 @@ -0,0 +1,34 @@
952 +/*
953 + * arch/ubicom32/include/asm/linkage.h
954 + * Definition of Ubicom32 architecture specific linkage types.
955 + *
956 + * (C) Copyright 2009, Ubicom, Inc.
957 + *
958 + * This file is part of the Ubicom32 Linux Kernel Port.
959 + *
960 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
961 + * it and/or modify it under the terms of the GNU General Public License
962 + * as published by the Free Software Foundation, either version 2 of the
963 + * License, or (at your option) any later version.
964 + *
965 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
966 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
967 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
968 + * the GNU General Public License for more details.
969 + *
970 + * You should have received a copy of the GNU General Public License
971 + * along with the Ubicom32 Linux Kernel Port. If not,
972 + * see <http://www.gnu.org/licenses/>.
973 + *
974 + * Ubicom32 implementation derived from (with many thanks):
975 + * arch/m68knommu
976 + * arch/blackfin
977 + * arch/parisc
978 + */
979 +#ifndef _ASM_UBICOM32_LINKAGE_H
980 +#define _ASM_UBICOM32_LINKAGE_H
981 +
982 +#define __ocm_text __section(.ocm_text)
983 +#define __ocm_data __section(.ocm_data)
984 +
985 +#endif /* _ASM_UBICOM32_LINKAGE_H */
986 --- /dev/null
987 +++ b/arch/ubicom32/include/asm/local.h
988 @@ -0,0 +1,33 @@
989 +/*
990 + * arch/ubicom32/include/asm/local.h
991 + * Generic local.h for Ubicom32 architecture.
992 + *
993 + * (C) Copyright 2009, Ubicom, Inc.
994 + *
995 + * This file is part of the Ubicom32 Linux Kernel Port.
996 + *
997 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
998 + * it and/or modify it under the terms of the GNU General Public License
999 + * as published by the Free Software Foundation, either version 2 of the
1000 + * License, or (at your option) any later version.
1001 + *
1002 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1003 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1004 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1005 + * the GNU General Public License for more details.
1006 + *
1007 + * You should have received a copy of the GNU General Public License
1008 + * along with the Ubicom32 Linux Kernel Port. If not,
1009 + * see <http://www.gnu.org/licenses/>.
1010 + *
1011 + * Ubicom32 implementation derived from (with many thanks):
1012 + * arch/m68knommu
1013 + * arch/blackfin
1014 + * arch/parisc
1015 + */
1016 +#ifndef _ASM_UBICOM32_LOCAL_H
1017 +#define _ASM_UBICOM32_LOCAL_H
1018 +
1019 +#include <asm-generic/local.h>
1020 +
1021 +#endif /* _ASM_UBICOM32_LOCAL_H */
1022 --- /dev/null
1023 +++ b/arch/ubicom32/include/asm/mman.h
1024 @@ -0,0 +1,44 @@
1025 +/*
1026 + * arch/ubicom32/include/asm/mman.h
1027 + * Memory mapping definitions for Ubicom32 architecture.
1028 + *
1029 + * (C) Copyright 2009, Ubicom, Inc.
1030 + *
1031 + * This file is part of the Ubicom32 Linux Kernel Port.
1032 + *
1033 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1034 + * it and/or modify it under the terms of the GNU General Public License
1035 + * as published by the Free Software Foundation, either version 2 of the
1036 + * License, or (at your option) any later version.
1037 + *
1038 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1039 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1040 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1041 + * the GNU General Public License for more details.
1042 + *
1043 + * You should have received a copy of the GNU General Public License
1044 + * along with the Ubicom32 Linux Kernel Port. If not,
1045 + * see <http://www.gnu.org/licenses/>.
1046 + *
1047 + * Ubicom32 implementation derived from (with many thanks):
1048 + * arch/m68knommu
1049 + * arch/blackfin
1050 + * arch/parisc
1051 + */
1052 +#ifndef _ASM_UBICOM32_MMAN_H
1053 +#define _ASM_UBICOM32_MMAN_H
1054 +
1055 +#include <asm-generic/mman.h>
1056 +
1057 +#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
1058 +#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
1059 +#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
1060 +#define MAP_LOCKED 0x2000 /* pages are locked */
1061 +#define MAP_NORESERVE 0x4000 /* don't check for reservations */
1062 +#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
1063 +#define MAP_NONBLOCK 0x10000 /* do not block on IO */
1064 +
1065 +#define MCL_CURRENT 1 /* lock all current mappings */
1066 +#define MCL_FUTURE 2 /* lock all future mappings */
1067 +
1068 +#endif /* _ASM_UBICOM32_MMAN_H */
1069 --- /dev/null
1070 +++ b/arch/ubicom32/include/asm/msgbuf.h
1071 @@ -0,0 +1,58 @@
1072 +/*
1073 + * arch/ubicom32/include/asm/msgbuf.h
1074 + * Definition of msqid64_ds struct for Ubicom32 architecture.
1075 + *
1076 + * (C) Copyright 2009, Ubicom, Inc.
1077 + *
1078 + * This file is part of the Ubicom32 Linux Kernel Port.
1079 + *
1080 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1081 + * it and/or modify it under the terms of the GNU General Public License
1082 + * as published by the Free Software Foundation, either version 2 of the
1083 + * License, or (at your option) any later version.
1084 + *
1085 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1086 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1087 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1088 + * the GNU General Public License for more details.
1089 + *
1090 + * You should have received a copy of the GNU General Public License
1091 + * along with the Ubicom32 Linux Kernel Port. If not,
1092 + * see <http://www.gnu.org/licenses/>.
1093 + *
1094 + * Ubicom32 implementation derived from (with many thanks):
1095 + * arch/m68knommu
1096 + * arch/blackfin
1097 + * arch/parisc
1098 + */
1099 +#ifndef _ASM_UBICOM32_MSGBUF_H
1100 +#define _ASM_UBICOM32_MSGBUF_H
1101 +
1102 +/*
1103 + * The msqid64_ds structure for ubicom32 architecture.
1104 + * Note extra padding because this structure is passed back and forth
1105 + * between kernel and user space.
1106 + *
1107 + * Pad space is left for:
1108 + * - 64-bit time_t to solve y2038 problem
1109 + * - 2 miscellaneous 32-bit values
1110 + */
1111 +
1112 +struct msqid64_ds {
1113 + struct ipc64_perm msg_perm;
1114 + __kernel_time_t msg_stime; /* last msgsnd time */
1115 + unsigned long __unused1;
1116 + __kernel_time_t msg_rtime; /* last msgrcv time */
1117 + unsigned long __unused2;
1118 + __kernel_time_t msg_ctime; /* last change time */
1119 + unsigned long __unused3;
1120 + unsigned long msg_cbytes; /* current number of bytes on queue */
1121 + unsigned long msg_qnum; /* number of messages in queue */
1122 + unsigned long msg_qbytes; /* max number of bytes on queue */
1123 + __kernel_pid_t msg_lspid; /* pid of last msgsnd */
1124 + __kernel_pid_t msg_lrpid; /* last receive pid */
1125 + unsigned long __unused4;
1126 + unsigned long __unused5;
1127 +};
1128 +
1129 +#endif /* _ASM_UBICOM32_MSGBUF_H */
1130 --- /dev/null
1131 +++ b/arch/ubicom32/include/asm/namei.h
1132 @@ -0,0 +1,38 @@
1133 +/*
1134 + * arch/ubicom32/include/asm/namei.h
1135 + * Definition of __emul_prefix() for Ubicom32 architecture.
1136 + *
1137 + * (C) Copyright 2009, Ubicom, Inc.
1138 + *
1139 + * This file is part of the Ubicom32 Linux Kernel Port.
1140 + *
1141 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1142 + * it and/or modify it under the terms of the GNU General Public License
1143 + * as published by the Free Software Foundation, either version 2 of the
1144 + * License, or (at your option) any later version.
1145 + *
1146 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1147 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1148 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1149 + * the GNU General Public License for more details.
1150 + *
1151 + * You should have received a copy of the GNU General Public License
1152 + * along with the Ubicom32 Linux Kernel Port. If not,
1153 + * see <http://www.gnu.org/licenses/>.
1154 + *
1155 + * Ubicom32 implementation derived from (with many thanks):
1156 + * arch/m68knommu
1157 + * arch/blackfin
1158 + * arch/parisc
1159 + */
1160 +#ifndef _ASM_UBICOM32_NAMEI_H
1161 +#define _ASM_UBICOM32_NAMEI_H
1162 +
1163 +/* This dummy routine maybe changed to something useful
1164 + * for /usr/gnemul/ emulation stuff.
1165 + * Look at asm-sparc/namei.h for details.
1166 + */
1167 +
1168 +#define __emul_prefix() NULL
1169 +
1170 +#endif /* _ASM_UBICOM32_NAMEI_H */
1171 --- /dev/null
1172 +++ b/arch/ubicom32/include/asm/page.h
1173 @@ -0,0 +1,106 @@
1174 +/*
1175 + * arch/ubicom32/include/asm/page.h
1176 + * Memory page related operations and definitions.
1177 + *
1178 + * (C) Copyright 2009, Ubicom, Inc.
1179 + *
1180 + * This file is part of the Ubicom32 Linux Kernel Port.
1181 + *
1182 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1183 + * it and/or modify it under the terms of the GNU General Public License
1184 + * as published by the Free Software Foundation, either version 2 of the
1185 + * License, or (at your option) any later version.
1186 + *
1187 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1188 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1189 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1190 + * the GNU General Public License for more details.
1191 + *
1192 + * You should have received a copy of the GNU General Public License
1193 + * along with the Ubicom32 Linux Kernel Port. If not,
1194 + * see <http://www.gnu.org/licenses/>.
1195 + *
1196 + * Ubicom32 implementation derived from (with many thanks):
1197 + * arch/m68knommu
1198 + * arch/blackfin
1199 + * arch/parisc
1200 + */
1201 +#ifndef _ASM_UBICOM32_PAGE_H
1202 +#define _ASM_UBICOM32_PAGE_H
1203 +
1204 +/* PAGE_SHIFT determines the page size */
1205 +
1206 +#define PAGE_SHIFT 12
1207 +#define PAGE_SIZE (1 << PAGE_SHIFT)
1208 +#define PAGE_MASK (~(PAGE_SIZE-1))
1209 +
1210 +#include <asm/setup.h>
1211 +
1212 +#ifndef __ASSEMBLY__
1213 +
1214 +#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
1215 +#define free_user_page(page, addr) free_page(addr)
1216 +
1217 +#define clear_page(page) memset((page), 0, PAGE_SIZE)
1218 +#define copy_page(to,from) memcpy((to), (from), PAGE_SIZE)
1219 +
1220 +#define clear_user_page(page, vaddr, pg) clear_page(page)
1221 +#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
1222 +
1223 +#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
1224 + alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
1225 +#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
1226 +
1227 +/*
1228 + * These are used to make use of C type-checking..
1229 + */
1230 +typedef struct { unsigned long pte; } pte_t;
1231 +typedef struct { unsigned long pmd[16]; } pmd_t;
1232 +typedef struct { unsigned long pgd; } pgd_t;
1233 +typedef struct { unsigned long pgprot; } pgprot_t;
1234 +typedef struct page *pgtable_t;
1235 +
1236 +#define pte_val(x) ((x).pte)
1237 +#define pmd_val(x) ((&x)->pmd[0])
1238 +#define pgd_val(x) ((x).pgd)
1239 +#define pgprot_val(x) ((x).pgprot)
1240 +
1241 +#define __pte(x) ((pte_t) { (x) } )
1242 +#define __pmd(x) ((pmd_t) { (x) } )
1243 +#define __pgd(x) ((pgd_t) { (x) } )
1244 +#define __pgprot(x) ((pgprot_t) { (x) } )
1245 +
1246 +extern unsigned long memory_start;
1247 +extern unsigned long memory_end;
1248 +
1249 +#endif /* !__ASSEMBLY__ */
1250 +
1251 +#include <asm/page_offset.h>
1252 +
1253 +#define PAGE_OFFSET (PAGE_OFFSET_RAW)
1254 +
1255 +#ifndef __ASSEMBLY__
1256 +
1257 +#define __pa(vaddr) virt_to_phys((void *)(vaddr))
1258 +#define __va(paddr) phys_to_virt((unsigned long)(paddr))
1259 +
1260 +#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
1261 +#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
1262 +
1263 +#define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
1264 +#define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
1265 +
1266 +#define pfn_to_page(pfn) virt_to_page(pfn_to_virt(pfn))
1267 +#define page_to_pfn(page) virt_to_pfn(page_to_virt(page))
1268 +#define pfn_valid(pfn) ((pfn) < max_mapnr)
1269 +
1270 +#define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
1271 + ((void *)(kaddr) < (void *)memory_end))
1272 +
1273 +#endif /* __ASSEMBLY__ */
1274 +
1275 +#ifdef __KERNEL__
1276 +#include <asm-generic/page.h>
1277 +#endif
1278 +
1279 +#endif /* _ASM_UBICOM32_PAGE_H */
1280 --- /dev/null
1281 +++ b/arch/ubicom32/include/asm/page_offset.h
1282 @@ -0,0 +1,35 @@
1283 +/*
1284 + * arch/ubicom32/include/asm/page_offset.h
1285 + * Definition of PAGE_OFFSET_RAW for Ubicom32 architecture.
1286 + *
1287 + * (C) Copyright 2009, Ubicom, Inc.
1288 + *
1289 + * This file is part of the Ubicom32 Linux Kernel Port.
1290 + *
1291 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1292 + * it and/or modify it under the terms of the GNU General Public License
1293 + * as published by the Free Software Foundation, either version 2 of the
1294 + * License, or (at your option) any later version.
1295 + *
1296 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1297 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1298 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1299 + * the GNU General Public License for more details.
1300 + *
1301 + * You should have received a copy of the GNU General Public License
1302 + * along with the Ubicom32 Linux Kernel Port. If not,
1303 + * see <http://www.gnu.org/licenses/>.
1304 + *
1305 + * Ubicom32 implementation derived from (with many thanks):
1306 + * arch/m68knommu
1307 + * arch/blackfin
1308 + * arch/parisc
1309 + */
1310 +
1311 +#ifndef _ASM_UBICOM32_PAGE_OFFSET_H
1312 +#define _ASM_UBICOM32_PAGE_OFFSET_H
1313 +
1314 +/* This handles the memory map.. */
1315 +#define PAGE_OFFSET_RAW 0x3ffc0000
1316 +
1317 +#endif /* _ASM_UBICOM32_PAGE_OFFSET_H */
1318 --- /dev/null
1319 +++ b/arch/ubicom32/include/asm/param.h
1320 @@ -0,0 +1,49 @@
1321 +/*
1322 + * arch/ubicom32/include/asm/param.h
1323 + * Definition of miscellaneous constants, including HZ.
1324 + *
1325 + * (C) Copyright 2009, Ubicom, Inc.
1326 + *
1327 + * This file is part of the Ubicom32 Linux Kernel Port.
1328 + *
1329 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1330 + * it and/or modify it under the terms of the GNU General Public License
1331 + * as published by the Free Software Foundation, either version 2 of the
1332 + * License, or (at your option) any later version.
1333 + *
1334 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1335 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1336 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1337 + * the GNU General Public License for more details.
1338 + *
1339 + * You should have received a copy of the GNU General Public License
1340 + * along with the Ubicom32 Linux Kernel Port. If not,
1341 + * see <http://www.gnu.org/licenses/>.
1342 + *
1343 + * Ubicom32 implementation derived from (with many thanks):
1344 + * arch/m68knommu
1345 + * arch/blackfin
1346 + * arch/parisc
1347 + */
1348 +#ifndef _ASM_UBICOM32_PARAM_H
1349 +#define _ASM_UBICOM32_PARAM_H
1350 +
1351 +#ifdef __KERNEL__
1352 +#define HZ CONFIG_HZ
1353 +#define USER_HZ HZ
1354 +#define CLOCKS_PER_SEC (USER_HZ)
1355 +#endif
1356 +
1357 +#ifndef HZ
1358 +#define HZ 100
1359 +#endif
1360 +
1361 +#define EXEC_PAGESIZE 4096
1362 +
1363 +#ifndef NOGROUP
1364 +#define NOGROUP (-1)
1365 +#endif
1366 +
1367 +#define MAXHOSTNAMELEN 64 /* max length of hostname */
1368 +
1369 +#endif /* _ASM_UBICOM32_PARAM_H */
1370 --- /dev/null
1371 +++ b/arch/ubicom32/include/asm/poll.h
1372 @@ -0,0 +1,36 @@
1373 +/*
1374 + * arch/ubicom32/include/asm/poll.h
1375 + * Ubicom32 specific poll() related flags definitions.
1376 + *
1377 + * (C) Copyright 2009, Ubicom, Inc.
1378 + *
1379 + * This file is part of the Ubicom32 Linux Kernel Port.
1380 + *
1381 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1382 + * it and/or modify it under the terms of the GNU General Public License
1383 + * as published by the Free Software Foundation, either version 2 of the
1384 + * License, or (at your option) any later version.
1385 + *
1386 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1387 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1388 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1389 + * the GNU General Public License for more details.
1390 + *
1391 + * You should have received a copy of the GNU General Public License
1392 + * along with the Ubicom32 Linux Kernel Port. If not,
1393 + * see <http://www.gnu.org/licenses/>.
1394 + *
1395 + * Ubicom32 implementation derived from (with many thanks):
1396 + * arch/m68knommu
1397 + * arch/blackfin
1398 + * arch/parisc
1399 + */
1400 +#ifndef _ASM_UBICOM32_POLL_H
1401 +#define _ASM_UBICOM32_POLL_H
1402 +
1403 +#define POLLWRNORM POLLOUT
1404 +#define POLLWRBAND 0x0100
1405 +
1406 +#include <asm-generic/poll.h>
1407 +
1408 +#endif /* _ASM_UBICOM32_POLL_H */
1409 --- /dev/null
1410 +++ b/arch/ubicom32/include/asm/posix_types.h
1411 @@ -0,0 +1,93 @@
1412 +/*
1413 + * arch/ubicom32/include/asm/posix_types.h
1414 + * Ubicom32 architecture posix types.
1415 + *
1416 + * (C) Copyright 2009, Ubicom, Inc.
1417 + * Copyright (C) 2004 Microtronix Datacom Ltd
1418 + *
1419 + * This file is part of the Ubicom32 Linux Kernel Port.
1420 + *
1421 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1422 + * it and/or modify it under the terms of the GNU General Public License
1423 + * as published by the Free Software Foundation, either version 2 of the
1424 + * License, or (at your option) any later version.
1425 + *
1426 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1427 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1428 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1429 + * the GNU General Public License for more details.
1430 + *
1431 + * You should have received a copy of the GNU General Public License
1432 + * along with the Ubicom32 Linux Kernel Port. If not,
1433 + * see <http://www.gnu.org/licenses/>.
1434 + *
1435 + * Ubicom32 implementation derived from (with many thanks):
1436 + * arch/m68knommu
1437 + * arch/blackfin
1438 + * arch/parisc
1439 + */
1440 +#ifndef __ARCH_UBICOM32_POSIX_TYPES_H
1441 +#define __ARCH_UBICOM32_POSIX_TYPES_H
1442 +
1443 +/*
1444 + * This file is generally used by user-level software, so you need to
1445 + * be a little careful about namespace pollution etc. Also, we cannot
1446 + * assume GCC is being used.
1447 + */
1448 +
1449 +typedef unsigned long __kernel_ino_t;
1450 +typedef unsigned short __kernel_mode_t;
1451 +typedef unsigned short __kernel_nlink_t;
1452 +typedef long __kernel_off_t;
1453 +typedef int __kernel_pid_t;
1454 +typedef unsigned short __kernel_ipc_pid_t;
1455 +typedef unsigned short __kernel_uid_t;
1456 +typedef unsigned short __kernel_gid_t;
1457 +typedef unsigned int __kernel_size_t;
1458 +typedef int __kernel_ssize_t;
1459 +typedef int __kernel_ptrdiff_t;
1460 +typedef long __kernel_time_t;
1461 +typedef long __kernel_suseconds_t;
1462 +typedef long __kernel_clock_t;
1463 +typedef int __kernel_timer_t;
1464 +typedef int __kernel_clockid_t;
1465 +typedef int __kernel_daddr_t;
1466 +typedef char * __kernel_caddr_t;
1467 +typedef unsigned short __kernel_uid16_t;
1468 +typedef unsigned short __kernel_gid16_t;
1469 +typedef unsigned int __kernel_uid32_t;
1470 +typedef unsigned int __kernel_gid32_t;
1471 +
1472 +typedef unsigned short __kernel_old_uid_t;
1473 +typedef unsigned short __kernel_old_gid_t;
1474 +typedef unsigned short __kernel_old_dev_t;
1475 +
1476 +#ifdef __GNUC__
1477 +typedef long long __kernel_loff_t;
1478 +#endif
1479 +
1480 +typedef struct {
1481 +#if defined(__KERNEL__) || defined(__USE_ALL)
1482 + int val[2];
1483 +#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
1484 + int __val[2];
1485 +#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
1486 +} __kernel_fsid_t;
1487 +
1488 +#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
1489 +
1490 +#undef __FD_SET
1491 +#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
1492 +
1493 +#undef __FD_CLR
1494 +#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
1495 +
1496 +#undef __FD_ISSET
1497 +#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
1498 +
1499 +#undef __FD_ZERO
1500 +#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
1501 +
1502 +#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
1503 +
1504 +#endif
1505 --- /dev/null
1506 +++ b/arch/ubicom32/include/asm/ptrace.h
1507 @@ -0,0 +1,177 @@
1508 +/*
1509 + * arch/ubicom32/include/asm/ptrace.h
1510 + * Ubicom32 architecture ptrace support.
1511 + *
1512 + * (C) Copyright 2009, Ubicom, Inc.
1513 + *
1514 + * This file is part of the Ubicom32 Linux Kernel Port.
1515 + *
1516 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1517 + * it and/or modify it under the terms of the GNU General Public License
1518 + * as published by the Free Software Foundation, either version 2 of the
1519 + * License, or (at your option) any later version.
1520 + *
1521 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1522 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1523 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1524 + * the GNU General Public License for more details.
1525 + *
1526 + * You should have received a copy of the GNU General Public License
1527 + * along with the Ubicom32 Linux Kernel Port. If not,
1528 + * see <http://www.gnu.org/licenses/>.
1529 + *
1530 + * Ubicom32 implementation derived from (with many thanks):
1531 + * arch/m68knommu
1532 + * arch/blackfin
1533 + * arch/parisc
1534 + */
1535 +#ifndef _ASM_UBICOM32_PTRACE_H
1536 +#define _ASM_UBICOM32_PTRACE_H
1537 +
1538 +#ifndef __ASSEMBLY__
1539 +
1540 +/*
1541 + * We use hard coded constants because this is shared with user
1542 + * space and the values are NOT allowed to change. Only fields
1543 + * that are intended to be exposed get values.
1544 + */
1545 +#define PT_D0 0
1546 +#define PT_D1 4
1547 +#define PT_D2 8
1548 +#define PT_D3 12
1549 +#define PT_D4 16
1550 +#define PT_D5 20
1551 +#define PT_D6 24
1552 +#define PT_D7 28
1553 +#define PT_D8 32
1554 +#define PT_D9 36
1555 +#define PT_D10 40
1556 +#define PT_D11 44
1557 +#define PT_D12 48
1558 +#define PT_D13 52
1559 +#define PT_D14 56
1560 +#define PT_D15 60
1561 +#define PT_A0 64
1562 +#define PT_A1 68
1563 +#define PT_A2 72
1564 +#define PT_A3 76
1565 +#define PT_A4 80
1566 +#define PT_A5 84
1567 +#define PT_A6 88
1568 +#define PT_A7 92
1569 +#define PT_SP 92
1570 +#define PT_ACC0HI 96
1571 +#define PT_ACC0LO 100
1572 +#define PT_MAC_RC16 104
1573 +#define PT_ACC1HI 108
1574 +#define PT_ACC1LO 112
1575 +#define PT_SOURCE3 116
1576 +#define PT_INST_CNT 120
1577 +#define PT_CSR 124
1578 +#define PT_DUMMY_UNUSED 128
1579 +#define PT_INT_MASK0 132
1580 +#define PT_INT_MASK1 136
1581 +#define PT_TRAP_CAUSE 140
1582 +#define PT_PC 144
1583 +#define PT_ORIGINAL_D0 148
1584 +#define PT_FRAME_TYPE 152
1585 +
1586 +/*
1587 + * The following 'registers' are not registers at all but are used
1588 + * locate the relocated sections.
1589 + */
1590 +#define PT_TEXT_ADDR 200
1591 +#define PT_TEXT_END_ADDR 204
1592 +#define PT_DATA_ADDR 208
1593 +#define PT_EXEC_FDPIC_LOADMAP 212
1594 +#define PT_INTERP_FDPIC_LOADMAP 216
1595 +
1596 +/*
1597 + * This struct defines the way the registers are stored on the
1598 + * stack during a system call.
1599 + */
1600 +enum thread_type {
1601 + NORMAL_THREAD,
1602 + KERNEL_THREAD,
1603 +};
1604 +
1605 +#define UBICOM32_FRAME_TYPE_SYSCALL -1 /* System call frame */
1606 +#define UBICOM32_FRAME_TYPE_INVALID 0 /* Invalid frame, no longer in use */
1607 +#define UBICOM32_FRAME_TYPE_INTERRUPT 1 /* Interrupt frame */
1608 +#define UBICOM32_FRAME_TYPE_TRAP 2 /* Trap frame */
1609 +#define UBICOM32_FRAME_TYPE_SIGTRAMP 3 /* Signal trampoline frame. */
1610 +#define UBICOM32_FRAME_TYPE_NEW_THREAD 4 /* New Thread. */
1611 +
1612 +struct pt_regs {
1613 + /*
1614 + * Data Registers
1615 + */
1616 + unsigned long dn[16];
1617 +
1618 + /*
1619 + * Address Registers
1620 + */
1621 + unsigned long an[8];
1622 +
1623 + /*
1624 + * Per thread misc registers.
1625 + */
1626 + unsigned long acc0[2];
1627 + unsigned long mac_rc16;
1628 + unsigned long acc1[2];
1629 + unsigned long source3;
1630 + unsigned long inst_cnt;
1631 + unsigned long csr;
1632 + unsigned long dummy_unused;
1633 + unsigned long int_mask0;
1634 + unsigned long int_mask1;
1635 + unsigned long trap_cause;
1636 + unsigned long pc;
1637 + unsigned long original_dn_0;
1638 +
1639 + /*
1640 + * Frame type. Syscall frames are -1. For other types look above.
1641 + */
1642 + unsigned long frame_type;
1643 +
1644 + /*
1645 + * These fields are not exposed to ptrace.
1646 + */
1647 + unsigned long previous_pc;
1648 + long nesting_level; /* When the kernel in in user space this
1649 + * will be -1. */
1650 + unsigned long thread_type; /* This indicates if this is a kernel
1651 + * thread. */
1652 +};
1653 +
1654 +/*
1655 + * This is the extended stack used by signal handlers and the context
1656 + * switcher: it's pushed after the normal "struct pt_regs".
1657 + */
1658 +struct switch_stack {
1659 + unsigned long dummy;
1660 +};
1661 +
1662 +#ifdef __KERNEL__
1663 +
1664 +/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
1665 +#define PTRACE_GETREGS 12
1666 +#define PTRACE_SETREGS 13
1667 +
1668 +#ifndef PS_S
1669 +#define PS_S (0x2000)
1670 +#define PS_M (0x1000)
1671 +#endif
1672 +
1673 +extern int __user_mode(unsigned long sp);
1674 +
1675 +#define user_mode(regs) (__user_mode((regs->an[7])))
1676 +#define user_stack(regs) ((regs)->an[7])
1677 +#define instruction_pointer(regs) ((regs)->pc)
1678 +#define profile_pc(regs) instruction_pointer(regs)
1679 +extern void show_regs(struct pt_regs *);
1680 +#endif /* __KERNEL__ */
1681 +
1682 +#endif /* __ASSEMBLY__ */
1683 +
1684 +#endif /* _ASM_UBICOM32_PTRACE_H */
1685 --- /dev/null
1686 +++ b/arch/ubicom32/include/asm/resource.h
1687 @@ -0,0 +1,33 @@
1688 +/*
1689 + * arch/ubicom32/include/asm/resource.h
1690 + * Generic definitions for Ubicom32 architecture.
1691 + *
1692 + * (C) Copyright 2009, Ubicom, Inc.
1693 + *
1694 + * This file is part of the Ubicom32 Linux Kernel Port.
1695 + *
1696 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1697 + * it and/or modify it under the terms of the GNU General Public License
1698 + * as published by the Free Software Foundation, either version 2 of the
1699 + * License, or (at your option) any later version.
1700 + *
1701 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1702 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1703 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1704 + * the GNU General Public License for more details.
1705 + *
1706 + * You should have received a copy of the GNU General Public License
1707 + * along with the Ubicom32 Linux Kernel Port. If not,
1708 + * see <http://www.gnu.org/licenses/>.
1709 + *
1710 + * Ubicom32 implementation derived from (with many thanks):
1711 + * arch/m68knommu
1712 + * arch/blackfin
1713 + * arch/parisc
1714 + */
1715 +#ifndef _ASM_UBICOM32_RESOURCE_H
1716 +#define _ASM_UBICOM32_RESOURCE_H
1717 +
1718 +#include <asm-generic/resource.h>
1719 +
1720 +#endif /* _ASM_UBICOM32_RESOURCE_H */
1721 --- /dev/null
1722 +++ b/arch/ubicom32/include/asm/sections.h
1723 @@ -0,0 +1,33 @@
1724 +/*
1725 + * arch/ubicom32/include/asm/sections.h
1726 + * Generic sections.h definitions for Ubicom32 architecture.
1727 + *
1728 + * (C) Copyright 2009, Ubicom, Inc.
1729 + *
1730 + * This file is part of the Ubicom32 Linux Kernel Port.
1731 + *
1732 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1733 + * it and/or modify it under the terms of the GNU General Public License
1734 + * as published by the Free Software Foundation, either version 2 of the
1735 + * License, or (at your option) any later version.
1736 + *
1737 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1738 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1739 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1740 + * the GNU General Public License for more details.
1741 + *
1742 + * You should have received a copy of the GNU General Public License
1743 + * along with the Ubicom32 Linux Kernel Port. If not,
1744 + * see <http://www.gnu.org/licenses/>.
1745 + *
1746 + * Ubicom32 implementation derived from (with many thanks):
1747 + * arch/m68knommu
1748 + * arch/blackfin
1749 + * arch/parisc
1750 + */
1751 +#ifndef _ASM_UBICOM32_SECTIONS_H
1752 +#define _ASM_UBICOM32_SECTIONS_H
1753 +
1754 +#include <asm-generic/sections.h>
1755 +
1756 +#endif /* _ASM_UBICOM32_SECTIONS_H */
1757 --- /dev/null
1758 +++ b/arch/ubicom32/include/asm/segment.h
1759 @@ -0,0 +1,78 @@
1760 +/*
1761 + * arch/ubicom32/include/asm/segment.h
1762 + * Memory segment definitions for Ubicom32 architecture.
1763 + *
1764 + * (C) Copyright 2009, Ubicom, Inc.
1765 + *
1766 + * This file is part of the Ubicom32 Linux Kernel Port.
1767 + *
1768 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1769 + * it and/or modify it under the terms of the GNU General Public License
1770 + * as published by the Free Software Foundation, either version 2 of the
1771 + * License, or (at your option) any later version.
1772 + *
1773 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1774 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1775 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1776 + * the GNU General Public License for more details.
1777 + *
1778 + * You should have received a copy of the GNU General Public License
1779 + * along with the Ubicom32 Linux Kernel Port. If not,
1780 + * see <http://www.gnu.org/licenses/>.
1781 + *
1782 + * Ubicom32 implementation derived from (with many thanks):
1783 + * arch/m68knommu
1784 + * arch/blackfin
1785 + * arch/parisc
1786 + */
1787 +#ifndef _ASM_UBICOM32_SEGMENT_H
1788 +#define _ASM_UBICOM32_SEGMENT_H
1789 +
1790 +/* define constants */
1791 +/* Address spaces (FC0-FC2) */
1792 +#define USER_DATA (1)
1793 +#ifndef __USER_DS
1794 +#define __USER_DS (USER_DATA)
1795 +#endif
1796 +#define USER_PROGRAM (2)
1797 +#define SUPER_DATA (5)
1798 +#ifndef __KERNEL_DS
1799 +#define __KERNEL_DS (SUPER_DATA)
1800 +#endif
1801 +#define SUPER_PROGRAM (6)
1802 +#define CPU_SPACE (7)
1803 +
1804 +#ifndef __ASSEMBLY__
1805 +
1806 +typedef struct {
1807 + unsigned long seg;
1808 +} mm_segment_t;
1809 +
1810 +#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
1811 +#define USER_DS MAKE_MM_SEG(__USER_DS)
1812 +#define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS)
1813 +
1814 +/*
1815 + * Get/set the SFC/DFC registers for MOVES instructions
1816 + */
1817 +
1818 +static inline mm_segment_t get_fs(void)
1819 +{
1820 + return USER_DS;
1821 +}
1822 +
1823 +static inline mm_segment_t get_ds(void)
1824 +{
1825 + /* return the supervisor data space code */
1826 + return KERNEL_DS;
1827 +}
1828 +
1829 +static inline void set_fs(mm_segment_t val)
1830 +{
1831 +}
1832 +
1833 +#define segment_eq(a,b) ((a).seg == (b).seg)
1834 +
1835 +#endif /* __ASSEMBLY__ */
1836 +
1837 +#endif /* _ASM_UBICOM32_SEGMENT_H */
1838 --- /dev/null
1839 +++ b/arch/ubicom32/include/asm/sembuf.h
1840 @@ -0,0 +1,52 @@
1841 +/*
1842 + * arch/ubicom32/include/asm/sembuf.h
1843 + * The semid64_ds structure for Ubicom32 architecture.
1844 + *
1845 + * (C) Copyright 2009, Ubicom, Inc.
1846 + *
1847 + * This file is part of the Ubicom32 Linux Kernel Port.
1848 + *
1849 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1850 + * it and/or modify it under the terms of the GNU General Public License
1851 + * as published by the Free Software Foundation, either version 2 of the
1852 + * License, or (at your option) any later version.
1853 + *
1854 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1855 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1856 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1857 + * the GNU General Public License for more details.
1858 + *
1859 + * You should have received a copy of the GNU General Public License
1860 + * along with the Ubicom32 Linux Kernel Port. If not,
1861 + * see <http://www.gnu.org/licenses/>.
1862 + *
1863 + * Ubicom32 implementation derived from (with many thanks):
1864 + * arch/m68knommu
1865 + * arch/blackfin
1866 + * arch/parisc
1867 + */
1868 +#ifndef _ASM_UBICOM32_SEMBUF_H
1869 +#define _ASM_UBICOM32_SEMBUF_H
1870 +
1871 +/*
1872 + * The semid64_ds structure for ubicom32 architecture.
1873 + * Note extra padding because this structure is passed back and forth
1874 + * between kernel and user space.
1875 + *
1876 + * Pad space is left for:
1877 + * - 64-bit time_t to solve y2038 problem
1878 + * - 2 miscellaneous 32-bit values
1879 + */
1880 +
1881 +struct semid64_ds {
1882 + struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
1883 + __kernel_time_t sem_otime; /* last semop time */
1884 + unsigned long __unused1;
1885 + __kernel_time_t sem_ctime; /* last change time */
1886 + unsigned long __unused2;
1887 + unsigned long sem_nsems; /* no. of semaphores in array */
1888 + unsigned long __unused3;
1889 + unsigned long __unused4;
1890 +};
1891 +
1892 +#endif /* _ASM_UBICOM32_SEMBUF_H */
1893 --- /dev/null
1894 +++ b/arch/ubicom32/include/asm/setup.h
1895 @@ -0,0 +1,35 @@
1896 +/*
1897 + * arch/ubicom32/include/asm/setup.h
1898 + * Kernel command line length definition.
1899 + *
1900 + * (C) Copyright 2009, Ubicom, Inc.
1901 + * Copyright (C) 2004, Microtronix Datacom Ltd., All rights reserved.
1902 + *
1903 + * This file is part of the Ubicom32 Linux Kernel Port.
1904 + *
1905 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1906 + * it and/or modify it under the terms of the GNU General Public License
1907 + * as published by the Free Software Foundation, either version 2 of the
1908 + * License, or (at your option) any later version.
1909 + *
1910 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1911 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1912 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1913 + * the GNU General Public License for more details.
1914 + *
1915 + * You should have received a copy of the GNU General Public License
1916 + * along with the Ubicom32 Linux Kernel Port. If not,
1917 + * see <http://www.gnu.org/licenses/>.
1918 + *
1919 + * Ubicom32 implementation derived from (with many thanks):
1920 + * arch/m68knommu
1921 + * arch/blackfin
1922 + * arch/parisc
1923 + */
1924 +
1925 +#ifndef _ASM_UBICOM32_SETUP_H
1926 +#define _ASM_UBICOM32_SETUP_H
1927 +
1928 +#define COMMAND_LINE_SIZE 512
1929 +
1930 +#endif /* _ASM_UBICOM32_SETUP_H */
1931 --- /dev/null
1932 +++ b/arch/ubicom32/include/asm/shmbuf.h
1933 @@ -0,0 +1,69 @@
1934 +/*
1935 + * arch/ubicom32/include/asm/shmbuf.h
1936 + * The shmid64_ds structure for the Ubicom32 architecture.
1937 + *
1938 + * (C) Copyright 2009, Ubicom, Inc.
1939 + *
1940 + * This file is part of the Ubicom32 Linux Kernel Port.
1941 + *
1942 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
1943 + * it and/or modify it under the terms of the GNU General Public License
1944 + * as published by the Free Software Foundation, either version 2 of the
1945 + * License, or (at your option) any later version.
1946 + *
1947 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
1948 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
1949 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
1950 + * the GNU General Public License for more details.
1951 + *
1952 + * You should have received a copy of the GNU General Public License
1953 + * along with the Ubicom32 Linux Kernel Port. If not,
1954 + * see <http://www.gnu.org/licenses/>.
1955 + *
1956 + * Ubicom32 implementation derived from (with many thanks):
1957 + * arch/m68knommu
1958 + * arch/blackfin
1959 + * arch/parisc
1960 + */
1961 +#ifndef _ASM_UBICOM32_SHMBUF_H
1962 +#define _ASM_UBICOM32_SHMBUF_H
1963 +
1964 +/*
1965 + * The shmid64_ds structure for m68k architecture.
1966 + * Note extra padding because this structure is passed back and forth
1967 + * between kernel and user space.
1968 + *
1969 + * Pad space is left for:
1970 + * - 64-bit time_t to solve y2038 problem
1971 + * - 2 miscellaneous 32-bit values
1972 + */
1973 +
1974 +struct shmid64_ds {
1975 + struct ipc64_perm shm_perm; /* operation perms */
1976 + size_t shm_segsz; /* size of segment (bytes) */
1977 + __kernel_time_t shm_atime; /* last attach time */
1978 + unsigned long __unused1;
1979 + __kernel_time_t shm_dtime; /* last detach time */
1980 + unsigned long __unused2;
1981 + __kernel_time_t shm_ctime; /* last change time */
1982 + unsigned long __unused3;
1983 + __kernel_pid_t shm_cpid; /* pid of creator */
1984 + __kernel_pid_t shm_lpid; /* pid of last operator */
1985 + unsigned long shm_nattch; /* no. of current attaches */
1986 + unsigned long __unused4;
1987 + unsigned long __unused5;
1988 +};
1989 +
1990 +struct shminfo64 {
1991 + unsigned long shmmax;
1992 + unsigned long shmmin;
1993 + unsigned long shmmni;
1994 + unsigned long shmseg;
1995 + unsigned long shmall;
1996 + unsigned long __unused1;
1997 + unsigned long __unused2;
1998 + unsigned long __unused3;
1999 + unsigned long __unused4;
2000 +};
2001 +
2002 +#endif /* _ASM_UBICOM32_SHMBUF_H */
2003 --- /dev/null
2004 +++ b/arch/ubicom32/include/asm/shmparam.h
2005 @@ -0,0 +1,35 @@
2006 +/*
2007 + * arch/ubicom32/include/asm/shmparam.h
2008 + * Shared memory definitions for Ubicom32 architecture.
2009 + *
2010 + * (C) Copyright 2009, Ubicom, Inc.
2011 + * Copyright (C) 2004 Microtronix Datacom Ltd
2012 + *
2013 + * This file is part of the Ubicom32 Linux Kernel Port.
2014 + *
2015 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2016 + * it and/or modify it under the terms of the GNU General Public License
2017 + * as published by the Free Software Foundation, either version 2 of the
2018 + * License, or (at your option) any later version.
2019 + *
2020 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2021 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2022 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2023 + * the GNU General Public License for more details.
2024 + *
2025 + * You should have received a copy of the GNU General Public License
2026 + * along with the Ubicom32 Linux Kernel Port. If not,
2027 + * see <http://www.gnu.org/licenses/>.
2028 + *
2029 + * Ubicom32 implementation derived from (with many thanks):
2030 + * arch/m68knommu
2031 + * arch/blackfin
2032 + * arch/parisc
2033 + * Alpha, ix86, M68K, Sparc, ...et al
2034 + */
2035 +#ifndef _ASM_UBICOM32_SHMPARAM_H
2036 +#define _ASM_UBICOM32_SHMPARAM_H
2037 +
2038 +#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
2039 +
2040 +#endif /* _ASM_UBICOM32_SHMPARAM_H */
2041 --- /dev/null
2042 +++ b/arch/ubicom32/include/asm/sigcontext.h
2043 @@ -0,0 +1,37 @@
2044 +/*
2045 + * arch/ubicom32/include/asm/sigcontext.h
2046 + * Definition of sigcontext struct for Ubicom32 architecture.
2047 + *
2048 + * (C) Copyright 2009, Ubicom, Inc.
2049 + *
2050 + * This file is part of the Ubicom32 Linux Kernel Port.
2051 + *
2052 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2053 + * it and/or modify it under the terms of the GNU General Public License
2054 + * as published by the Free Software Foundation, either version 2 of the
2055 + * License, or (at your option) any later version.
2056 + *
2057 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2058 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2059 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2060 + * the GNU General Public License for more details.
2061 + *
2062 + * You should have received a copy of the GNU General Public License
2063 + * along with the Ubicom32 Linux Kernel Port. If not,
2064 + * see <http://www.gnu.org/licenses/>.
2065 + *
2066 + * Ubicom32 implementation derived from (with many thanks):
2067 + * arch/m68knommu
2068 + * arch/blackfin
2069 + * arch/parisc
2070 + */
2071 +#ifndef _ASM_UBICOM32_SIGCONTEXT_H
2072 +#define _ASM_UBICOM32_SIGCONTEXT_H
2073 +
2074 +#include <asm/ptrace.h>
2075 +
2076 +struct sigcontext {
2077 + struct pt_regs sc_regs;
2078 +};
2079 +
2080 +#endif /* _ASM_UBICOM32_SIGCONTEXT_H */
2081 --- /dev/null
2082 +++ b/arch/ubicom32/include/asm/siginfo.h
2083 @@ -0,0 +1,33 @@
2084 +/*
2085 + * arch/ubicom32/include/asm/siginfo.h
2086 + * Generic siginfo.h definitions for Ubicom32 architecture.
2087 + *
2088 + * (C) Copyright 2009, Ubicom, Inc.
2089 + *
2090 + * This file is part of the Ubicom32 Linux Kernel Port.
2091 + *
2092 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2093 + * it and/or modify it under the terms of the GNU General Public License
2094 + * as published by the Free Software Foundation, either version 2 of the
2095 + * License, or (at your option) any later version.
2096 + *
2097 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2098 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2099 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2100 + * the GNU General Public License for more details.
2101 + *
2102 + * You should have received a copy of the GNU General Public License
2103 + * along with the Ubicom32 Linux Kernel Port. If not,
2104 + * see <http://www.gnu.org/licenses/>.
2105 + *
2106 + * Ubicom32 implementation derived from (with many thanks):
2107 + * arch/m68knommu
2108 + * arch/blackfin
2109 + * arch/parisc
2110 + */
2111 +#ifndef _ASM_UBICOM32_SIGINFO_H
2112 +#define _ASM_UBICOM32_SIGINFO_H
2113 +
2114 +#include <asm-generic/siginfo.h>
2115 +
2116 +#endif /* _ASM_UBICOM32_SIGINFO_H */
2117 --- /dev/null
2118 +++ b/arch/ubicom32/include/asm/signal.h
2119 @@ -0,0 +1,180 @@
2120 +/*
2121 + * arch/ubicom32/include/asm/signal.h
2122 + * Signal related definitions for Ubicom32 architecture.
2123 + *
2124 + * (C) Copyright 2009, Ubicom, Inc.
2125 + *
2126 + * This file is part of the Ubicom32 Linux Kernel Port.
2127 + *
2128 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2129 + * it and/or modify it under the terms of the GNU General Public License
2130 + * as published by the Free Software Foundation, either version 2 of the
2131 + * License, or (at your option) any later version.
2132 + *
2133 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2134 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2135 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2136 + * the GNU General Public License for more details.
2137 + *
2138 + * You should have received a copy of the GNU General Public License
2139 + * along with the Ubicom32 Linux Kernel Port. If not,
2140 + * see <http://www.gnu.org/licenses/>.
2141 + *
2142 + * Ubicom32 implementation derived from (with many thanks):
2143 + * arch/m68knommu
2144 + * arch/blackfin
2145 + * arch/parisc
2146 + */
2147 +#ifndef _ASM_UBICOM32_SIGNAL_H
2148 +#define _ASM_UBICOM32_SIGNAL_H
2149 +
2150 +#include <linux/types.h>
2151 +
2152 +/* Avoid too many header ordering problems. */
2153 +struct siginfo;
2154 +
2155 +#ifdef __KERNEL__
2156 +/* Most things should be clean enough to redefine this at will, if care
2157 + is taken to make libc match. */
2158 +
2159 +#define _NSIG 64
2160 +#define _NSIG_BPW 32
2161 +#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
2162 +
2163 +typedef unsigned long old_sigset_t; /* at least 32 bits */
2164 +
2165 +typedef struct {
2166 + unsigned long sig[_NSIG_WORDS];
2167 +} sigset_t;
2168 +
2169 +#endif /* __KERNEL__ */
2170 +
2171 +#define SIGHUP 1
2172 +#define SIGINT 2
2173 +#define SIGQUIT 3
2174 +#define SIGILL 4
2175 +#define SIGTRAP 5
2176 +#define SIGABRT 6
2177 +#define SIGIOT 6
2178 +#define SIGBUS 7
2179 +#define SIGFPE 8
2180 +#define SIGKILL 9
2181 +#define SIGUSR1 10
2182 +#define SIGSEGV 11
2183 +#define SIGUSR2 12
2184 +#define SIGPIPE 13
2185 +#define SIGALRM 14
2186 +#define SIGTERM 15
2187 +#define SIGSTKFLT 16
2188 +#define SIGCHLD 17
2189 +#define SIGCONT 18
2190 +#define SIGSTOP 19
2191 +#define SIGTSTP 20
2192 +#define SIGTTIN 21
2193 +#define SIGTTOU 22
2194 +#define SIGURG 23
2195 +#define SIGXCPU 24
2196 +#define SIGXFSZ 25
2197 +#define SIGVTALRM 26
2198 +#define SIGPROF 27
2199 +#define SIGWINCH 28
2200 +#define SIGIO 29
2201 +#define SIGPOLL SIGIO
2202 +/*
2203 +#define SIGLOST 29
2204 +*/
2205 +#define SIGPWR 30
2206 +#define SIGSYS 31
2207 +#define SIGUNUSED 31
2208 +
2209 +/* These should not be considered constants from userland. */
2210 +#define SIGRTMIN 32
2211 +#define SIGRTMAX _NSIG
2212 +
2213 +/*
2214 + * SA_FLAGS values:
2215 + *
2216 + * SA_ONSTACK indicates that a registered stack_t will be used.
2217 + * SA_RESTART flag to get restarting signals (which were the default long ago)
2218 + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
2219 + * SA_RESETHAND clears the handler when the signal is delivered.
2220 + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
2221 + * SA_NODEFER prevents the current signal from being masked in the handler.
2222 + *
2223 + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
2224 + * Unix names RESETHAND and NODEFER respectively.
2225 + */
2226 +#define SA_NOCLDSTOP 0x00000001
2227 +#define SA_NOCLDWAIT 0x00000002
2228 +#define SA_SIGINFO 0x00000004
2229 +#define SA_ONSTACK 0x08000000
2230 +#define SA_RESTART 0x10000000
2231 +#define SA_NODEFER 0x40000000
2232 +#define SA_RESETHAND 0x80000000
2233 +
2234 +#define SA_NOMASK SA_NODEFER
2235 +#define SA_ONESHOT SA_RESETHAND
2236 +
2237 +/*
2238 + * sigaltstack controls
2239 + */
2240 +#define SS_ONSTACK 1
2241 +#define SS_DISABLE 2
2242 +
2243 +#define MINSIGSTKSZ 2048
2244 +#define SIGSTKSZ 8192
2245 +
2246 +#include <asm-generic/signal.h>
2247 +
2248 +#ifdef __KERNEL__
2249 +struct old_sigaction {
2250 + __sighandler_t sa_handler;
2251 + old_sigset_t sa_mask;
2252 + unsigned long sa_flags;
2253 + void (*sa_restorer)(void);
2254 +};
2255 +
2256 +struct sigaction {
2257 + __sighandler_t sa_handler;
2258 + unsigned long sa_flags;
2259 + void (*sa_restorer)(void);
2260 + sigset_t sa_mask; /* mask last for extensibility */
2261 +};
2262 +
2263 +struct k_sigaction {
2264 + struct sigaction sa;
2265 +};
2266 +#else
2267 +/* Here we must cater to libcs that poke about in kernel headers. */
2268 +
2269 +struct sigaction {
2270 + union {
2271 + __sighandler_t _sa_handler;
2272 + void (*_sa_sigaction)(int, struct siginfo *, void *);
2273 + } _u;
2274 + sigset_t sa_mask;
2275 + unsigned long sa_flags;
2276 + void (*sa_restorer)(void);
2277 +};
2278 +
2279 +#define sa_handler _u._sa_handler
2280 +#define sa_sigaction _u._sa_sigaction
2281 +
2282 +#endif /* __KERNEL__ */
2283 +
2284 +typedef struct sigaltstack {
2285 + void *ss_sp;
2286 + int ss_flags;
2287 + size_t ss_size;
2288 +} stack_t;
2289 +
2290 +#ifdef __KERNEL__
2291 +
2292 +#include <asm/sigcontext.h>
2293 +#undef __HAVE_ARCH_SIG_BITOPS
2294 +
2295 +#define ptrace_signal_deliver(regs, cookie) do { } while (0)
2296 +
2297 +#endif /* __KERNEL__ */
2298 +
2299 +#endif /* _ASM_UBICOM32_SIGNAL_H */
2300 --- /dev/null
2301 +++ b/arch/ubicom32/include/asm/socket.h
2302 @@ -0,0 +1,84 @@
2303 +/*
2304 + * arch/ubicom32/include/asm/socket.h
2305 + * Socket options definitions for Ubicom32 architecture.
2306 + *
2307 + * (C) Copyright 2009, Ubicom, Inc.
2308 + *
2309 + * This file is part of the Ubicom32 Linux Kernel Port.
2310 + *
2311 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2312 + * it and/or modify it under the terms of the GNU General Public License
2313 + * as published by the Free Software Foundation, either version 2 of the
2314 + * License, or (at your option) any later version.
2315 + *
2316 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2317 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2318 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2319 + * the GNU General Public License for more details.
2320 + *
2321 + * You should have received a copy of the GNU General Public License
2322 + * along with the Ubicom32 Linux Kernel Port. If not,
2323 + * see <http://www.gnu.org/licenses/>.
2324 + *
2325 + * Ubicom32 implementation derived from (with many thanks):
2326 + * arch/m68knommu
2327 + * arch/blackfin
2328 + * arch/parisc
2329 + */
2330 +#ifndef _ASM_UBICOM32_SOCKET_H
2331 +#define _ASM_UBICOM32_SOCKET_H
2332 +
2333 +#include <asm/sockios.h>
2334 +
2335 +/* For setsockopt(2) */
2336 +#define SOL_SOCKET 1
2337 +
2338 +#define SO_DEBUG 1
2339 +#define SO_REUSEADDR 2
2340 +#define SO_TYPE 3
2341 +#define SO_ERROR 4
2342 +#define SO_DONTROUTE 5
2343 +#define SO_BROADCAST 6
2344 +#define SO_SNDBUF 7
2345 +#define SO_RCVBUF 8
2346 +#define SO_SNDBUFFORCE 32
2347 +#define SO_RCVBUFFORCE 33
2348 +#define SO_KEEPALIVE 9
2349 +#define SO_OOBINLINE 10
2350 +#define SO_NO_CHECK 11
2351 +#define SO_PRIORITY 12
2352 +#define SO_LINGER 13
2353 +#define SO_BSDCOMPAT 14
2354 +/* To add :#define SO_REUSEPORT 15 */
2355 +#define SO_PASSCRED 16
2356 +#define SO_PEERCRED 17
2357 +#define SO_RCVLOWAT 18
2358 +#define SO_SNDLOWAT 19
2359 +#define SO_RCVTIMEO 20
2360 +#define SO_SNDTIMEO 21
2361 +
2362 +/* Security levels - as per NRL IPv6 - don't actually do anything */
2363 +#define SO_SECURITY_AUTHENTICATION 22
2364 +#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
2365 +#define SO_SECURITY_ENCRYPTION_NETWORK 24
2366 +
2367 +#define SO_BINDTODEVICE 25
2368 +
2369 +/* Socket filtering */
2370 +#define SO_ATTACH_FILTER 26
2371 +#define SO_DETACH_FILTER 27
2372 +
2373 +#define SO_PEERNAME 28
2374 +#define SO_TIMESTAMP 29
2375 +#define SCM_TIMESTAMP SO_TIMESTAMP
2376 +
2377 +#define SO_ACCEPTCONN 30
2378 +
2379 +#define SO_PEERSEC 31
2380 +#define SO_PASSSEC 34
2381 +#define SO_TIMESTAMPNS 35
2382 +#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
2383 +
2384 +#define SO_MARK 36
2385 +
2386 +#endif /* _ASM_UBICOM32_SOCKET_H */
2387 --- /dev/null
2388 +++ b/arch/ubicom32/include/asm/sockios.h
2389 @@ -0,0 +1,40 @@
2390 +/*
2391 + * arch/ubicom32/include/asm/sockios.h
2392 + * Socket-level ioctl definitions for Ubicom32 architecture.
2393 + *
2394 + * (C) Copyright 2009, Ubicom, Inc.
2395 + *
2396 + * This file is part of the Ubicom32 Linux Kernel Port.
2397 + *
2398 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2399 + * it and/or modify it under the terms of the GNU General Public License
2400 + * as published by the Free Software Foundation, either version 2 of the
2401 + * License, or (at your option) any later version.
2402 + *
2403 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2404 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2405 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2406 + * the GNU General Public License for more details.
2407 + *
2408 + * You should have received a copy of the GNU General Public License
2409 + * along with the Ubicom32 Linux Kernel Port. If not,
2410 + * see <http://www.gnu.org/licenses/>.
2411 + *
2412 + * Ubicom32 implementation derived from (with many thanks):
2413 + * arch/m68knommu
2414 + * arch/blackfin
2415 + * arch/parisc
2416 + */
2417 +#ifndef _ASM_UBICOM32_SOCKIOS_H
2418 +#define _ASM_UBICOM32_SOCKIOS_H
2419 +
2420 +/* Socket-level I/O control calls. */
2421 +#define FIOSETOWN 0x8901
2422 +#define SIOCSPGRP 0x8902
2423 +#define FIOGETOWN 0x8903
2424 +#define SIOCGPGRP 0x8904
2425 +#define SIOCATMARK 0x8905
2426 +#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
2427 +#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
2428 +
2429 +#endif /* _ASM_UBICOM32_SOCKIOS_H */
2430 --- /dev/null
2431 +++ b/arch/ubicom32/include/asm/statfs.h
2432 @@ -0,0 +1,33 @@
2433 +/*
2434 + * arch/ubicom32/include/asm/statfs.h
2435 + * Generic statfs.h definitions
2436 + *
2437 + * (C) Copyright 2009, Ubicom, Inc.
2438 + *
2439 + * This file is part of the Ubicom32 Linux Kernel Port.
2440 + *
2441 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2442 + * it and/or modify it under the terms of the GNU General Public License
2443 + * as published by the Free Software Foundation, either version 2 of the
2444 + * License, or (at your option) any later version.
2445 + *
2446 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2447 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2448 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2449 + * the GNU General Public License for more details.
2450 + *
2451 + * You should have received a copy of the GNU General Public License
2452 + * along with the Ubicom32 Linux Kernel Port. If not,
2453 + * see <http://www.gnu.org/licenses/>.
2454 + *
2455 + * Ubicom32 implementation derived from (with many thanks):
2456 + * arch/m68knommu
2457 + * arch/blackfin
2458 + * arch/parisc
2459 + */
2460 +#ifndef _ASM_UBICOM32_STATFS_H
2461 +#define _ASM_UBICOM32_STATFS_H
2462 +
2463 +#include <asm-generic/statfs.h>
2464 +
2465 +#endif /* _ASM_UBICOM32_STATFS_H */
2466 --- /dev/null
2467 +++ b/arch/ubicom32/include/asm/stat.h
2468 @@ -0,0 +1,104 @@
2469 +/*
2470 + * arch/ubicom32/include/asm/stat.h
2471 + * File status definitions for Ubicom32 architecture.
2472 + *
2473 + * (C) Copyright 2009, Ubicom, Inc.
2474 + *
2475 + * This file is part of the Ubicom32 Linux Kernel Port.
2476 + *
2477 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2478 + * it and/or modify it under the terms of the GNU General Public License
2479 + * as published by the Free Software Foundation, either version 2 of the
2480 + * License, or (at your option) any later version.
2481 + *
2482 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2483 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2484 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2485 + * the GNU General Public License for more details.
2486 + *
2487 + * You should have received a copy of the GNU General Public License
2488 + * along with the Ubicom32 Linux Kernel Port. If not,
2489 + * see <http://www.gnu.org/licenses/>.
2490 + *
2491 + * Ubicom32 implementation derived from (with many thanks):
2492 + * arch/m68knommu
2493 + * arch/blackfin
2494 + * arch/parisc
2495 + */
2496 +#ifndef _ASM_UBICOM32_STAT_H
2497 +#define _ASM_UBICOM32_STAT_H
2498 +
2499 +struct __old_kernel_stat {
2500 + unsigned short st_dev;
2501 + unsigned short st_ino;
2502 + unsigned short st_mode;
2503 + unsigned short st_nlink;
2504 + unsigned short st_uid;
2505 + unsigned short st_gid;
2506 + unsigned short st_rdev;
2507 + unsigned long st_size;
2508 + unsigned long st_atime;
2509 + unsigned long st_mtime;
2510 + unsigned long st_ctime;
2511 +};
2512 +
2513 +struct stat {
2514 + unsigned short st_dev;
2515 + unsigned short __pad1;
2516 + unsigned long st_ino;
2517 + unsigned short st_mode;
2518 + unsigned short st_nlink;
2519 + unsigned short st_uid;
2520 + unsigned short st_gid;
2521 + unsigned short st_rdev;
2522 + unsigned short __pad2;
2523 + unsigned long st_size;
2524 + unsigned long st_blksize;
2525 + unsigned long st_blocks;
2526 + unsigned long st_atime;
2527 + unsigned long __unused1;
2528 + unsigned long st_mtime;
2529 + unsigned long __unused2;
2530 + unsigned long st_ctime;
2531 + unsigned long __unused3;
2532 + unsigned long __unused4;
2533 + unsigned long __unused5;
2534 +};
2535 +
2536 +/* This matches struct stat64 in glibc2.1, hence the absolutely
2537 + * insane amounts of padding around dev_t's.
2538 + */
2539 +struct stat64 {
2540 + unsigned long long st_dev;
2541 + unsigned char __pad1[2];
2542 +
2543 +#define STAT64_HAS_BROKEN_ST_INO 1
2544 + unsigned long __st_ino;
2545 +
2546 + unsigned int st_mode;
2547 + unsigned int st_nlink;
2548 +
2549 + unsigned long st_uid;
2550 + unsigned long st_gid;
2551 +
2552 + unsigned long long st_rdev;
2553 + unsigned char __pad3[2];
2554 +
2555 + long long st_size;
2556 + unsigned long st_blksize;
2557 +
2558 + unsigned long long st_blocks; /* Number 512-byte blocks allocated. */
2559 +
2560 + unsigned long st_atime;
2561 + unsigned long st_atime_nsec;
2562 +
2563 + unsigned long st_mtime;
2564 + unsigned long st_mtime_nsec;
2565 +
2566 + unsigned long st_ctime;
2567 + unsigned long st_ctime_nsec;
2568 +
2569 + unsigned long long st_ino;
2570 +};
2571 +
2572 +#endif /* _ASM_UBICOM32_STAT_H */
2573 --- /dev/null
2574 +++ b/arch/ubicom32/include/asm/swab.h
2575 @@ -0,0 +1,46 @@
2576 +/*
2577 + * arch/ubicom32/include/asm/swab.h
2578 + * Byte order swapping utility routines.
2579 + *
2580 + * (C) Copyright 2009, Ubicom, Inc.
2581 + *
2582 + * This file is part of the Ubicom32 Linux Kernel Port.
2583 + *
2584 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2585 + * it and/or modify it under the terms of the GNU General Public License
2586 + * as published by the Free Software Foundation, either version 2 of the
2587 + * License, or (at your option) any later version.
2588 + *
2589 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2590 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2591 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2592 + * the GNU General Public License for more details.
2593 + *
2594 + * You should have received a copy of the GNU General Public License
2595 + * along with the Ubicom32 Linux Kernel Port. If not,
2596 + * see <http://www.gnu.org/licenses/>.
2597 + *
2598 + * Ubicom32 implementation derived from (with many thanks):
2599 + * arch/m68knommu
2600 + * arch/blackfin
2601 + * arch/parisc
2602 + */
2603 +#ifndef _ASM_UBICOM32_SWAB_H
2604 +#define _ASM_UBICOM32_SWAB_H
2605 +
2606 +#include <linux/types.h>
2607 +
2608 +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
2609 +# define __BYTEORDER_HAS_U64__
2610 +# define __SWAB_64_THRU_32__
2611 +#endif
2612 +
2613 +#if defined(IP7000) || defined(IP7000_REV2)
2614 +
2615 +#define __arch__swab16 __builtin_ubicom32_swapb_2
2616 +#define __arch__swab32 __builtin_ubicom32_swapb_4
2617 +
2618 +#endif /* IP7000 */
2619 +
2620 +#endif /* _ASM_UBICOM32_SWAB_H */
2621 +
2622 --- /dev/null
2623 +++ b/arch/ubicom32/include/asm/termbits.h
2624 @@ -0,0 +1,227 @@
2625 +/*
2626 + * arch/ubicom32/include/asm/termbits.h
2627 + * Terminal/serial port definitions for Ubicom32 architecture.
2628 + *
2629 + * (C) Copyright 2009, Ubicom, Inc.
2630 + *
2631 + * This file is part of the Ubicom32 Linux Kernel Port.
2632 + *
2633 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2634 + * it and/or modify it under the terms of the GNU General Public License
2635 + * as published by the Free Software Foundation, either version 2 of the
2636 + * License, or (at your option) any later version.
2637 + *
2638 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2639 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2640 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2641 + * the GNU General Public License for more details.
2642 + *
2643 + * You should have received a copy of the GNU General Public License
2644 + * along with the Ubicom32 Linux Kernel Port. If not,
2645 + * see <http://www.gnu.org/licenses/>.
2646 + *
2647 + * Ubicom32 implementation derived from (with many thanks):
2648 + * arch/m68knommu
2649 + * arch/blackfin
2650 + * arch/parisc
2651 + */
2652 +#ifndef _ASM_UBICOM32_TERMBITS_H
2653 +#define _ASM_UBICOM32_TERMBITS_H
2654 +
2655 +#include <linux/posix_types.h>
2656 +
2657 +typedef unsigned char cc_t;
2658 +typedef unsigned int speed_t;
2659 +typedef unsigned int tcflag_t;
2660 +
2661 +#define NCCS 19
2662 +struct termios {
2663 + tcflag_t c_iflag; /* input mode flags */
2664 + tcflag_t c_oflag; /* output mode flags */
2665 + tcflag_t c_cflag; /* control mode flags */
2666 + tcflag_t c_lflag; /* local mode flags */
2667 + cc_t c_line; /* line discipline */
2668 + cc_t c_cc[NCCS]; /* control characters */
2669 +};
2670 +
2671 +struct termios2 {
2672 + tcflag_t c_iflag; /* input mode flags */
2673 + tcflag_t c_oflag; /* output mode flags */
2674 + tcflag_t c_cflag; /* control mode flags */
2675 + tcflag_t c_lflag; /* local mode flags */
2676 + cc_t c_line; /* line discipline */
2677 + cc_t c_cc[NCCS]; /* control characters */
2678 + speed_t c_ispeed; /* input speed */
2679 + speed_t c_ospeed; /* output speed */
2680 +};
2681 +
2682 +struct ktermios {
2683 + tcflag_t c_iflag; /* input mode flags */
2684 + tcflag_t c_oflag; /* output mode flags */
2685 + tcflag_t c_cflag; /* control mode flags */
2686 + tcflag_t c_lflag; /* local mode flags */
2687 + cc_t c_line; /* line discipline */
2688 + cc_t c_cc[NCCS]; /* control characters */
2689 + speed_t c_ispeed; /* input speed */
2690 + speed_t c_ospeed; /* output speed */
2691 +};
2692 +
2693 +/* c_cc characters */
2694 +#define VINTR 0
2695 +#define VQUIT 1
2696 +#define VERASE 2
2697 +#define VKILL 3
2698 +#define VEOF 4
2699 +#define VTIME 5
2700 +#define VMIN 6
2701 +#define VSWTC 7
2702 +#define VSTART 8
2703 +#define VSTOP 9
2704 +#define VSUSP 10
2705 +#define VEOL 11
2706 +#define VREPRINT 12
2707 +#define VDISCARD 13
2708 +#define VWERASE 14
2709 +#define VLNEXT 15
2710 +#define VEOL2 16
2711 +
2712 +
2713 +/* c_iflag bits */
2714 +#define IGNBRK 0000001
2715 +#define BRKINT 0000002
2716 +#define IGNPAR 0000004
2717 +#define PARMRK 0000010
2718 +#define INPCK 0000020
2719 +#define ISTRIP 0000040
2720 +#define INLCR 0000100
2721 +#define IGNCR 0000200
2722 +#define ICRNL 0000400
2723 +#define IUCLC 0001000
2724 +#define IXON 0002000
2725 +#define IXANY 0004000
2726 +#define IXOFF 0010000
2727 +#define IMAXBEL 0020000
2728 +#define IUTF8 0040000
2729 +
2730 +/* c_oflag bits */
2731 +#define OPOST 0000001
2732 +#define OLCUC 0000002
2733 +#define ONLCR 0000004
2734 +#define OCRNL 0000010
2735 +#define ONOCR 0000020
2736 +#define ONLRET 0000040
2737 +#define OFILL 0000100
2738 +#define OFDEL 0000200
2739 +#define NLDLY 0000400
2740 +#define NL0 0000000
2741 +#define NL1 0000400
2742 +#define CRDLY 0003000
2743 +#define CR0 0000000
2744 +#define CR1 0001000
2745 +#define CR2 0002000
2746 +#define CR3 0003000
2747 +#define TABDLY 0014000
2748 +#define TAB0 0000000
2749 +#define TAB1 0004000
2750 +#define TAB2 0010000
2751 +#define TAB3 0014000
2752 +#define XTABS 0014000
2753 +#define BSDLY 0020000
2754 +#define BS0 0000000
2755 +#define BS1 0020000
2756 +#define VTDLY 0040000
2757 +#define VT0 0000000
2758 +#define VT1 0040000
2759 +#define FFDLY 0100000
2760 +#define FF0 0000000
2761 +#define FF1 0100000
2762 +
2763 +/* c_cflag bit meaning */
2764 +#define CBAUD 0010017
2765 +#define B0 0000000 /* hang up */
2766 +#define B50 0000001
2767 +#define B75 0000002
2768 +#define B110 0000003
2769 +#define B134 0000004
2770 +#define B150 0000005
2771 +#define B200 0000006
2772 +#define B300 0000007
2773 +#define B600 0000010
2774 +#define B1200 0000011
2775 +#define B1800 0000012
2776 +#define B2400 0000013
2777 +#define B4800 0000014
2778 +#define B9600 0000015
2779 +#define B19200 0000016
2780 +#define B38400 0000017
2781 +#define EXTA B19200
2782 +#define EXTB B38400
2783 +#define CSIZE 0000060
2784 +#define CS5 0000000
2785 +#define CS6 0000020
2786 +#define CS7 0000040
2787 +#define CS8 0000060
2788 +#define CSTOPB 0000100
2789 +#define CREAD 0000200
2790 +#define PARENB 0000400
2791 +#define PARODD 0001000
2792 +#define HUPCL 0002000
2793 +#define CLOCAL 0004000
2794 +#define CBAUDEX 0010000
2795 +#define BOTHER 0010000
2796 +#define B57600 0010001
2797 +#define B115200 0010002
2798 +#define B230400 0010003
2799 +#define B460800 0010004
2800 +#define B500000 0010005
2801 +#define B576000 0010006
2802 +#define B921600 0010007
2803 +#define B1000000 0010010
2804 +#define B1152000 0010011
2805 +#define B1500000 0010012
2806 +#define B2000000 0010013
2807 +#define B2500000 0010014
2808 +#define B3000000 0010015
2809 +#define B3500000 0010016
2810 +#define B4000000 0010017
2811 +#define CIBAUD 002003600000 /* input baud rate */
2812 +#define CMSPAR 010000000000 /* mark or space (stick) parity */
2813 +#define CRTSCTS 020000000000 /* flow control */
2814 +
2815 +#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
2816 +
2817 +/* c_lflag bits */
2818 +#define ISIG 0000001
2819 +#define ICANON 0000002
2820 +#define XCASE 0000004
2821 +#define ECHO 0000010
2822 +#define ECHOE 0000020
2823 +#define ECHOK 0000040
2824 +#define ECHONL 0000100
2825 +#define NOFLSH 0000200
2826 +#define TOSTOP 0000400
2827 +#define ECHOCTL 0001000
2828 +#define ECHOPRT 0002000
2829 +#define ECHOKE 0004000
2830 +#define FLUSHO 0010000
2831 +#define PENDIN 0040000
2832 +#define IEXTEN 0100000
2833 +
2834 +
2835 +/* tcflow() and TCXONC use these */
2836 +#define TCOOFF 0
2837 +#define TCOON 1
2838 +#define TCIOFF 2
2839 +#define TCION 3
2840 +
2841 +/* tcflush() and TCFLSH use these */
2842 +#define TCIFLUSH 0
2843 +#define TCOFLUSH 1
2844 +#define TCIOFLUSH 2
2845 +
2846 +/* tcsetattr uses these */
2847 +#define TCSANOW 0
2848 +#define TCSADRAIN 1
2849 +#define TCSAFLUSH 2
2850 +
2851 +#endif /* _ASM_UBICOM32_TERMBITS_H */
2852 --- /dev/null
2853 +++ b/arch/ubicom32/include/asm/termios.h
2854 @@ -0,0 +1,119 @@
2855 +/*
2856 + * arch/ubicom32/include/asm/termios.h
2857 + * Ubicom32 termio definitions.
2858 + *
2859 + * (C) Copyright 2009, Ubicom, Inc.
2860 + *
2861 + * This file is part of the Ubicom32 Linux Kernel Port.
2862 + *
2863 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2864 + * it and/or modify it under the terms of the GNU General Public License
2865 + * as published by the Free Software Foundation, either version 2 of the
2866 + * License, or (at your option) any later version.
2867 + *
2868 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2869 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2870 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2871 + * the GNU General Public License for more details.
2872 + *
2873 + * You should have received a copy of the GNU General Public License
2874 + * along with the Ubicom32 Linux Kernel Port. If not,
2875 + * see <http://www.gnu.org/licenses/>.
2876 + *
2877 + * Ubicom32 implementation derived from (with many thanks):
2878 + * arch/m68knommu
2879 + * arch/blackfin
2880 + * arch/parisc
2881 + */
2882 +#ifndef _ASM_UBICOM32_TERMIOS_H
2883 +#define _ASM_UBICOM32_TERMIOS_H
2884 +
2885 +#include <asm/termbits.h>
2886 +#include <asm/ioctls.h>
2887 +
2888 +struct winsize {
2889 + unsigned short ws_row;
2890 + unsigned short ws_col;
2891 + unsigned short ws_xpixel;
2892 + unsigned short ws_ypixel;
2893 +};
2894 +
2895 +#define NCC 8
2896 +struct termio {
2897 + unsigned short c_iflag; /* input mode flags */
2898 + unsigned short c_oflag; /* output mode flags */
2899 + unsigned short c_cflag; /* control mode flags */
2900 + unsigned short c_lflag; /* local mode flags */
2901 + unsigned char c_line; /* line discipline */
2902 + unsigned char c_cc[NCC]; /* control characters */
2903 +};
2904 +
2905 +#ifdef __KERNEL__
2906 +/* intr=^C quit=^| erase=del kill=^U
2907 + eof=^D vtime=\0 vmin=\1 sxtc=\0
2908 + start=^Q stop=^S susp=^Z eol=\0
2909 + reprint=^R discard=^U werase=^W lnext=^V
2910 + eol2=\0
2911 +*/
2912 +#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
2913 +#endif
2914 +
2915 +/* modem lines */
2916 +#define TIOCM_LE 0x001
2917 +#define TIOCM_DTR 0x002
2918 +#define TIOCM_RTS 0x004
2919 +#define TIOCM_ST 0x008
2920 +#define TIOCM_SR 0x010
2921 +#define TIOCM_CTS 0x020
2922 +#define TIOCM_CAR 0x040
2923 +#define TIOCM_RNG 0x080
2924 +#define TIOCM_DSR 0x100
2925 +#define TIOCM_CD TIOCM_CAR
2926 +#define TIOCM_RI TIOCM_RNG
2927 +#define TIOCM_OUT1 0x2000
2928 +#define TIOCM_OUT2 0x4000
2929 +#define TIOCM_LOOP 0x8000
2930 +
2931 +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
2932 +
2933 +#ifdef __KERNEL__
2934 +
2935 +/*
2936 + * Translate a "termio" structure into a "termios". Ugh.
2937 + */
2938 +#define user_termio_to_kernel_termios(termios, termio) \
2939 +({ \
2940 + unsigned short tmp; \
2941 + get_user(tmp, &(termio)->c_iflag); \
2942 + (termios)->c_iflag = (0xffff0000 & ((termios)->c_iflag)) | tmp; \
2943 + get_user(tmp, &(termio)->c_oflag); \
2944 + (termios)->c_oflag = (0xffff0000 & ((termios)->c_oflag)) | tmp; \
2945 + get_user(tmp, &(termio)->c_cflag); \
2946 + (termios)->c_cflag = (0xffff0000 & ((termios)->c_cflag)) | tmp; \
2947 + get_user(tmp, &(termio)->c_lflag); \
2948 + (termios)->c_lflag = (0xffff0000 & ((termios)->c_lflag)) | tmp; \
2949 + get_user((termios)->c_line, &(termio)->c_line); \
2950 + copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
2951 +})
2952 +
2953 +/*
2954 + * Translate a "termios" structure into a "termio". Ugh.
2955 + */
2956 +#define kernel_termios_to_user_termio(termio, termios) \
2957 +({ \
2958 + put_user((termios)->c_iflag, &(termio)->c_iflag); \
2959 + put_user((termios)->c_oflag, &(termio)->c_oflag); \
2960 + put_user((termios)->c_cflag, &(termio)->c_cflag); \
2961 + put_user((termios)->c_lflag, &(termio)->c_lflag); \
2962 + put_user((termios)->c_line, &(termio)->c_line); \
2963 + copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
2964 +})
2965 +
2966 +#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
2967 +#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
2968 +#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
2969 +#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
2970 +
2971 +#endif /* __KERNEL__ */
2972 +
2973 +#endif /* _ASM_UBICOM32_TERMIOS_H */
2974 --- /dev/null
2975 +++ b/arch/ubicom32/include/asm/thread_info.h
2976 @@ -0,0 +1,134 @@
2977 +/*
2978 + * arch/ubicom32/include/asm/thread_info.h
2979 + * Ubicom32 architecture low-level thread information.
2980 + *
2981 + * (C) Copyright 2009, Ubicom, Inc.
2982 + * Adapted from the i386 and PPC versions by Greg Ungerer (gerg@snapgear.com)
2983 + * Copyright (C) 2002 David Howells (dhowells@redhat.com)
2984 + * - Incorporating suggestions made by Linus Torvalds and Dave Miller
2985 + *
2986 + * This file is part of the Ubicom32 Linux Kernel Port.
2987 + *
2988 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
2989 + * it and/or modify it under the terms of the GNU General Public License
2990 + * as published by the Free Software Foundation, either version 2 of the
2991 + * License, or (at your option) any later version.
2992 + *
2993 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
2994 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
2995 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
2996 + * the GNU General Public License for more details.
2997 + *
2998 + * You should have received a copy of the GNU General Public License
2999 + * along with the Ubicom32 Linux Kernel Port. If not,
3000 + * see <http://www.gnu.org/licenses/>.
3001 + *
3002 + * Ubicom32 implementation derived from (with many thanks):
3003 + * arch/m68knommu
3004 + * arch/blackfin
3005 + * arch/parisc
3006 + */
3007 +
3008 +#ifndef _ASM_UBICOM32_THREAD_INFO_H
3009 +#define _ASM_UBICOM32_THREAD_INFO_H
3010 +
3011 +#include <asm/page.h>
3012 +
3013 +/*
3014 + * Size of kernel stack for each process. This must be a power of 2...
3015 + */
3016 +#ifdef CONFIG_4KSTACKS
3017 +#define THREAD_SIZE_ORDER (0)
3018 +#else
3019 +#define THREAD_SIZE_ORDER (1)
3020 +#endif
3021 +
3022 +/*
3023 + * for asm files, THREAD_SIZE is now generated by asm-offsets.c
3024 + */
3025 +#define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER)
3026 +
3027 +#ifdef __KERNEL__
3028 +
3029 +#ifndef __ASSEMBLY__
3030 +
3031 +/*
3032 + * low level task data.
3033 + */
3034 +struct thread_info {
3035 + struct task_struct *task; /* main task structure */
3036 + struct exec_domain *exec_domain; /* execution domain */
3037 + unsigned long flags; /* low level flags */
3038 + int cpu; /* cpu we're on */
3039 + int preempt_count; /* 0 => preemptable, <0 => BUG */
3040 + int interrupt_nesting; /* Interrupt nesting level. */
3041 + struct restart_block restart_block;
3042 +};
3043 +
3044 +/*
3045 + * macros/functions for gaining access to the thread information structure
3046 + */
3047 +#define INIT_THREAD_INFO(tsk) \
3048 +{ \
3049 + .task = &tsk, \
3050 + .exec_domain = &default_exec_domain, \
3051 + .flags = 0, \
3052 + .cpu = 0, \
3053 + .interrupt_nesting = 0, \
3054 + .restart_block = { \
3055 + .fn = do_no_restart_syscall, \
3056 + }, \
3057 +}
3058 +
3059 +#define init_thread_info (init_thread_union.thread_info)
3060 +#define init_stack (init_thread_union.stack)
3061 +
3062 +
3063 +/* how to get the thread information struct from C */
3064 +static inline struct thread_info *current_thread_info(void)
3065 +{
3066 + struct thread_info *ti;
3067 +
3068 + asm (
3069 + "and.4 %0, sp, %1\n\t"
3070 + : "=&r" (ti)
3071 + : "d" (~(THREAD_SIZE-1))
3072 + : "cc"
3073 + );
3074 +
3075 + return ti;
3076 +}
3077 +
3078 +#define STACK_WARN (THREAD_SIZE / 8)
3079 +
3080 +#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR 1
3081 +
3082 +/* thread information allocation */
3083 +#define alloc_thread_info(tsk) ((struct thread_info *) \
3084 + __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER))
3085 +#define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_SIZE_ORDER)
3086 +#endif /* __ASSEMBLY__ */
3087 +
3088 +#define PREEMPT_ACTIVE 0x4000000
3089 +
3090 +/*
3091 + * thread information flag bit numbers
3092 + */
3093 +#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
3094 +#define TIF_SIGPENDING 1 /* signal pending */
3095 +#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
3096 +#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling
3097 + TIF_NEED_RESCHED */
3098 +#define TIF_MEMDIE 4
3099 +
3100 +/* as above, but as bit values */
3101 +#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
3102 +#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
3103 +#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
3104 +#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
3105 +
3106 +#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
3107 +
3108 +#endif /* __KERNEL__ */
3109 +
3110 +#endif /* _ASM_UBICOM32_THREAD_INFO_H */
3111 --- /dev/null
3112 +++ b/arch/ubicom32/include/asm/types.h
3113 @@ -0,0 +1,75 @@
3114 +/*
3115 + * arch/ubicom32/include/asm/types.h
3116 + * Date type definitions for Ubicom32 architecture.
3117 + *
3118 + * (C) Copyright 2009, Ubicom, Inc.
3119 + *
3120 + * This file is part of the Ubicom32 Linux Kernel Port.
3121 + *
3122 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
3123 + * it and/or modify it under the terms of the GNU General Public License
3124 + * as published by the Free Software Foundation, either version 2 of the
3125 + * License, or (at your option) any later version.
3126 + *
3127 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
3128 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
3129 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
3130 + * the GNU General Public License for more details.
3131 + *
3132 + * You should have received a copy of the GNU General Public License
3133 + * along with the Ubicom32 Linux Kernel Port. If not,
3134 + * see <http://www.gnu.org/licenses/>.
3135 + *
3136 + * Ubicom32 implementation derived from (with many thanks):
3137 + * arch/m68knommu
3138 + * arch/blackfin
3139 + * arch/parisc
3140 + */
3141 +#ifndef _ASM_UBICOM32_TYPES_H
3142 +#define _ASM_UBICOM32_TYPES_H
3143 +
3144 +/*
3145 + * This file is never included by application software unless
3146 + * explicitly requested (e.g., via linux/types.h) in which case the
3147 + * application is Linux specific so (user-) name space pollution is
3148 + * not a major issue. However, for interoperability, libraries still
3149 + * need to be careful to avoid a name clashes.
3150 + */
3151 +
3152 +#include <asm-generic/int-ll64.h>
3153 +
3154 +#ifndef __ASSEMBLY__
3155 +
3156 +typedef unsigned short umode_t;
3157 +
3158 +#endif /* __ASSEMBLY__ */
3159 +
3160 +/*
3161 + * These aren't exported outside the kernel to avoid name space clashes
3162 + */
3163 +#ifdef __KERNEL__
3164 +
3165 +#define BITS_PER_LONG 32
3166 +
3167 +#ifndef __ASSEMBLY__
3168 +
3169 +/* DMA addresses are always 32-bits wide */
3170 +
3171 +typedef u32 dma_addr_t;
3172 +typedef u32 dma64_addr_t;
3173 +
3174 +/*
3175 + * XXX These are "Ubicom style" typedefs. They should be removed in all files used by linux.
3176 + */
3177 +typedef u32 u32_t;
3178 +typedef s32 s32_t;
3179 +typedef u16 u16_t;
3180 +typedef s16 s16_t;
3181 +typedef u8 u8_t;
3182 +typedef s8 s8_t;
3183 +
3184 +#endif /* __ASSEMBLY__ */
3185 +
3186 +#endif /* __KERNEL__ */
3187 +
3188 +#endif /* _ASM_UBICOM32_TYPES_H */
3189 --- /dev/null
3190 +++ b/arch/ubicom32/include/asm/ucontext.h
3191 @@ -0,0 +1,39 @@
3192 +/*
3193 + * arch/ubicom32/include/asm/ucontext.h
3194 + * Definition of ucontext structure for Ubicom32 architecture.
3195 + *
3196 + * (C) Copyright 2009, Ubicom, Inc.
3197 + *
3198 + * This file is part of the Ubicom32 Linux Kernel Port.
3199 + *
3200 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
3201 + * it and/or modify it under the terms of the GNU General Public License
3202 + * as published by the Free Software Foundation, either version 2 of the
3203 + * License, or (at your option) any later version.
3204 + *
3205 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
3206 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
3207 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
3208 + * the GNU General Public License for more details.
3209 + *
3210 + * You should have received a copy of the GNU General Public License
3211 + * along with the Ubicom32 Linux Kernel Port. If not,
3212 + * see <http://www.gnu.org/licenses/>.
3213 + *
3214 + * Ubicom32 implementation derived from (with many thanks):
3215 + * arch/m68knommu
3216 + * arch/blackfin
3217 + * arch/parisc
3218 + */
3219 +#ifndef _ASM_UBICOM32_UCONTEXT_H
3220 +#define _ASM_UBICOM32_UCONTEXT_H
3221 +
3222 +struct ucontext {
3223 + unsigned long uc_flags;
3224 + struct ucontext *uc_link;
3225 + stack_t uc_stack;
3226 + struct sigcontext uc_mcontext;
3227 + sigset_t uc_sigmask; /* mask last for extensibility */
3228 +};
3229 +
3230 +#endif /* _ASM_UBICOM32_UCONTEXT_H */
3231 --- /dev/null
3232 +++ b/arch/ubicom32/include/asm/unistd.h
3233 @@ -0,0 +1,400 @@
3234 +/*
3235 + * arch/ubicom32/include/asm/unistd.h
3236 + * Ubicom32 architecture syscall definitions.
3237 + *
3238 + * (C) Copyright 2009, Ubicom, Inc.
3239 + *
3240 + * This file is part of the Ubicom32 Linux Kernel Port.
3241 + *
3242 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
3243 + * it and/or modify it under the terms of the GNU General Public License
3244 + * as published by the Free Software Foundation, either version 2 of the
3245 + * License, or (at your option) any later version.
3246 + *
3247 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
3248 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
3249 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
3250 + * the GNU General Public License for more details.
3251 + *
3252 + * You should have received a copy of the GNU General Public License
3253 + * along with the Ubicom32 Linux Kernel Port. If not,
3254 + * see <http://www.gnu.org/licenses/>.
3255 + *
3256 + * Ubicom32 implementation derived from (with many thanks):
3257 + * arch/m68knommu
3258 + * arch/blackfin
3259 + * arch/parisc
3260 + */
3261 +#ifndef _ASM_UBICOM32_UNISTD_H
3262 +#define _ASM_UBICOM32_UNISTD_H
3263 +
3264 +/*
3265 + * This file contains the system call numbers.
3266 + */
3267 +
3268 +#define __NR_restart_syscall 0
3269 +#define __NR_exit 1
3270 +#define __NR_fork 2
3271 +#define __NR_read 3
3272 +#define __NR_write 4
3273 +#define __NR_open 5
3274 +#define __NR_close 6
3275 +#define __NR_waitpid 7
3276 +#define __NR_creat 8
3277 +#define __NR_link 9
3278 +#define __NR_unlink 10
3279 +#define __NR_execve 11
3280 +#define __NR_chdir 12
3281 +#define __NR_time 13
3282 +#define __NR_mknod 14
3283 +#define __NR_chmod 15
3284 +#define __NR_chown 16
3285 +#define __NR_break 17
3286 +#define __NR_oldstat 18
3287 +#define __NR_lseek 19
3288 +#define __NR_getpid 20
3289 +#define __NR_mount 21
3290 +#define __NR_umount 22
3291 +#define __NR_setuid 23
3292 +#define __NR_getuid 24
3293 +#define __NR_stime 25
3294 +#define __NR_ptrace 26
3295 +#define __NR_alarm 27
3296 +#define __NR_oldfstat 28
3297 +#define __NR_pause 29
3298 +#define __NR_utime 30
3299 +#define __NR_stty 31
3300 +#define __NR_gtty 32
3301 +#define __NR_access 33
3302 +#define __NR_nice 34
3303 +#define __NR_ftime 35
3304 +#define __NR_sync 36
3305 +#define __NR_kill 37
3306 +#define __NR_rename 38
3307 +#define __NR_mkdir 39
3308 +#define __NR_rmdir 40
3309 +#define __NR_dup 41
3310 +#define __NR_pipe 42
3311 +#define __NR_times 43
3312 +#define __NR_prof 44
3313 +#define __NR_brk 45
3314 +#define __NR_setgid 46
3315 +#define __NR_getgid 47
3316 +#define __NR_signal 48
3317 +#define __NR_geteuid 49
3318 +#define __NR_getegid 50
3319 +#define __NR_acct 51
3320 +#define __NR_umount2 52
3321 +#define __NR_lock 53
3322 +#define __NR_ioctl 54
3323 +#define __NR_fcntl 55
3324 +#define __NR_mpx 56
3325 +#define __NR_setpgid 57
3326 +#define __NR_ulimit 58
3327 +#define __NR_oldolduname 59
3328 +#define __NR_umask 60
3329 +#define __NR_chroot 61
3330 +#define __NR_ustat 62
3331 +#define __NR_dup2 63
3332 +#define __NR_getppid 64
3333 +#define __NR_getpgrp 65
3334 +#define __NR_setsid 66
3335 +#define __NR_sigaction 67
3336 +#define __NR_sgetmask 68
3337 +#define __NR_ssetmask 69
3338 +#define __NR_setreuid 70
3339 +#define __NR_setregid 71
3340 +#define __NR_sigsuspend 72
3341 +#define __NR_sigpending 73
3342 +#define __NR_sethostname 74
3343 +#define __NR_setrlimit 75
3344 +#define __NR_getrlimit 76
3345 +#define __NR_getrusage 77
3346 +#define __NR_gettimeofday 78
3347 +#define __NR_settimeofday 79
3348 +#define __NR_getgroups 80
3349 +#define __NR_setgroups 81
3350 +#define __NR_select 82
3351 +#define __NR_symlink 83
3352 +#define __NR_oldlstat 84
3353 +#define __NR_readlink 85
3354 +#define __NR_uselib 86
3355 +#define __NR_swapon 87
3356 +#define __NR_reboot 88
3357 +#define __NR_readdir 89
3358 +#define __NR_mmap 90
3359 +#define __NR_munmap 91
3360 +#define __NR_truncate 92
3361 +#define __NR_ftruncate 93
3362 +#define __NR_fchmod 94
3363 +#define __NR_fchown 95
3364 +#define __NR_getpriority 96
3365 +#define __NR_setpriority 97
3366 +#define __NR_profil 98
3367 +#define __NR_statfs 99
3368 +#define __NR_fstatfs 100
3369 +#define __NR_ioperm 101
3370 +#define __NR_socketcall 102
3371 +#define __NR_syslog 103
3372 +#define __NR_setitimer 104
3373 +#define __NR_getitimer 105
3374 +#define __NR_stat 106
3375 +#define __NR_lstat 107
3376 +#define __NR_fstat 108
3377 +#define __NR_olduname 109
3378 +#define __NR_iopl /* 110 */ not supported
3379 +#define __NR_vhangup 111
3380 +#define __NR_idle /* 112 */ Obsolete
3381 +#define __NR_vm86 /* 113 */ not supported
3382 +#define __NR_wait4 114
3383 +#define __NR_swapoff 115
3384 +#define __NR_sysinfo 116
3385 +#define __NR_ipc 117
3386 +#define __NR_fsync 118
3387 +#define __NR_sigreturn 119
3388 +#define __NR_clone 120
3389 +#define __NR_setdomainname 121
3390 +#define __NR_uname 122
3391 +#define __NR_cacheflush 123
3392 +#define __NR_adjtimex 124
3393 +#define __NR_mprotect 125
3394 +#define __NR_sigprocmask 126
3395 +#define __NR_create_module 127
3396 +#define __NR_init_module 128
3397 +#define __NR_delete_module 129
3398 +#define __NR_get_kernel_syms 130
3399 +#define __NR_quotactl 131
3400 +#define __NR_getpgid 132
3401 +#define __NR_fchdir 133
3402 +#define __NR_bdflush 134
3403 +#define __NR_sysfs 135
3404 +#define __NR_personality 136
3405 +#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
3406 +#define __NR_setfsuid 138
3407 +#define __NR_setfsgid 139
3408 +#define __NR__llseek 140
3409 +#define __NR_getdents 141
3410 +#define __NR__newselect 142
3411 +#define __NR_flock 143
3412 +#define __NR_msync 144
3413 +#define __NR_readv 145
3414 +#define __NR_writev 146
3415 +#define __NR_getsid 147
3416 +#define __NR_fdatasync 148
3417 +#define __NR__sysctl 149
3418 +#define __NR_mlock 150
3419 +#define __NR_munlock 151
3420 +#define __NR_mlockall 152
3421 +#define __NR_munlockall 153
3422 +#define __NR_sched_setparam 154
3423 +#define __NR_sched_getparam 155
3424 +#define __NR_sched_setscheduler 156
3425 +#define __NR_sched_getscheduler 157
3426 +#define __NR_sched_yield 158
3427 +#define __NR_sched_get_priority_max 159
3428 +#define __NR_sched_get_priority_min 160
3429 +#define __NR_sched_rr_get_interval 161
3430 +#define __NR_nanosleep 162
3431 +#define __NR_mremap 163
3432 +#define __NR_setresuid 164
3433 +#define __NR_getresuid 165
3434 +#define __NR_getpagesize 166
3435 +#define __NR_query_module 167
3436 +#define __NR_poll 168
3437 +#define __NR_nfsservctl 169
3438 +#define __NR_setresgid 170
3439 +#define __NR_getresgid 171
3440 +#define __NR_prctl 172
3441 +#define __NR_rt_sigreturn 173
3442 +#define __NR_rt_sigaction 174
3443 +#define __NR_rt_sigprocmask 175
3444 +#define __NR_rt_sigpending 176
3445 +#define __NR_rt_sigtimedwait 177
3446 +#define __NR_rt_sigqueueinfo 178
3447 +#define __NR_rt_sigsuspend 179
3448 +#define __NR_pread64 180
3449 +#define __NR_pwrite64 181
3450 +#define __NR_lchown 182
3451 +#define __NR_getcwd 183
3452 +#define __NR_capget 184
3453 +#define __NR_capset 185
3454 +#define __NR_sigaltstack 186
3455 +#define __NR_sendfile 187
3456 +#define __NR_getpmsg 188 /* some people actually want streams */
3457 +#define __NR_putpmsg 189 /* some people actually want streams */
3458 +#define __NR_vfork 190
3459 +#define __NR_ugetrlimit 191
3460 +#define __NR_mmap2 192
3461 +#define __NR_truncate64 193
3462 +#define __NR_ftruncate64 194
3463 +#define __NR_stat64 195
3464 +#define __NR_lstat64 196
3465 +#define __NR_fstat64 197
3466 +#define __NR_chown32 198
3467 +#define __NR_getuid32 199
3468 +#define __NR_getgid32 200
3469 +#define __NR_geteuid32 201
3470 +#define __NR_getegid32 202
3471 +#define __NR_setreuid32 203
3472 +#define __NR_setregid32 204
3473 +#define __NR_getgroups32 205
3474 +#define __NR_setgroups32 206
3475 +#define __NR_fchown32 207
3476 +#define __NR_setresuid32 208
3477 +#define __NR_getresuid32 209
3478 +#define __NR_setresgid32 210
3479 +#define __NR_getresgid32 211
3480 +#define __NR_lchown32 212
3481 +#define __NR_setuid32 213
3482 +#define __NR_setgid32 214
3483 +#define __NR_setfsuid32 215
3484 +#define __NR_setfsgid32 216
3485 +#define __NR_pivot_root 217
3486 +#define __NR_getdents64 220
3487 +#define __NR_gettid 221
3488 +#define __NR_tkill 222
3489 +#define __NR_setxattr 223
3490 +#define __NR_lsetxattr 224
3491 +#define __NR_fsetxattr 225
3492 +#define __NR_getxattr 226
3493 +#define __NR_lgetxattr 227
3494 +#define __NR_fgetxattr 228
3495 +#define __NR_listxattr 229
3496 +#define __NR_llistxattr 230
3497 +#define __NR_flistxattr 231
3498 +#define __NR_removexattr 232
3499 +#define __NR_lremovexattr 233
3500 +#define __NR_fremovexattr 234
3501 +#define __NR_futex 235
3502 +#define __NR_sendfile64 236
3503 +#define __NR_mincore 237
3504 +#define __NR_madvise 238
3505 +#define __NR_fcntl64 239
3506 +#define __NR_readahead 240
3507 +#define __NR_io_setup 241
3508 +#define __NR_io_destroy 242
3509 +#define __NR_io_getevents 243
3510 +#define __NR_io_submit 244
3511 +#define __NR_io_cancel 245
3512 +#define __NR_fadvise64 246
3513 +#define __NR_exit_group 247
3514 +#define __NR_lookup_dcookie 248
3515 +#define __NR_epoll_create 249
3516 +#define __NR_epoll_ctl 250
3517 +#define __NR_epoll_wait 251
3518 +#define __NR_remap_file_pages 252
3519 +#define __NR_set_tid_address 253
3520 +#define __NR_timer_create 254
3521 +#define __NR_timer_settime 255
3522 +#define __NR_timer_gettime 256
3523 +#define __NR_timer_getoverrun 257
3524 +#define __NR_timer_delete 258
3525 +#define __NR_clock_settime 259
3526 +#define __NR_clock_gettime 260
3527 +#define __NR_clock_getres 261
3528 +#define __NR_clock_nanosleep 262
3529 +#define __NR_statfs64 263
3530 +#define __NR_fstatfs64 264
3531 +#define __NR_tgkill 265
3532 +#define __NR_utimes 266
3533 +#define __NR_fadvise64_64 267
3534 +#define __NR_mbind 268
3535 +#define __NR_get_mempolicy 269
3536 +#define __NR_set_mempolicy 270
3537 +#define __NR_mq_open 271
3538 +#define __NR_mq_unlink 272
3539 +#define __NR_mq_timedsend 273
3540 +#define __NR_mq_timedreceive 274
3541 +#define __NR_mq_notify 275
3542 +#define __NR_mq_getsetattr 276
3543 +#define __NR_waitid 277
3544 +#define __NR_vserver 278
3545 +#define __NR_add_key 279
3546 +#define __NR_request_key 280
3547 +#define __NR_keyctl 281
3548 +#define __NR_ioprio_set 282
3549 +#define __NR_ioprio_get 283
3550 +#define __NR_inotify_init 284
3551 +#define __NR_inotify_add_watch 285
3552 +#define __NR_inotify_rm_watch 286
3553 +#define __NR_migrate_pages 287
3554 +#define __NR_openat 288
3555 +#define __NR_mkdirat 289
3556 +#define __NR_mknodat 290
3557 +#define __NR_fchownat 291
3558 +#define __NR_futimesat 292
3559 +#define __NR_fstatat64 293
3560 +#define __NR_unlinkat 294
3561 +#define __NR_renameat 295
3562 +#define __NR_linkat 296
3563 +#define __NR_symlinkat 297
3564 +#define __NR_readlinkat 298
3565 +#define __NR_fchmodat 299
3566 +#define __NR_faccessat 300
3567 +#define __NR_pselect6 301
3568 +#define __NR_ppoll 302
3569 +#define __NR_unshare 303
3570 +#define __NR_set_robust_list 304
3571 +#define __NR_get_robust_list 305
3572 +#define __NR_splice 306
3573 +#define __NR_sync_file_range 307
3574 +#define __NR_tee 308
3575 +#define __NR_vmsplice 309
3576 +#define __NR_move_pages 310
3577 +#define __NR_sched_setaffinity 311
3578 +#define __NR_sched_getaffinity 312
3579 +#define __NR_kexec_load 313
3580 +#define __NR_getcpu 314
3581 +#define __NR_epoll_pwait 315
3582 +#define __NR_utimensat 316
3583 +#define __NR_signalfd 317
3584 +#define __NR_timerfd_create 318
3585 +#define __NR_eventfd 319
3586 +#define __NR_fallocate 320
3587 +#define __NR_timerfd_settime 321
3588 +#define __NR_timerfd_gettime 322
3589 +#define __NR_signalfd4 323
3590 +#define __NR_eventfd2 324
3591 +#define __NR_epoll_create1 325
3592 +#define __NR_dup3 326
3593 +#define __NR_pipe2 327
3594 +#define __NR_inotify_init1 328
3595 +
3596 +#ifdef __KERNEL__
3597 +
3598 +#define NR_syscalls 329
3599 +
3600 +#define __ARCH_WANT_IPC_PARSE_VERSION
3601 +#define __ARCH_WANT_OLD_READDIR
3602 +#define __ARCH_WANT_OLD_STAT
3603 +#define __ARCH_WANT_STAT64
3604 +#define __ARCH_WANT_SYS_ALARM
3605 +#define __ARCH_WANT_SYS_GETHOSTNAME
3606 +#define __ARCH_WANT_SYS_PAUSE
3607 +#define __ARCH_WANT_SYS_SGETMASK
3608 +#define __ARCH_WANT_SYS_SIGNAL
3609 +#define __ARCH_WANT_SYS_TIME
3610 +#define __ARCH_WANT_SYS_UTIME
3611 +#define __ARCH_WANT_SYS_WAITPID
3612 +#define __ARCH_WANT_SYS_SOCKETCALL
3613 +#define __ARCH_WANT_SYS_FADVISE64
3614 +#define __ARCH_WANT_SYS_GETPGRP
3615 +#define __ARCH_WANT_SYS_LLSEEK
3616 +#define __ARCH_WANT_SYS_NICE
3617 +#define __ARCH_WANT_SYS_OLD_GETRLIMIT
3618 +#define __ARCH_WANT_SYS_OLDUMOUNT
3619 +#define __ARCH_WANT_SYS_SIGPENDING
3620 +#define __ARCH_WANT_SYS_SIGPROCMASK
3621 +#define __ARCH_WANT_SYS_RT_SIGACTION
3622 +
3623 +/*
3624 + * "Conditional" syscalls
3625 + *
3626 + * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
3627 + * but it doesn't work on all toolchains, so we just do it by hand
3628 + */
3629 +//#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
3630 +#define cond_syscall(x) long x(void) __attribute__((weak,alias("sys_ni_syscall")))
3631 +#endif /* __KERNEL__ */
3632 +
3633 +#endif /* _ASM_UBICOM32_UNISTD_H */
3634 --- /dev/null
3635 +++ b/arch/ubicom32/include/asm/user.h
3636 @@ -0,0 +1,82 @@
3637 +/*
3638 + * arch/ubicom32/include/asm/user.h
3639 + * Ubicom32 architecture core file definitions.
3640 + *
3641 + * (C) Copyright 2009, Ubicom, Inc.
3642 + *
3643 + * This file is part of the Ubicom32 Linux Kernel Port.
3644 + *
3645 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
3646 + * it and/or modify it under the terms of the GNU General Public License
3647 + * as published by the Free Software Foundation, either version 2 of the
3648 + * License, or (at your option) any later version.
3649 + *
3650 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
3651 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
3652 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
3653 + * the GNU General Public License for more details.
3654 + *
3655 + * You should have received a copy of the GNU General Public License
3656 + * along with the Ubicom32 Linux Kernel Port. If not,
3657 + * see <http://www.gnu.org/licenses/>.
3658 + *
3659 + * Ubicom32 implementation derived from (with many thanks):
3660 + * arch/m68knommu
3661 + * arch/blackfin
3662 + * arch/parisc
3663 + */
3664 +#ifndef _ASM_UBICOM32_USER_H
3665 +#define _ASM_UBICOM32_USER_H
3666 +
3667 +#include <asm/ptrace.h>
3668 +#include <asm/page.h>
3669 +/*
3670 + * Adapted from <asm-powerpc/user.h>
3671 + *
3672 + * Core file format: The core file is written in such a way that gdb
3673 + * can understand it and provide useful information to the user (under
3674 + * linux we use the `trad-core' bfd, NOT the osf-core). The file contents
3675 + * are as follows:
3676 + *
3677 + * upage: 1 page consisting of a user struct that tells gdb
3678 + * what is present in the file. Directly after this is a
3679 + * copy of the task_struct, which is currently not used by gdb,
3680 + * but it may come in handy at some point. All of the registers
3681 + * are stored as part of the upage. The upage should always be
3682 + * only one page long.
3683 + * data: The data segment follows next. We use current->end_text to
3684 + * current->brk to pick up all of the user variables, plus any memory
3685 + * that may have been sbrk'ed. No attempt is made to determine if a
3686 + * page is demand-zero or if a page is totally unused, we just cover
3687 + * the entire range. All of the addresses are rounded in such a way
3688 + * that an integral number of pages is written.
3689 + * stack: We need the stack information in order to get a meaningful
3690 + * backtrace. We need to write the data from usp to
3691 + * current->start_stack, so we round each of these in order to be able
3692 + * to write an integer number of pages.
3693 + */
3694 +
3695 +struct user_ubicom32fp_struct {
3696 +};
3697 +
3698 +struct user {
3699 + struct pt_regs regs; /* entire machine state */
3700 + size_t u_tsize; /* text size (pages) */
3701 + size_t u_dsize; /* data size (pages) */
3702 + size_t u_ssize; /* stack size (pages) */
3703 + unsigned long start_code; /* text starting address */
3704 + unsigned long start_data; /* data starting address */
3705 + unsigned long start_stack; /* stack starting address */
3706 + long int signal; /* signal causing core dump */
3707 + unsigned long u_ar0; /* help gdb find registers */
3708 + unsigned long magic; /* identifies a core file */
3709 + char u_comm[32]; /* user command name */
3710 +};
3711 +
3712 +#define NBPG PAGE_SIZE
3713 +#define UPAGES 1
3714 +#define HOST_TEXT_START_ADDR (u.start_code)
3715 +#define HOST_DATA_START_ADDR (u.start_data)
3716 +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
3717 +
3718 +#endif /* _ASM_UBICOM32_USER_H */
3719 --- /dev/null
3720 +++ b/arch/ubicom32/include/asm/xor.h
3721 @@ -0,0 +1,33 @@
3722 +/*
3723 + * arch/ubicom32/include/asm/xor.h
3724 + * Generic xor.h definitions for Ubicom32 architecture.
3725 + *
3726 + * (C) Copyright 2009, Ubicom, Inc.
3727 + *
3728 + * This file is part of the Ubicom32 Linux Kernel Port.
3729 + *
3730 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
3731 + * it and/or modify it under the terms of the GNU General Public License
3732 + * as published by the Free Software Foundation, either version 2 of the
3733 + * License, or (at your option) any later version.
3734 + *
3735 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
3736 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
3737 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
3738 + * the GNU General Public License for more details.
3739 + *
3740 + * You should have received a copy of the GNU General Public License
3741 + * along with the Ubicom32 Linux Kernel Port. If not,
3742 + * see <http://www.gnu.org/licenses/>.
3743 + *
3744 + * Ubicom32 implementation derived from (with many thanks):
3745 + * arch/m68knommu
3746 + * arch/blackfin
3747 + * arch/parisc
3748 + */
3749 +#ifndef _ASM_UBICOM32_XOR_H
3750 +#define _ASM_UBICOM32_XOR_H
3751 +
3752 +#include <asm-generic/xor.h>
3753 +
3754 +#endif /* _ASM_UBICOM32_XOR_H */
3755 --- /dev/null
3756 +++ b/arch/ubicom32/Kconfig
3757 @@ -0,0 +1,455 @@
3758 +#
3759 +# For a description of the syntax of this configuration file,
3760 +# see Documentation/kbuild/kconfig-language.txt.
3761 +#
3762 +
3763 +mainmenu "uClinux/ubicom32 (w/o MMU) Kernel Configuration"
3764 +
3765 +config RAMBASE
3766 + hex
3767 + default "0x40000000"
3768 + help
3769 + Define the address that RAM starts at.
3770 +
3771 +config UBICOM32
3772 + bool
3773 + select HAVE_OPROFILE
3774 + default y
3775 +
3776 +config RAMKERNEL
3777 + bool
3778 + default y
3779 +
3780 +config CPU_BIG_ENDIAN
3781 + bool
3782 + default y
3783 +
3784 +config FORCE_MAX_ZONEORDER
3785 + int
3786 + default "14"
3787 +
3788 +config HAVE_CLK
3789 + bool
3790 + default y
3791 +
3792 +config MMU
3793 + bool
3794 + default n
3795 +
3796 +config FPU
3797 + bool
3798 + default n
3799 +
3800 +config ZONE_DMA
3801 + bool
3802 + default y
3803 +
3804 +config RWSEM_GENERIC_SPINLOCK
3805 + bool
3806 + default y
3807 +
3808 +config RWSEM_XCHGADD_ALGORITHM
3809 + bool
3810 + default n
3811 +
3812 +config ARCH_HAS_ILOG2_U32
3813 + bool
3814 + default n
3815 +
3816 +config ARCH_HAS_ILOG2_U64
3817 + bool
3818 + default n
3819 +
3820 +config GENERIC_FIND_NEXT_BIT
3821 + bool
3822 + default y
3823 +
3824 +config GENERIC_GPIO
3825 + bool
3826 + default y
3827 +
3828 +config GPIOLIB
3829 + bool
3830 + default y
3831 +
3832 +config GENERIC_HWEIGHT
3833 + bool
3834 + default y
3835 +
3836 +config GENERIC_HARDIRQS
3837 + bool
3838 + default y
3839 +
3840 +config STACKTRACE_SUPPORT
3841 + bool
3842 + default y
3843 +
3844 +config LOCKDEP_SUPPORT
3845 + bool
3846 + default y
3847 +
3848 +config GENERIC_CALIBRATE_DELAY
3849 + bool
3850 + default y
3851 +
3852 +config GENERIC_TIME
3853 + bool
3854 + default y
3855 +
3856 +config TIME_LOW_RES
3857 + bool
3858 + default y
3859 +
3860 +config GENERIC_CLOCKEVENTS
3861 + bool
3862 + default y
3863 +
3864 +config GENERIC_CLOCKEVENTS_BROADCAST
3865 + bool
3866 + depends on GENERIC_CLOCKEVENTS
3867 + default y if SMP && !LOCAL_TIMERS
3868 +
3869 +config NO_IOPORT
3870 + def_bool y
3871 +
3872 +config ARCH_SUPPORTS_AOUT
3873 + def_bool y
3874 +
3875 +config IRQ_PER_CPU
3876 + bool
3877 + default y
3878 +
3879 +config SCHED_NO_NO_OMIT_FRAME_POINTER
3880 + bool
3881 + default y
3882 +
3883 +menu "Processor type and features"
3884 +
3885 +config BRD_32MB
3886 + bool
3887 + depends on IP5160EVAL
3888 + help
3889 + Board has 32MB of RAM on it. It is a hidden option used to select default for size of RAM
3890 + default n
3891 +
3892 +config BRD_64MB
3893 + bool
3894 + depends on IP7145DPF || IP7160RGW || IP7160BRINGUP || IP7160DPF || IP5170DPF || IP5160DEV
3895 + help
3896 + Board has 64MB of RAM on it. It is a hidden option used to select default for size of RAM
3897 + default n
3898 +
3899 +config BRD_128MB
3900 + bool
3901 + depends on IP7500MODULE || IP7500AV || IP7500MEDIA
3902 + help
3903 + Board has 128MB of RAM on it. It is a hidden option used to select default for size of RAM
3904 + default n
3905 +
3906 +comment "Processor type will be selected by Board"
3907 +
3908 +config UBICOM32_V3
3909 + bool
3910 + help
3911 + Ubicom IP5xxx series processor support.
3912 +
3913 +config UBICOM32_V4
3914 + bool
3915 + help
3916 + Ubicom IP7xxx series processor support.
3917 +
3918 +comment "Board"
3919 +choice
3920 + prompt "Board type"
3921 + help
3922 + Select your board.
3923 +
3924 +config NOBOARD
3925 + bool "No board selected"
3926 + help
3927 + Default. Don't select any board specific config. Will not build unless you change!
3928 +
3929 +# Add your boards here
3930 +source "arch/ubicom32/mach-ip5k/Kconfig"
3931 +source "arch/ubicom32/mach-ip7k/Kconfig"
3932 +
3933 +endchoice
3934 +
3935 +comment "Kernel Options"
3936 +config SMP
3937 + bool "Symmetric multi-processing support"
3938 + select USE_GENERIC_SMP_HELPERS
3939 + default n
3940 + help
3941 + Enables multithreading support. Enabling SMP support increases
3942 + the size of system data structures. SMP support can have either
3943 + positive or negative impact on performance depending on workloads.
3944 +
3945 + If you do not know what to do here, say N.
3946 +
3947 +config NR_CPUS
3948 + int "Number of configured CPUs"
3949 + range 2 32
3950 + default 2
3951 + depends on SMP
3952 + help
3953 + Upper bound on the number of CPUs. Space is reserved
3954 + at compile time for this many CPUs.
3955 +
3956 +config LOCAL_TIMERS
3957 + bool "Use local timer interrupts"
3958 + depends on SMP
3959 + default y
3960 + help
3961 + Enable support for local timers on SMP platforms, rather then the
3962 + legacy IPI broadcast method. Local timers allows the system
3963 + accounting to be spread across the timer interval, preventing a
3964 + "thundering herd" at every timer tick. A physical timer is allocated
3965 + per cpu.
3966 +
3967 +config TIMER_EXTRA_ALLOC
3968 + int "Number of additional physical timer events to create"
3969 + depends on GENERIC_CLOCKEVENTS
3970 + default 0
3971 + help
3972 + The Ubicom32 processor has a number of event timers that can be wrapped
3973 + in Linux clock event structures (assuming that the timers are not being
3974 + used for another purpose). Based on the value of LOCAL_TIMERS, either
3975 + 2 timers will be used or a timer will be used for every CPU. This value
3976 + allows the programmer to select additional timers over that amount.
3977 +
3978 +config IRQSTACKS
3979 + bool "Create separate stacks for interrupt handling"
3980 + default n
3981 + help
3982 + Selecting this causes interrupts to be created on a separate
3983 + stack instead of nesting the interrupts on the kernel stack.
3984 +
3985 +config IRQSTACKS_USEOCM
3986 + bool "Use OCM for interrupt stacks"
3987 + default n
3988 + depends on IRQSTACKS
3989 + help
3990 + Selecting this cause the interrupt stacks to be placed in OCM
3991 + reducing cache misses at the expense of using the OCM for servicing
3992 + interrupts.
3993 +
3994 +menu "OCM Instruction Heap"
3995 +
3996 +config OCM_MODULES_RESERVATION
3997 + int "OCM Instruction heap reservation. 0-192 kB"
3998 + range 0 192
3999 + default "0"
4000 + help
4001 + The minimum amount of OCM memory to reserve for kernel loadable module
4002 + code. If you are not using this memory it cannot be used for anything
4003 + else. Leave it as 0 if you have prebuilt modules that are compiled with
4004 + OCM support.
4005 +
4006 +config OCM_MODULES_MAY_CONSUME_REMAINING_CODESPACE
4007 + bool "Give all unused ocm code space to the ocm instruction heap."
4008 + default n
4009 + help
4010 + Allow the OCM instruction heap allocation to consume any remaining
4011 + unused OCM code space. The result of this is that you will not have
4012 + and deterministic results, but you will not have any waste either.
4013 +
4014 +config OCM_MODULES_FALLBACK_TO_DDR
4015 + bool "Loadable Modules requiring OCM may fallback to use DDR."
4016 + default n
4017 + help
4018 + If a module cannot get the OCM code it requires allow DDR to
4019 + be used instead.
4020 +endmenu
4021 +
4022 +config HZ
4023 + int "Frequency of 'jiffies' (for polling)"
4024 + default 1000
4025 + help
4026 + 100 is common for embedded systems, but 1000 allows
4027 + you to do more drivers without actually having
4028 + interrupts working properly.
4029 +
4030 +comment "RAM configuration"
4031 +
4032 +if BRD_32MB
4033 +
4034 +config RAMSIZE
4035 + hex "Size of RAM (in bytes)"
4036 + range 0x00000000 0x02000000
4037 + default "0x02000000"
4038 + help
4039 + Define the size of the system RAM. If you select 0 then the
4040 + kernel will try to probe the RAM size at runtime. This is not
4041 + supported on all CPU types.
4042 +
4043 +endif
4044 +
4045 +if BRD_64MB
4046 +
4047 +config RAMSIZE
4048 + hex "Size of RAM (in bytes)"
4049 + range 0x00000000 0x04000000
4050 + default "0x04000000"
4051 + help
4052 + Define the size of the system RAM. If you select 0 then the
4053 + kernel will try to probe the RAM size at runtime. This is not
4054 + supported on all CPU types.
4055 +
4056 +endif
4057 +
4058 +if BRD_128MB
4059 +
4060 +config RAMSIZE
4061 + hex "Size of RAM (in bytes)"
4062 + range 0x00000000 0x08000000
4063 + default "0x08000000"
4064 + help
4065 + Define the size of the system RAM. If you select 0 then the
4066 + kernel will try to probe the RAM size at runtime. This is not
4067 + supported on all CPU types.
4068 +
4069 +endif
4070 +
4071 +config KERNELBASE
4072 + hex "Address of the base of kernel code"
4073 + default "0x40400000"
4074 + help
4075 + For the time being we are going to start the Kernel at a 4 meg offset.
4076 +
4077 +comment "Build options"
4078 +config LINKER_RELAXATION
4079 + bool "Linker Relaxation"
4080 + default y
4081 + help
4082 + Turns on linker relaxation that will produce smaller
4083 + faster code. Increases link time.
4084 +
4085 +comment "Driver options"
4086 +menu "PCI Bus"
4087 +config PCI
4088 + bool "PCI bus"
4089 + default true
4090 + help
4091 + Enable/Disable PCI bus
4092 + source "drivers/pci/Kconfig"
4093 +
4094 +
4095 +config PCI_DEV0_IDSEL
4096 + hex "slot 0 address"
4097 + depends on PCI
4098 + default "0x01000000"
4099 + help
4100 + Slot 0 address. This address should correspond to the address line
4101 + which the IDSEL bit for this slot is connected to.
4102 +
4103 +config PCI_DEV1_IDSEL
4104 + hex "slot 1 address"
4105 + depends on PCI
4106 + default "0x02000000"
4107 + help
4108 + Slot 1 address. This address should correspond to the address line
4109 + which the IDSEL bit for this slot is connected to.
4110 +endmenu
4111 +# End PCI
4112 +
4113 +menu "Input devices"
4114 +config UBICOM_INPUT
4115 + bool "Ubicom polled GPIO input driver"
4116 + select INPUT
4117 + select INPUT_POLLDEV
4118 + help
4119 + Polling input driver, much like the GPIO input driver, except that it doesn't
4120 + rely on interrupts. It will report events via the input subsystem.
4121 + default n
4122 +
4123 +config UBICOM_INPUT_I2C
4124 + bool "Ubicom polled GPIO input driver over I2C"
4125 + select INPUT
4126 + select INPUT_POLLDEV
4127 + help
4128 + Polling input driver, much like the PCA953x driver, it can support a variety of
4129 + different I2C I/O expanders. This device polls the I2C I/O expander for events
4130 + and reports them via the input subsystem.
4131 + default n
4132 +endmenu
4133 +# Input devices
4134 +
4135 +menu "Misc devices"
4136 +config UBICOM_HID
4137 + bool "Ubicom HID driver"
4138 + select INPUT
4139 + select INPUT_POLLDEV
4140 + select LCD_CLASS_DEVICE
4141 + help
4142 + Driver for HID chip found on some Ubicom reference designs. This chip handles
4143 + PWM, button input, and IR remote control. It registers as an input device and
4144 + a backlight device.
4145 + default n
4146 +endmenu
4147 +# Misc devices
4148 +
4149 +config CMDLINE_BOOL
4150 + bool "Built-in kernel command line"
4151 + default n
4152 + help
4153 + Allow for specifying boot arguments to the kernel at
4154 + build time. On some systems (e.g. embedded ones), it is
4155 + necessary or convenient to provide some or all of the
4156 + kernel boot arguments with the kernel itself (that is,
4157 + to not rely on the boot loader to provide them.)
4158 +
4159 + To compile command line arguments into the kernel,
4160 + set this option to 'Y', then fill in the
4161 + the boot arguments in CONFIG_CMDLINE.
4162 +
4163 + Systems with fully functional boot loaders (i.e. non-embedded)
4164 + should leave this option set to 'N'.
4165 +
4166 +config CMDLINE
4167 + string "Built-in kernel command string"
4168 + depends on CMDLINE_BOOL
4169 + default ""
4170 + help
4171 + Enter arguments here that should be compiled into the kernel
4172 + image and used at boot time. If the boot loader provides a
4173 + command line at boot time, it is appended to this string to
4174 + form the full kernel command line, when the system boots.
4175 +
4176 + However, you can use the CONFIG_CMDLINE_OVERRIDE option to
4177 + change this behavior.
4178 +
4179 + In most cases, the command line (whether built-in or provided
4180 + by the boot loader) should specify the device for the root
4181 + file system.
4182 +
4183 +config CMDLINE_OVERRIDE
4184 + bool "Built-in command line overrides boot loader arguments"
4185 + default n
4186 + depends on CMDLINE_BOOL
4187 + help
4188 + Set this option to 'Y' to have the kernel ignore the boot loader
4189 + command line, and use ONLY the built-in command line.
4190 +
4191 + This is used to work around broken boot loaders. This should
4192 + be set to 'N' under normal conditions.
4193 +
4194 +endmenu
4195 +# End Processor type and features
4196 +
4197 +source "arch/ubicom32/Kconfig.debug"
4198 +
4199 +menu "Executable file formats"
4200 +source "fs/Kconfig.binfmt"
4201 +endmenu
4202 +
4203 +source "init/Kconfig"
4204 +source "kernel/Kconfig.preempt"
4205 +source "kernel/time/Kconfig"
4206 +source "mm/Kconfig"
4207 +source "net/Kconfig"
4208 +source "drivers/Kconfig"
4209 +source "fs/Kconfig"
4210 +source "security/Kconfig"
4211 +source "crypto/Kconfig"
4212 +source "lib/Kconfig"
4213 --- /dev/null
4214 +++ b/arch/ubicom32/Kconfig.debug
4215 @@ -0,0 +1,117 @@
4216 +menu "Kernel hacking"
4217 +
4218 +config TRACE_IRQFLAGS_SUPPORT
4219 + def_bool y
4220 +
4221 +config PROTECT_KERNEL
4222 + default y
4223 + bool 'Enable Kernel range register Protection'
4224 + help
4225 + Adds code to enable/disable range registers to protect static
4226 + kernel code/data from userspace. Currently the ranges covered
4227 + do no protect kernel loadable modules or dynamically allocated
4228 + kernel data.
4229 +
4230 +config NO_KERNEL_MSG
4231 + bool "Suppress Kernel BUG Messages"
4232 + help
4233 + Do not output any debug BUG messages within the kernel.
4234 +
4235 +config EARLY_PRINTK
4236 + bool "Use the driver that you selected as console also for early printk (to debug kernel bootup)."
4237 + default n
4238 + help
4239 + If you want to use the serdes driver (console=ttyUS0) for
4240 + early printk, you must also supply an additional kernel boot
4241 + parameter like this:
4242 +
4243 + serdes=ioportaddr,irq,clockrate,baud
4244 +
4245 + For an IP7160RGW eval board, you could use this:
4246 +
4247 + serdes=0x2004000,61,250000000,57600
4248 +
4249 + which will let you see early printk output at 57600 baud.
4250 +
4251 +config STOP_ON_TRAP
4252 + bool "Enable stopping at the LDSR for all traps"
4253 + default n
4254 + help
4255 + Cause the LDSR to stop all threads whenever a trap is about to be serviced
4256 +
4257 +config STOP_ON_BUG
4258 + bool "Enable stopping on failed BUG_ON()"
4259 + default n
4260 + help
4261 + Cause all BUG_ON failures to stop all threads
4262 +
4263 +config DEBUG_IRQMEASURE
4264 + bool "Enable IRQ handler measurements"
4265 + default n
4266 + help
4267 + When enabled each IRQ's min/avg/max times will be printed. If the handler
4268 + re-enables interrupt, the times will show the full time including to service
4269 + nested interrupts. See /proc/irq_measurements.
4270 +
4271 +config DEBUG_PCIMEASURE
4272 + bool "Enable PCI transaction measurements"
4273 + default n
4274 + help
4275 + When enabled the system will measure the min/avg/max timer for each PCI transactions.
4276 + See /proc/pci_measurements.
4277 +
4278 +config ACCESS_OK_CHECKS_ENABLED
4279 + bool "Enable user space access checks"
4280 + default n
4281 + help
4282 + Enabling this check causes the kernel to verify that addresses passed
4283 + to the kernel by the user space code are within the processes
4284 + address space. On a no-mmu system, this is done by examining the
4285 + processes memory data structures (adversly affecting performance) but
4286 + ensuring that a process does not ask the kernel to violate another
4287 + processes address space. Sadly, the kernel uses access_ok() for
4288 + address that are in the kernel which results in a large volume of
4289 + false positives.
4290 +
4291 +choice
4292 + prompt "Unaligned Access Support"
4293 + default UNALIGNED_ACCESS_ENABLED
4294 + help
4295 + Kernel / Userspace unaligned access handling.
4296 +
4297 +config UNALIGNED_ACCESS_ENABLED
4298 + bool "Kernel and Userspace"
4299 + help
4300 +
4301 +config UNALIGNED_ACCESS_USERSPACE_ONLY
4302 + bool "Userspace Only"
4303 + help
4304 +
4305 +config UNALIGNED_ACCESS_DISABLED
4306 + bool "Disabled"
4307 + help
4308 +
4309 +endchoice
4310 +
4311 +config DEBUG_STACKOVERFLOW
4312 + bool "Check for stack overflows"
4313 + default n
4314 + depends on DEBUG_KERNEL
4315 + help
4316 + This option will cause messages to be printed if free kernel stack space
4317 + drops below a certain limit (THREAD_SIZE /8).
4318 +
4319 +config DEBUG_STACK_USAGE
4320 + bool "Stack utilization instrumentation"
4321 + default n
4322 + depends on DEBUG_KERNEL
4323 + help
4324 + Enables the display of the minimum amount of free kernel stack which each
4325 + task has ever had available in the sysrq-T and sysrq-P debug output.
4326 +
4327 + This option will slow down process creation somewhat.
4328 +
4329 +source "lib/Kconfig.debug"
4330 +
4331 +endmenu
4332 +
4333 --- /dev/null
4334 +++ b/arch/ubicom32/Makefile
4335 @@ -0,0 +1,103 @@
4336 +#
4337 +# arch/ubicom32/Makefile
4338 +# <TODO: Replace with short file description>
4339 +#
4340 +# (C) Copyright 2009, Ubicom, Inc.
4341 +#
4342 +# This file is part of the Ubicom32 Linux Kernel Port.
4343 +#
4344 +# The Ubicom32 Linux Kernel Port is free software: you can redistribute
4345 +# it and/or modify it under the terms of the GNU General Public License
4346 +# as published by the Free Software Foundation, either version 2 of the
4347 +# License, or (at your option) any later version.
4348 +#
4349 +# The Ubicom32 Linux Kernel Port is distributed in the hope that it
4350 +# will be useful, but WITHOUT ANY WARRANTY; without even the implied
4351 +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
4352 +# the GNU General Public License for more details.
4353 +#
4354 +# You should have received a copy of the GNU General Public License
4355 +# along with the Ubicom32 Linux Kernel Port. If not,
4356 +# see <http://www.gnu.org/licenses/>.
4357 +#
4358 +# Ubicom32 implementation derived from (with many thanks):
4359 +# arch/m68knommu
4360 +# arch/blackfin
4361 +# arch/parisc
4362 +#
4363 +
4364 +KBUILD_DEFCONFIG :=
4365 +
4366 +# setup the machine name and machine dependent settings
4367 +machine-$(CONFIG_UBICOM32_V3) := ip5k
4368 +machine-$(CONFIG_UBICOM32_V4) := ip7k
4369 +MACHINE := $(machine-y)
4370 +export MACHINE
4371 +
4372 +model-$(CONFIG_RAMKERNEL) := ram
4373 +model-$(CONFIG_ROMKERNEL) := rom
4374 +MODEL := $(model-y)
4375 +export MODEL
4376 +
4377 +CPUCLASS := $(cpuclass-y)
4378 +
4379 +export CPUCLASS
4380 +
4381 +#
4382 +# We want the core kernel built using the fastcall ABI but modules need
4383 +# to be built using the slower calling convention because they could be
4384 +# loaded out of range for fast calls.
4385 +#
4386 +CFLAGS_KERNEL += -mfastcall
4387 +CFLAGS_MODULE += -mno-fastcall
4388 +
4389 +#
4390 +# Some CFLAG additions based on specific CPU type.
4391 +#
4392 +cflags-$(CONFIG_UBICOM32_V3) := -march=ubicom32v3 -mno-fdpic -DIP5000
4393 +cflags-$(CONFIG_UBICOM32_V4) := -march=ubicom32v4 -mno-fdpic -DIP7000
4394 +
4395 +ldflags-$(CONFIG_LINKER_RELAXATION) := --relax
4396 +LDFLAGS_vmlinux := $(ldflags-y)
4397 +
4398 +GCCLIBDIR := $(dir $(shell $(CC) $(cflags-y) -print-libgcc-file-name))
4399 +
4400 +KBUILD_CFLAGS += $(cflags-y) -ffunction-sections
4401 +KBUILD_AFLAGS += $(cflags-y)
4402 +
4403 +KBUILD_CFLAGS += -D__linux__ -Dlinux
4404 +KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\"
4405 +
4406 +# include any machine specific directory
4407 +ifneq ($(machine-y),)
4408 +core-y += arch/$(ARCH)/mach-$(MACHINE)/
4409 +endif
4410 +
4411 +head-y := arch/$(ARCH)/kernel/head.o
4412 +
4413 +core-y += arch/$(ARCH)/kernel/ \
4414 + arch/$(ARCH)/mm/ \
4415 + arch/$(ARCH)/crypto/ \
4416 + arch/$(ARCH)/mach-common/
4417 +
4418 +drivers-$(CONFIG_OPROFILE) += arch/ubicom32/oprofile/
4419 +
4420 +libs-y += arch/$(ARCH)/lib/
4421 +
4422 +archclean:
4423 +
4424 +# make sure developer has selected a valid board
4425 +ifeq ($(CONFIG_NOBOARD),y)
4426 +# $(error have to select a valid board file $(CONFIG_NOBOARD), please run kernel config again)
4427 +_all: config_board_error
4428 +endif
4429 +
4430 +config_board_error:
4431 + @echo "*************************************************"
4432 + @echo "You have not selected a proper board."
4433 + @echo "Please run menuconfig (or config) against your"
4434 + @echo "kernel and choose your board under Processor"
4435 + @echo "options"
4436 + @echo "*************************************************"
4437 + @exit 1
4438 +
4439 --- /dev/null
4440 +++ b/arch/ubicom32/kernel/asm-offsets.c
4441 @@ -0,0 +1,162 @@
4442 +/*
4443 + * arch/ubicom32/kernel/asm-offsets.c
4444 + * Ubicom32 architecture definitions needed by assembly language modules.
4445 + *
4446 + * (C) Copyright 2009, Ubicom, Inc.
4447 + *
4448 + * This file is part of the Ubicom32 Linux Kernel Port.
4449 + *
4450 + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
4451 + * it and/or modify it under the terms of the GNU General Public License
4452 + * as published by the Free Software Foundation, either version 2 of the
4453 + * License, or (at your option) any later version.
4454 + *
4455 + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
4456 + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
4457 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
4458 + * the GNU General Public License for more details.
4459 + *
4460 + * You should have received a copy of the GNU General Public License
4461 + * along with the Ubicom32 Linux Kernel Port. If not,
4462 + * see <http://www.gnu.org/licenses/>.
4463 + *
4464 + * Ubicom32 implementation derived from (with many thanks):
4465 + * arch/m68knommu
4466 + * arch/blackfin
4467 + * arch/parisc
4468 + */
4469 +/*
4470 + * This program is used to generate definitions needed by
4471 + * assembly language modules.
4472 + *
4473 + * We use the technique used in the OSF Mach kernel code:
4474 + * generate asm statements containing #defines,
4475 + * compile this file to assembler, and then extract the
4476 + * #defines from the assembly-language output.
4477 + */
4478 +
4479 +#include <linux/module.h>
4480 +#include <linux/stddef.h>
4481 +#include <linux/sched.h>
4482 +#include <linux/kernel_stat.h>
4483 +#include <linux/ptrace.h>
4484 +#include <linux/hardirq.h>
4485 +#include <asm/bootinfo.h>
4486 +#include <asm/irq.h>
4487 +#include <asm/thread_info.h>
4488 +
4489 +#define DEFINE(sym, val) \
4490 + asm volatile("\n->" #sym " %0 " #val : : "i" (val))
4491 +
4492 +#define BLANK() asm volatile("\n->" : : )
4493 +
4494 +int main(void)
4495 +{
4496 + /* offsets into the task struct */
4497 + DEFINE(TASK_STATE, offsetof(struct task_struct, state));
4498 + DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags));
4499 + DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace));
4500 + DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked));
4501 + DEFINE(TASK_THREAD, offsetof(struct task_struct, thread));
4502 + DEFINE(TASK_THREAD_INFO, offsetof(struct task_struct, stack));
4503 + DEFINE(TASK_MM, offsetof(struct task_struct, mm));
4504 + DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm));
4505 +
4506 + /* offsets into the kernel_stat struct */
4507 + DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
4508 +
4509 + /* offsets into the irq_cpustat_t struct */
4510 + DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending));
4511 +
4512 + /* offsets into the thread struct */
4513 + DEFINE(THREAD_D10, offsetof(struct thread_struct, d10));
4514 + DEFINE(THREAD_D11, offsetof(struct thread_struct, d11));
4515 + DEFINE(THREAD_D12, offsetof(struct thread_struct, d12));
4516 + DEFINE(THREAD_D13, offsetof(struct thread_struct, d13));
4517 + DEFINE(THREAD_A1, offsetof(struct thread_struct, a1));
4518 + DEFINE(THREAD_A2, offsetof(struct thread_struct, a2));
4519 + DEFINE(THREAD_A5, offsetof(struct thread_struct, a5));
4520 + DEFINE(THREAD_A6, offsetof(struct thread_struct, a6));
4521 + DEFINE(THREAD_SP, offsetof(struct thread_struct, sp));
4522 +
4523 + /* offsets into the pt_regs */
4524 + DEFINE(PT_D0, offsetof(struct pt_regs, dn[0]));
4525 + DEFINE(PT_D1, offsetof(struct pt_regs, dn[1]));
4526 + DEFINE(PT_D2, offsetof(struct pt_regs, dn[2]));
4527 + DEFINE(PT_D3, offsetof(struct pt_regs, dn[3]));
4528 + DEFINE(PT_D4, offsetof(struct pt_regs, dn[4]));
4529 + DEFINE(PT_D5, offsetof(struct pt_regs, dn[5]));
4530 + DEFINE(PT_D6, offsetof(struct pt_regs, dn[6]));
4531 + DEFINE(PT_D7, offsetof(struct pt_regs, dn[7]));
4532 + DEFINE(PT_D8, offsetof(struct pt_regs, dn[8]));
4533 + DEFINE(PT_D9, offsetof(struct pt_regs, dn[9]));
4534 + DEFINE(PT_D10, offsetof(struct pt_regs, dn[10]));
4535 + DEFINE(PT_D11, offsetof(struct pt_regs, dn[11]));
4536 + DEFINE(PT_D12, offsetof(struct pt_regs, dn[12]));
4537 + DEFINE(PT_D13, offsetof(struct pt_regs, dn[13]));
4538 + DEFINE(PT_D14, offsetof(struct pt_regs, dn[14]));
4539 + DEFINE(PT_D15, offsetof(struct pt_regs, dn[15]));
4540 + DEFINE(PT_A0, offsetof(struct pt_regs, an[0]));
4541 + DEFINE(PT_A1, offsetof(struct pt_regs, an[1]));
4542 + DEFINE(PT_A2, offsetof(struct pt_regs, an[2]));
4543 + DEFINE(PT_A3, offsetof(struct pt_regs, an[3]));
4544 + DEFINE(PT_A4, offsetof(struct pt_regs, an[4]));
4545 + DEFINE(PT_A5, offsetof(struct pt_regs, an[5]));
4546 + DEFINE(PT_A6, offsetof(struct pt_regs, an[6]));
4547 + DEFINE(PT_A7, offsetof(struct pt_regs, an[7]));
4548 + DEFINE(PT_SP, offsetof(struct pt_regs, an[7]));
4549 +
4550 + DEFINE(PT_ACC0HI, offsetof(struct pt_regs, acc0[0]));
4551 + DEFINE(PT_ACC0LO, offsetof(struct pt_regs, acc0[1]));
4552 + DEFINE(PT_MAC_RC16, offsetof(struct pt_regs, mac_rc16));
4553 +
4554 + DEFINE(PT_ACC1HI, offsetof(struct pt_regs, acc1[0]));
4555 + DEFINE(PT_ACC1LO, offsetof(struct pt_regs, acc1[1]));
4556 +
4557 + DEFINE(PT_SOURCE3, offsetof(struct pt_regs, source3));
4558 + DEFINE(PT_INST_CNT, offsetof(struct pt_regs, inst_cnt));
4559 + DEFINE(PT_CSR, offsetof(struct pt_regs, csr));
4560 + DEFINE(PT_DUMMY_UNUSED, offsetof(struct pt_regs, dummy_unused));
4561 +
4562 + DEFINE(PT_INT_MASK0, offsetof(struct pt_regs, int_mask0));
4563 + DEFINE(PT_INT_MASK1, offsetof(struct pt_regs, int_mask1));
4564 +
4565 + DEFINE(PT_PC, offsetof(struct pt_regs, pc));
4566 +
4567 + DEFINE(PT_TRAP_CAUSE, offsetof(struct pt_regs, trap_cause));
4568 +
4569 + DEFINE(PT_SIZE, sizeof(struct pt_regs));
4570 +
4571 + DEFINE(PT_FRAME_TYPE, offsetof(struct pt_regs, frame_type));
4572 +
4573 + DEFINE(PT_ORIGINAL_D0, offsetof(struct pt_regs, original_dn_0));
4574 + DEFINE(PT_PREVIOUS_PC, offsetof(struct pt_regs, previous_pc));
4575 +
4576 + /* offsets into the kernel_stat struct */
4577 + DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
4578 +
4579 + /* signal defines */
4580 + DEFINE(SIGSEGV, SIGSEGV);
4581 + //DEFINE(SEGV_MAPERR, SEGV_MAPERR);
4582 + DEFINE(SIGTRAP, SIGTRAP);
4583 + //DEFINE(TRAP_TRACE, TRAP_TRACE);
4584 +
4585 + DEFINE(PT_PTRACED, PT_PTRACED);
4586 + DEFINE(PT_DTRACE, PT_DTRACE);
4587 +
4588 + DEFINE(ASM_THREAD_SIZE, THREAD_SIZE);
4589 +
4590 + /* Offsets in thread_info structure */
4591 + DEFINE(TI_TASK, offsetof(struct thread_info, task));
4592 + DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain));
4593 + DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
4594 + DEFINE(TI_PREEMPTCOUNT, offsetof(struct thread_info, preempt_count));
4595 + DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
4596 + DEFINE(TI_INTR_NESTING, offsetof(struct thread_info, interrupt_nesting));
4597 + DEFINE(ASM_TIF_NEED_RESCHED, TIF_NEED_RESCHED);
4598 + DEFINE(ASM_TIF_SYSCALL_TRACE, TIF_SYSCALL_TRACE);
4599 + DEFINE(ASM_TIF_SIGPENDING, TIF_SIGPENDING);
4600 +
4601 + DEFINE(ASM_RAM_END, (CONFIG_RAMBASE + CONFIG_RAMSIZE));
4602 + return 0;
4603 +}
4604 --- /dev/null
4605 +++ b/arch/ubicom32/kernel/Makefile
4606 @@ -0,0 +1,64 @@
4607 +#
4608 +# arch/ubicom32/kernel/Makefile
4609 +# Main Makefile for the Ubicom32 arch directory.
4610 +#
4611 +# (C) Copyright 2009, Ubicom, Inc.
4612 +#
4613 +# This file is part of the Ubicom32 Linux Kernel Port.
4614 +#
4615 +# The Ubicom32 Linux Kernel Port is free software: you can redistribute
4616 +# it and/or modify it under the terms of the GNU General Public License
4617 +# as published by the Free Software Foundation, either version 2 of the
4618 +# License, or (at your option) any later version.
4619 +#
4620 +# The Ubicom32 Linux Kernel Port is distributed in the hope that it
4621 +# will be useful, but WITHOUT ANY WARRANTY; without even the implied
4622 +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
4623 +# the GNU General Public License for more details.
4624 +#
4625 +# You should have received a copy of the GNU General Public License
4626 +# along with the Ubicom32 Linux Kernel Port. If not,
4627 +# see <http://www.gnu.org/licenses/>.
4628 +#
4629 +# Ubicom32 implementation derived from (with many thanks):
4630 +# arch/m68knommu
4631 +# arch/blackfin
4632 +# arch/parisc
4633 +#
4634 +
4635 +extra-y := head.o vmlinux.lds
4636 +
4637 +obj-y += \
4638 + devtree.o \
4639 + dma.o \
4640 + flat.o \
4641 + init_task.o \
4642 + irq.o \
4643 + ldsr.o \
4644 + os_node.o \
4645 + process.o \
4646 + processor.o \
4647 + ptrace.o \
4648 + setup.o \
4649 + signal.o \
4650 + stacktrace.o \
4651 + sys_ubicom32.o \
4652 + syscalltable.o \
4653 + thread.o \
4654 + time.o \
4655 + traps.o \
4656 + ubicom32_context_switch.o \
4657 + ubicom32_ksyms.o \
4658 + ubicom32_syscall.o \
4659 + unaligned_trap.o
4660 +
4661 +obj-$(CONFIG_MODULES) += module.o
4662 +obj-$(CONFIG_COMEMPCI) += comempci.o
4663 +obj-$(CONFIG_SMP) += smp.o topology.o
4664 +obj-$(CONFIG_ACCESS_OK_CHECKS_ENABLED) += uaccess.o
4665 +obj-$(CONFIG_GENERIC_CLOCKEVENTS) += timer_device.o
4666 +obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += timer_broadcast.o
4667 +
4668 +ifndef CONFIG_GENERIC_CLOCKEVENTS
4669 +obj-y += timer_tick.o
4670 +endif
4671 --- /dev/null
4672 +++ b/arch/ubicom32/mach-ip5k/Kconfig
4673 @@ -0,0 +1,32 @@
4674 +
4675 +config IP5170DPF
4676 + bool "IP5170DPF"
4677 + select UBICOM32_V3
4678 + select I2C
4679 + select I2C_GPIO
4680 + select FB
4681 + select FB_UBICOM32
4682 + select BACKLIGHT_LCD_SUPPORT
4683 + select BACKLIGHT_CLASS_DEVICE
4684 + select UBICOM_HID
4685 + select NEW_LEDS
4686 + select LEDS_CLASS
4687 + select LEDS_GPIO
4688 + select BRD_64MB
4689 + help
4690 + IP5170 Digital Picture Frame board, 8005-1113, IP5K-BEV-0011-13 v1.3
4691 +
4692 +config IP5160DEV
4693 + bool "IP5160Dev_Ver1Dot1"
4694 + select UBICOM32_V3
4695 + select BRD_64MB
4696 + help
4697 + Ubicom StreamEngine 5000 Development Board, IP5K-BDV-0004-11 v1.1
4698 +
4699 +config IP5160EVAL
4700 + bool "IP5160RGWEval_Ver2Rev2"
4701 + select UBICOM32_V3
4702 + select BRD_32MB
4703 + help
4704 + Ubicom StreamEngine 5000 RGW Evaluation Board, IP5K-RGW-0004-11 v2.2
4705 +
4706 --- /dev/null
4707 +++ b/arch/ubicom32/mach-ip7k/Kconfig
4708 @@ -0,0 +1,132 @@
4709 +config IP7145DPF
4710 + bool "IP7145DPF"
4711 + select UBICOM32_V4
4712 + select UBICOM_INPUT
4713 + select UBICOM_INPUT_I2C
4714 + select RTC_CLASS
4715 + select RTC_DRV_S35390A
4716 + select I2C
4717 + select I2C_GPIO
4718 + select GPIO_PCA953X
4719 + select FB
4720 + select FB_UBICOM32
4721 + select BACKLIGHT_LCD_SUPPORT
4722 + select LCD_CLASS_DEVICE
4723 + select LCD_UBICOM32
4724 + select BACKLIGHT_CLASS_DEVICE
4725 + select BACKLIGHT_UBICOM32
4726 + select SND_UBI32
4727 + select MMC_UBICOM32
4728 + select MMC
4729 + select MMC_BLOCK
4730 + select BRD_64MB
4731 + help
4732 + IP7145 Digital Picture Frame reference design, supports:
4733 + 8007-0410 v1.0
4734 +
4735 +config IP7160RGW
4736 + bool "IP7160RGW"
4737 + select UBICOM32_V4
4738 + select UBICOM_INPUT
4739 + select NEW_LEDS
4740 + select LEDS_CLASS
4741 + select LEDS_GPIO
4742 + select BRD_64MB
4743 + select SPI
4744 + select SPI_UBICOM32_GPIO
4745 + select VLAN_8021Q
4746 + select UBICOM_SWITCH
4747 + select UBICOM_SWITCH_BCM539X
4748 + help
4749 + Ubicom IP7160 RGW Eval, supports:
4750 + 8007-0110 v1.0
4751 + 8007-0111 v1.1
4752 + 8007-0112 v1.2
4753 +
4754 +config IP7160BRINGUP
4755 + bool "IP7160BRINGUP"
4756 + select UBICOM32_V4
4757 + select NEW_LEDS
4758 + select LEDS_CLASS
4759 + select LEDS_GPIO
4760 + select BRD_64MB
4761 + help
4762 + Ubicom IP7160 Bringup, supports:
4763 + 8007-0010 v1.0
4764 +
4765 +config IP7160DPF
4766 + bool "IP7160DPF"
4767 + select UBICOM32_V4
4768 + select I2C
4769 + select I2C_GPIO
4770 + select FB
4771 + select FB_UBICOM32
4772 + select BACKLIGHT_LCD_SUPPORT
4773 + select BACKLIGHT_CLASS_DEVICE
4774 + select SND_UBI32
4775 + select SND_UBI32_AUDIO_CS4350
4776 + select UBICOM_HID
4777 + select BRD_64MB
4778 + help
4779 + IP7160 Digital Picture Frame board, supports:
4780 + 8007-0211 Rev 1.1
4781 +
4782 +config IP7500MODULE
4783 + bool "IP7500MODULE"
4784 + select UBICOM32_V4
4785 + select BRD_128MB
4786 + help
4787 + Ubicom IP7500 CPU Module board, supports:
4788 + 8007-0510 v1.0
4789 + 8007-0510A v1.0
4790 +
4791 + Please see ip7500module.c for more details.
4792 +
4793 +config IP7500AV
4794 + bool "IP7500AV"
4795 + select UBICOM32_V4
4796 + select BRD_128MB
4797 + select I2C
4798 + select I2C_GPIO
4799 + select SND_UBI32
4800 + select SND_UBI32_AUDIO_CS4384
4801 + select FB
4802 + select FB_UBICOM32
4803 + help
4804 + Ubicom IP7500 Audio Video board, supports:
4805 + 8007-0810 v1.0
4806 +
4807 + With Ubicom IP7500 CPU Module board:
4808 + 8007-0510 v1.0 -or-
4809 + 8007-0510A v1.0
4810 +
4811 + Please see ip7500av.c for more details.
4812 +
4813 +config IP7500MEDIA
4814 + bool "IP7500MEDIA"
4815 + select UBICOM32_V4
4816 + select UBICOM_INPUT_I2C
4817 + select RTC_CLASS
4818 + select RTC_DRV_S35390A
4819 + select I2C
4820 + select I2C_GPIO
4821 + select GPIO_PCA953X
4822 + select FB
4823 + select FB_UBICOM32
4824 + select BACKLIGHT_LCD_SUPPORT
4825 + select LCD_CLASS_DEVICE
4826 + select LCD_UBICOM32
4827 + select BACKLIGHT_CLASS_DEVICE
4828 + select BACKLIGHT_UBICOM32
4829 + select SND_UBI32
4830 + select SND_UBI32_AUDIO_CS4350
4831 + select MMC_UBICOM32
4832 + select MMC
4833 + select MMC_BLOCK
4834 + select BRD_128MB
4835 + help
4836 + IP7500 Media Board w/ IP7500 CPU Module board, supports:
4837 + 8007-0610 v1.0 w/ 8007-0510 v1.0
4838 +
4839 + Please see ip7500media.c for more details.
4840 +
4841 --- a/fs/Kconfig.binfmt
4842 +++ b/fs/Kconfig.binfmt
4843 @@ -30,7 +30,7 @@ config COMPAT_BINFMT_ELF
4844 config BINFMT_ELF_FDPIC
4845 bool "Kernel support for FDPIC ELF binaries"
4846 default y
4847 - depends on (FRV || BLACKFIN || (SUPERH32 && !MMU))
4848 + depends on (FRV || BLACKFIN || (SUPERH32 && !MMU) || UBICOM32)
4849 help
4850 ELF FDPIC binaries are based on ELF, but allow the individual load
4851 segments of a binary to be located in memory independently of each
4852