mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 21:18:26 +02:00
5dff535f66
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18792 3c298f89-4303-0410-b956-a3cf2f4a3e73
4853 lines
144 KiB
Diff
4853 lines
144 KiB
Diff
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/a.out.h
|
|
@@ -0,0 +1,47 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/a.out.h
|
|
+ * Definitions for Ubicom32 a.out executable format.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_A_OUT_H
|
|
+#define _ASM_UBICOM32_A_OUT_H
|
|
+
|
|
+struct exec
|
|
+{
|
|
+ unsigned long a_info; /* Use macros N_MAGIC, etc for access */
|
|
+ unsigned a_text; /* length of text, in bytes */
|
|
+ unsigned a_data; /* length of data, in bytes */
|
|
+ unsigned a_bss; /* length of uninitialized data area for file, in bytes */
|
|
+ unsigned a_syms; /* length of symbol table data in file, in bytes */
|
|
+ unsigned a_entry; /* start address */
|
|
+ unsigned a_trsize; /* length of relocation info for text, in bytes */
|
|
+ unsigned a_drsize; /* length of relocation info for data, in bytes */
|
|
+};
|
|
+
|
|
+#define N_TRSIZE(a) ((a).a_trsize)
|
|
+#define N_DRSIZE(a) ((a).a_drsize)
|
|
+#define N_SYMSIZE(a) ((a).a_syms)
|
|
+
|
|
+#endif /* _ASM_UBICOM32_A_OUT_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/auxvec.h
|
|
@@ -0,0 +1,32 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/auxvec.h
|
|
+ * Symbolic values for the entries in the auxiliary table
|
|
+ * put on the initial stack.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_AUXVEC_H
|
|
+#define _ASM_UBICOM32_AUXVEC_H
|
|
+
|
|
+#endif /* _ASM_UBICOM32_AUXVEC_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/bitops.h
|
|
@@ -0,0 +1,41 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/bitops.h
|
|
+ * Bit manipulation definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_BITOPS_H
|
|
+#define _ASM_UBICOM32_BITOPS_H
|
|
+
|
|
+/*
|
|
+ * Copyright 1992, Linus Torvalds.
|
|
+ */
|
|
+
|
|
+#include <linux/compiler.h>
|
|
+#include <asm/byteorder.h> /* swab32 */
|
|
+
|
|
+#include <asm-generic/bitops/fls.h>
|
|
+#include <asm-generic/bitops/fls64.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_BITOPS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/board.h
|
|
@@ -0,0 +1,34 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/board.h
|
|
+ * Board init and revision definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_BOARD_H
|
|
+#define _ASM_UBICOM32_BOARD_H
|
|
+
|
|
+extern const char *board_get_revision(void);
|
|
+extern void __init board_init(void);
|
|
+
|
|
+#endif /* _ASM_UBICOM32_BOARD_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/byteorder.h
|
|
@@ -0,0 +1,35 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/byteorder.h
|
|
+ * Byte order swapping utility routines.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_BYTEORDER_H
|
|
+#define _ASM_UBICOM32_BYTEORDER_H
|
|
+
|
|
+#include <linux/types.h>
|
|
+#include <linux/byteorder/big_endian.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_BYTEORDER_H */
|
|
+
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/elf.h
|
|
@@ -0,0 +1,167 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/elf.h
|
|
+ * Definitions for elf executable format for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_ELF_H
|
|
+#define _ASM_UBICOM32_ELF_H
|
|
+
|
|
+/*
|
|
+ * ELF register definitions..
|
|
+ */
|
|
+
|
|
+#include <asm/ptrace.h>
|
|
+#include <asm/user.h>
|
|
+
|
|
+/*
|
|
+ * Processor specific flags for the ELF header e_flags field.
|
|
+ */
|
|
+#define EF_UBICOM32_V3 0x00000001 /* -fmarch=ubicom32v3 */
|
|
+#define EF_UBICOM32_V4 0x00000002 /* -fmarch=ubicom32v4 */
|
|
+#define EF_UBICOM32_PIC 0x80000000 /* -fpic */
|
|
+#define EF_UBICOM32_FDPIC 0x40000000 /* -mfdpic */
|
|
+
|
|
+/*
|
|
+ * Ubicom32 ELF relocation types
|
|
+ */
|
|
+#define R_UBICOM32_NONE 0
|
|
+#define R_UBICOM32_16 1
|
|
+#define R_UBICOM32_32 2
|
|
+#define R_UBICOM32_LO16 3
|
|
+#define R_UBICOM32_HI16 4
|
|
+#define R_UBICOM32_21_PCREL 5
|
|
+#define R_UBICOM32_24_PCREL 6
|
|
+#define R_UBICOM32_HI24 7
|
|
+#define R_UBICOM32_LO7_S 8
|
|
+#define R_UBICOM32_LO7_2_S 9
|
|
+#define R_UBICOM32_LO7_4_S 10
|
|
+#define R_UBICOM32_LO7_D 11
|
|
+#define R_UBICOM32_LO7_2_D 12
|
|
+#define R_UBICOM32_LO7_4_D 13
|
|
+#define R_UBICOM32_32_HARVARD 14
|
|
+#define R_UBICOM32_LO7_CALLI 15
|
|
+#define R_UBICOM32_LO16_CALLI 16
|
|
+#define R_UBICOM32_GOT_HI24 17
|
|
+#define R_UBICOM32_GOT_LO7_S 18
|
|
+#define R_UBICOM32_GOT_LO7_2_S 19
|
|
+#define R_UBICOM32_GOT_LO7_4_S 20
|
|
+#define R_UBICOM32_GOT_LO7_D 21
|
|
+#define R_UBICOM32_GOT_LO7_2_D 22
|
|
+#define R_UBICOM32_GOT_LO7_4_D 23
|
|
+#define R_UBICOM32_FUNCDESC_GOT_HI24 24
|
|
+#define R_UBICOM32_FUNCDESC_GOT_LO7_S 25
|
|
+#define R_UBICOM32_FUNCDESC_GOT_LO7_2_S 26
|
|
+#define R_UBICOM32_FUNCDESC_GOT_LO7_4_S 27
|
|
+#define R_UBICOM32_FUNCDESC_GOT_LO7_D 28
|
|
+#define R_UBICOM32_FUNCDESC_GOT_LO7_2_D 29
|
|
+#define R_UBICOM32_FUNCDESC_GOT_LO7_4_D 30
|
|
+#define R_UBICOM32_GOT_LO7_CALLI 31
|
|
+#define R_UBICOM32_FUNCDESC_GOT_LO7_CALLI 32
|
|
+#define R_UBICOM32_FUNCDESC_VALUE 33
|
|
+#define R_UBICOM32_FUNCDESC 34
|
|
+#define R_UBICOM32_GOTOFFSET_LO 35
|
|
+#define R_UBICOM32_GOTOFFSET_HI 36
|
|
+#define R_UBICOM32_FUNCDESC_GOTOFFSET_LO 37
|
|
+#define R_UBICOM32_FUNCDESC_GOTOFFSET_HI 38
|
|
+#define R_UBICOM32_GNU_VTINHERIT 200
|
|
+#define R_UBICOM32_GNU_VTENTRY 201
|
|
+
|
|
+typedef unsigned long elf_greg_t;
|
|
+
|
|
+#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
|
|
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
|
|
+
|
|
+typedef struct user_ubicom32fp_struct elf_fpregset_t;
|
|
+
|
|
+/*
|
|
+ * This is used to ensure we don't load something for the wrong architecture.
|
|
+ */
|
|
+#define elf_check_arch(x) ((x)->e_machine == EM_UBICOM32)
|
|
+
|
|
+#define elf_check_fdpic(x) ((x)->e_flags & EF_UBICOM32_FDPIC)
|
|
+
|
|
+#define elf_check_const_displacement(x) ((x)->e_flags & EF_UBICOM32_PIC)
|
|
+
|
|
+/*
|
|
+ * These are used to set parameters in the core dumps.
|
|
+ */
|
|
+#define ELF_CLASS ELFCLASS32
|
|
+#define ELF_DATA ELFDATA2MSB
|
|
+#define ELF_ARCH EM_UBICOM32
|
|
+
|
|
+/* For SVR4/m68k the function pointer to be registered with `atexit' is
|
|
+ passed in %a1. Although my copy of the ABI has no such statement, it
|
|
+ is actually used on ASV. */
|
|
+#define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0
|
|
+
|
|
+#define ELF_FDPIC_PLAT_INIT(_regs, _exec_map_addr, _interp_map_addr, \
|
|
+ _dynamic_addr) \
|
|
+ do { \
|
|
+ _regs->dn[1] = _exec_map_addr; \
|
|
+ _regs->dn[2] = _interp_map_addr; \
|
|
+ _regs->dn[3] = _dynamic_addr; \
|
|
+ _regs->an[1] = 0; /* dl_fini will be set by ldso */ \
|
|
+ } while (0)
|
|
+
|
|
+#define USE_ELF_CORE_DUMP
|
|
+#define ELF_EXEC_PAGESIZE 4096
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+#ifdef CONFIG_UBICOM32_V4
|
|
+#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V4)
|
|
+#elif defined CONFIG_UBICOM32_V3
|
|
+#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V3)
|
|
+#else
|
|
+#error Unknown/Unsupported ubicom32 architecture.
|
|
+#endif
|
|
+#endif
|
|
+
|
|
+/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
|
|
+ use of this is to invoke "./ld.so someprog" to test out a new version of
|
|
+ the loader. We need to make sure that it is out of the way of the program
|
|
+ that it will "exec", and that there is sufficient room for the brk. */
|
|
+
|
|
+#define ELF_ET_DYN_BASE 0xD0000000UL
|
|
+
|
|
+/*
|
|
+ * For Ubicom32, the elf_gregset_t and struct pt_regs are the same size
|
|
+ * data structure so a copy is performed instead of providing the
|
|
+ * ELF_CORE_COPY_REGS macro.
|
|
+ */
|
|
+
|
|
+/* This yields a mask that user programs can use to figure out what
|
|
+ instruction set this cpu supports. */
|
|
+
|
|
+#define ELF_HWCAP (0)
|
|
+
|
|
+/* This yields a string that ld.so will use to load implementation
|
|
+ specific libraries for optimization. This is more specific in
|
|
+ intent than poking at uname or /proc/cpuinfo. */
|
|
+
|
|
+#define ELF_PLATFORM (NULL)
|
|
+
|
|
+#define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
|
|
+
|
|
+#endif /* _ASM_UBICOM32_ELF_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/errno.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/errno.h
|
|
+ * Generic errno.h for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_ERRNO_H
|
|
+#define _ASM_UBICOM32_ERRNO_H
|
|
+
|
|
+#include <asm-generic/errno.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_ERRNO_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/fcntl.h
|
|
@@ -0,0 +1,38 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/fcntl.h
|
|
+ * File control bit definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_FCNTL_H
|
|
+#define _ASM_UBICOM32_FCNTL_H
|
|
+
|
|
+#define O_DIRECTORY 040000 /* must be a directory */
|
|
+#define O_NOFOLLOW 0100000 /* don't follow links */
|
|
+#define O_DIRECT 0200000 /* direct disk access hint - currently ignored */
|
|
+#define O_LARGEFILE 0400000
|
|
+
|
|
+#include <asm-generic/fcntl.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_FCNTL_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/flat.h
|
|
@@ -0,0 +1,73 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/flat.h
|
|
+ * Definitions to support flat-format executables.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+
|
|
+#ifndef _ASM_UBICOM32_FLAT_H
|
|
+#define _ASM_UBICOM32_FLAT_H
|
|
+
|
|
+#define ARCH_FLAT_ALIGN 0x80
|
|
+#define ARCH_FLAT_ALIGN_TEXT 1
|
|
+
|
|
+#define R_UBICOM32_32 2
|
|
+#define R_UBICOM32_HI24 7
|
|
+#define R_UBICOM32_LO7_S 8
|
|
+#define R_UBICOM32_LO7_2_S 9
|
|
+#define R_UBICOM32_LO7_4_S 10
|
|
+#define R_UBICOM32_LO7_D 11
|
|
+#define R_UBICOM32_LO7_2_D 12
|
|
+#define R_UBICOM32_LO7_4_D 13
|
|
+#define R_UBICOM32_LO7_CALLI 15
|
|
+#define R_UBICOM32_LO16_CALLI 16
|
|
+
|
|
+extern void ubicom32_flat_put_addr_at_rp(unsigned long *rp, u32_t val, u32_t rval, unsigned long *p);
|
|
+extern unsigned long ubicom32_flat_get_addr_from_rp(unsigned long *rp, u32_t relval, u32_t flags, unsigned long *p);
|
|
+
|
|
+#define flat_stack_align(sp) /* nothing needed */
|
|
+#define flat_argvp_envp_on_stack() 1
|
|
+#define flat_old_ram_flag(flags) (flags)
|
|
+#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
|
|
+#define flat_get_addr_from_rp(rp, relval, flags, p) (ubicom32_flat_get_addr_from_rp(rp, relval,flags, p))
|
|
+#define flat_put_addr_at_rp(rp, val, relval) do {ubicom32_flat_put_addr_at_rp(rp, val, relval, &persistent);} while(0)
|
|
+#define flat_get_relocate_addr(rel) ((persistent) ? (persistent & 0x07ffffff) : (rel & 0x07ffffff))
|
|
+
|
|
+static inline int flat_set_persistent(unsigned int relval, unsigned long *p)
|
|
+{
|
|
+ if (*p) {
|
|
+ return 0;
|
|
+ } else {
|
|
+ if ((relval >> 27) != R_UBICOM32_32) {
|
|
+ /*
|
|
+ * Something other than UBICOM32_32. The next entry has the relocation.
|
|
+ */
|
|
+ *p = relval;
|
|
+ return 1;
|
|
+ }
|
|
+ }
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#endif /* _ASM_UBICOM32_FLAT_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/fpu.h
|
|
@@ -0,0 +1,37 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/fpu.h
|
|
+ * Floating point state definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_FPU_H
|
|
+#define _ASM_UBICOM32_FPU_H
|
|
+
|
|
+/*
|
|
+ * MAX floating point unit state size (FSAVE/FRESTORE)
|
|
+ */
|
|
+/* No FP unit present then... */
|
|
+#define FPSTATESIZE (2) /* dummy size */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_FPU_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/futex.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/futex.h
|
|
+ * Generic futex.h for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_FUTEX_H
|
|
+#define _ASM_UBICOM32_FUTEX_H
|
|
+
|
|
+#include <asm-generic/futex.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_FUTEX_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/ioctl.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/ioctl.h
|
|
+ * Generic ioctl.h for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_IOCTL_H
|
|
+#define _ASM_UBICOM32_IOCTL_H
|
|
+
|
|
+#include <asm-generic/ioctl.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_IOCTL_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/ioctls.h
|
|
@@ -0,0 +1,111 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/ioctls.h
|
|
+ * Definitions of ioctls for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_IOCTLS_H
|
|
+#define _ASM_UBICOM32_IOCTLS_H
|
|
+
|
|
+#include <asm/ioctl.h>
|
|
+
|
|
+/* 0x54 is just a magic number to make these relatively unique ('T') */
|
|
+
|
|
+#define TCGETS 0x5401
|
|
+#define TCSETS 0x5402
|
|
+#define TCSETSW 0x5403
|
|
+#define TCSETSF 0x5404
|
|
+#define TCGETA 0x5405
|
|
+#define TCSETA 0x5406
|
|
+#define TCSETAW 0x5407
|
|
+#define TCSETAF 0x5408
|
|
+#define TCSBRK 0x5409
|
|
+#define TCXONC 0x540A
|
|
+#define TCFLSH 0x540B
|
|
+#define TIOCEXCL 0x540C
|
|
+#define TIOCNXCL 0x540D
|
|
+#define TIOCSCTTY 0x540E
|
|
+#define TIOCGPGRP 0x540F
|
|
+#define TIOCSPGRP 0x5410
|
|
+#define TIOCOUTQ 0x5411
|
|
+#define TIOCSTI 0x5412
|
|
+#define TIOCGWINSZ 0x5413
|
|
+#define TIOCSWINSZ 0x5414
|
|
+#define TIOCMGET 0x5415
|
|
+#define TIOCMBIS 0x5416
|
|
+#define TIOCMBIC 0x5417
|
|
+#define TIOCMSET 0x5418
|
|
+#define TIOCGSOFTCAR 0x5419
|
|
+#define TIOCSSOFTCAR 0x541A
|
|
+#define FIONREAD 0x541B
|
|
+#define TIOCINQ FIONREAD
|
|
+#define TIOCLINUX 0x541C
|
|
+#define TIOCCONS 0x541D
|
|
+#define TIOCGSERIAL 0x541E
|
|
+#define TIOCSSERIAL 0x541F
|
|
+#define TIOCPKT 0x5420
|
|
+#define FIONBIO 0x5421
|
|
+#define TIOCNOTTY 0x5422
|
|
+#define TIOCSETD 0x5423
|
|
+#define TIOCGETD 0x5424
|
|
+#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
|
|
+#define TIOCSBRK 0x5427 /* BSD compatibility */
|
|
+#define TIOCCBRK 0x5428 /* BSD compatibility */
|
|
+#define TIOCGSID 0x5429 /* Return the session ID of FD */
|
|
+#define TCGETS2 _IOR('T',0x2A, struct termios2)
|
|
+#define TCSETS2 _IOW('T',0x2B, struct termios2)
|
|
+#define TCSETSW2 _IOW('T',0x2C, struct termios2)
|
|
+#define TCSETSF2 _IOW('T',0x2D, struct termios2)
|
|
+#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
|
|
+#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
|
+
|
|
+#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
|
|
+#define FIOCLEX 0x5451
|
|
+#define FIOASYNC 0x5452
|
|
+#define TIOCSERCONFIG 0x5453
|
|
+#define TIOCSERGWILD 0x5454
|
|
+#define TIOCSERSWILD 0x5455
|
|
+#define TIOCGLCKTRMIOS 0x5456
|
|
+#define TIOCSLCKTRMIOS 0x5457
|
|
+#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
|
|
+#define TIOCSERGETLSR 0x5459 /* Get line status register */
|
|
+#define TIOCSERGETMULTI 0x545A /* Get multiport config */
|
|
+#define TIOCSERSETMULTI 0x545B /* Set multiport config */
|
|
+
|
|
+#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
|
|
+#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
|
|
+#define FIOQSIZE 0x545E
|
|
+
|
|
+/* Used for packet mode */
|
|
+#define TIOCPKT_DATA 0
|
|
+#define TIOCPKT_FLUSHREAD 1
|
|
+#define TIOCPKT_FLUSHWRITE 2
|
|
+#define TIOCPKT_STOP 4
|
|
+#define TIOCPKT_START 8
|
|
+#define TIOCPKT_NOSTOP 16
|
|
+#define TIOCPKT_DOSTOP 32
|
|
+
|
|
+#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_IOCTLS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/ipcbuf.h
|
|
@@ -0,0 +1,55 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/ipcbuf.h
|
|
+ * Definition of ipc64_perm struct for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_IPCBUF_H
|
|
+#define _ASM_UBICOM32_IPCBUF_H
|
|
+
|
|
+/*
|
|
+ * The user_ipc_perm structure for m68k architecture.
|
|
+ * Note extra padding because this structure is passed back and forth
|
|
+ * between kernel and user space.
|
|
+ *
|
|
+ * Pad space is left for:
|
|
+ * - 32-bit mode_t and seq
|
|
+ * - 2 miscellaneous 32-bit values
|
|
+ */
|
|
+struct ipc64_perm
|
|
+{
|
|
+ __kernel_key_t key;
|
|
+ __kernel_uid32_t uid;
|
|
+ __kernel_gid32_t gid;
|
|
+ __kernel_uid32_t cuid;
|
|
+ __kernel_gid32_t cgid;
|
|
+ __kernel_mode_t mode;
|
|
+ unsigned short __pad1;
|
|
+ unsigned short seq;
|
|
+ unsigned short __pad2;
|
|
+ unsigned long __unused1;
|
|
+ unsigned long __unused2;
|
|
+};
|
|
+
|
|
+#endif /* _ASM_UBICOM32_IPCBUF_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/irqflags.h
|
|
@@ -0,0 +1,94 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/irqflags.h
|
|
+ * Raw implementation of local IRQ functions.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_IRQFLAGS_H
|
|
+#define _ASM_UBICOM32_IRQFLAGS_H
|
|
+
|
|
+#include <linux/thread_info.h>
|
|
+#include <asm/ubicom32-common.h>
|
|
+#include <asm/smp.h>
|
|
+#include <asm/ldsr.h>
|
|
+
|
|
+#if defined(CONFIG_PREEMPT)
|
|
+#error Not supported by Ubicom32 irq handling, yet!
|
|
+#endif
|
|
+
|
|
+/*
|
|
+ * raw_local_irq_enable()
|
|
+ * Enable interrupts for this thread.
|
|
+ */
|
|
+static inline void raw_local_irq_enable(void)
|
|
+{
|
|
+ ldsr_local_irq_enable();
|
|
+}
|
|
+
|
|
+/*
|
|
+ * raw_local_irq_disable()
|
|
+ * Disable interrupts for this thread.
|
|
+ */
|
|
+static inline void raw_local_irq_disable(void)
|
|
+{
|
|
+ ldsr_local_irq_disable();
|
|
+}
|
|
+
|
|
+/*
|
|
+ * raw_local_save_flags()
|
|
+ * Get the current IRQ state.
|
|
+ */
|
|
+#define raw_local_save_flags(flags) \
|
|
+do { \
|
|
+ (flags) = ldsr_local_irq_is_disabled(); \
|
|
+} while (0)
|
|
+
|
|
+/*
|
|
+ * raw_local_irq_save()
|
|
+ * Save the current interrupt state and disable interrupts.
|
|
+ */
|
|
+#define raw_local_irq_save(flags) \
|
|
+do { \
|
|
+ (flags) = ldsr_local_irq_save(); \
|
|
+} while (0)
|
|
+
|
|
+/*
|
|
+ * raw_local_irq_restore()
|
|
+ * Restore the IRQ state back to flags.
|
|
+ */
|
|
+static inline void raw_local_irq_restore(unsigned long flags)
|
|
+{
|
|
+ ldsr_local_irq_restore(flags);
|
|
+}
|
|
+
|
|
+/*
|
|
+ * raw_irqs_disabled_flags()
|
|
+ * Return true if the flags indicate that IRQ(s) are disabled.
|
|
+ */
|
|
+static inline int raw_irqs_disabled_flags(unsigned long flags)
|
|
+{
|
|
+ return (flags);
|
|
+}
|
|
+
|
|
+#endif /* _ASM_UBICOM32_IRQFLAGS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/Kbuild
|
|
@@ -0,0 +1 @@
|
|
+include include/asm-generic/Kbuild.asm
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/kdebug.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/kdebug.h
|
|
+ * Generic kdebug.h for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_KDEBUG_H
|
|
+#define _ASM_UBICOM32_KDEBUG_H
|
|
+
|
|
+#include <asm-generic/kdebug.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_KDEBUG_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/linkage.h
|
|
@@ -0,0 +1,34 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/linkage.h
|
|
+ * Definition of Ubicom32 architecture specific linkage types.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_LINKAGE_H
|
|
+#define _ASM_UBICOM32_LINKAGE_H
|
|
+
|
|
+#define __ocm_text __section(.ocm_text)
|
|
+#define __ocm_data __section(.ocm_data)
|
|
+
|
|
+#endif /* _ASM_UBICOM32_LINKAGE_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/local.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/local.h
|
|
+ * Generic local.h for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_LOCAL_H
|
|
+#define _ASM_UBICOM32_LOCAL_H
|
|
+
|
|
+#include <asm-generic/local.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_LOCAL_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/mman.h
|
|
@@ -0,0 +1,44 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/mman.h
|
|
+ * Memory mapping definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_MMAN_H
|
|
+#define _ASM_UBICOM32_MMAN_H
|
|
+
|
|
+#include <asm-generic/mman.h>
|
|
+
|
|
+#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
|
|
+#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
|
|
+#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
|
|
+#define MAP_LOCKED 0x2000 /* pages are locked */
|
|
+#define MAP_NORESERVE 0x4000 /* don't check for reservations */
|
|
+#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
|
|
+#define MAP_NONBLOCK 0x10000 /* do not block on IO */
|
|
+
|
|
+#define MCL_CURRENT 1 /* lock all current mappings */
|
|
+#define MCL_FUTURE 2 /* lock all future mappings */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_MMAN_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/msgbuf.h
|
|
@@ -0,0 +1,58 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/msgbuf.h
|
|
+ * Definition of msqid64_ds struct for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_MSGBUF_H
|
|
+#define _ASM_UBICOM32_MSGBUF_H
|
|
+
|
|
+/*
|
|
+ * The msqid64_ds structure for ubicom32 architecture.
|
|
+ * Note extra padding because this structure is passed back and forth
|
|
+ * between kernel and user space.
|
|
+ *
|
|
+ * Pad space is left for:
|
|
+ * - 64-bit time_t to solve y2038 problem
|
|
+ * - 2 miscellaneous 32-bit values
|
|
+ */
|
|
+
|
|
+struct msqid64_ds {
|
|
+ struct ipc64_perm msg_perm;
|
|
+ __kernel_time_t msg_stime; /* last msgsnd time */
|
|
+ unsigned long __unused1;
|
|
+ __kernel_time_t msg_rtime; /* last msgrcv time */
|
|
+ unsigned long __unused2;
|
|
+ __kernel_time_t msg_ctime; /* last change time */
|
|
+ unsigned long __unused3;
|
|
+ unsigned long msg_cbytes; /* current number of bytes on queue */
|
|
+ unsigned long msg_qnum; /* number of messages in queue */
|
|
+ unsigned long msg_qbytes; /* max number of bytes on queue */
|
|
+ __kernel_pid_t msg_lspid; /* pid of last msgsnd */
|
|
+ __kernel_pid_t msg_lrpid; /* last receive pid */
|
|
+ unsigned long __unused4;
|
|
+ unsigned long __unused5;
|
|
+};
|
|
+
|
|
+#endif /* _ASM_UBICOM32_MSGBUF_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/namei.h
|
|
@@ -0,0 +1,38 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/namei.h
|
|
+ * Definition of __emul_prefix() for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_NAMEI_H
|
|
+#define _ASM_UBICOM32_NAMEI_H
|
|
+
|
|
+/* This dummy routine maybe changed to something useful
|
|
+ * for /usr/gnemul/ emulation stuff.
|
|
+ * Look at asm-sparc/namei.h for details.
|
|
+ */
|
|
+
|
|
+#define __emul_prefix() NULL
|
|
+
|
|
+#endif /* _ASM_UBICOM32_NAMEI_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/page.h
|
|
@@ -0,0 +1,106 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/page.h
|
|
+ * Memory page related operations and definitions.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_PAGE_H
|
|
+#define _ASM_UBICOM32_PAGE_H
|
|
+
|
|
+/* PAGE_SHIFT determines the page size */
|
|
+
|
|
+#define PAGE_SHIFT 12
|
|
+#define PAGE_SIZE (1 << PAGE_SHIFT)
|
|
+#define PAGE_MASK (~(PAGE_SIZE-1))
|
|
+
|
|
+#include <asm/setup.h>
|
|
+
|
|
+#ifndef __ASSEMBLY__
|
|
+
|
|
+#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
|
|
+#define free_user_page(page, addr) free_page(addr)
|
|
+
|
|
+#define clear_page(page) memset((page), 0, PAGE_SIZE)
|
|
+#define copy_page(to,from) memcpy((to), (from), PAGE_SIZE)
|
|
+
|
|
+#define clear_user_page(page, vaddr, pg) clear_page(page)
|
|
+#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
|
|
+
|
|
+#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
|
|
+ alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
|
|
+#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
|
|
+
|
|
+/*
|
|
+ * These are used to make use of C type-checking..
|
|
+ */
|
|
+typedef struct { unsigned long pte; } pte_t;
|
|
+typedef struct { unsigned long pmd[16]; } pmd_t;
|
|
+typedef struct { unsigned long pgd; } pgd_t;
|
|
+typedef struct { unsigned long pgprot; } pgprot_t;
|
|
+typedef struct page *pgtable_t;
|
|
+
|
|
+#define pte_val(x) ((x).pte)
|
|
+#define pmd_val(x) ((&x)->pmd[0])
|
|
+#define pgd_val(x) ((x).pgd)
|
|
+#define pgprot_val(x) ((x).pgprot)
|
|
+
|
|
+#define __pte(x) ((pte_t) { (x) } )
|
|
+#define __pmd(x) ((pmd_t) { (x) } )
|
|
+#define __pgd(x) ((pgd_t) { (x) } )
|
|
+#define __pgprot(x) ((pgprot_t) { (x) } )
|
|
+
|
|
+extern unsigned long memory_start;
|
|
+extern unsigned long memory_end;
|
|
+
|
|
+#endif /* !__ASSEMBLY__ */
|
|
+
|
|
+#include <asm/page_offset.h>
|
|
+
|
|
+#define PAGE_OFFSET (PAGE_OFFSET_RAW)
|
|
+
|
|
+#ifndef __ASSEMBLY__
|
|
+
|
|
+#define __pa(vaddr) virt_to_phys((void *)(vaddr))
|
|
+#define __va(paddr) phys_to_virt((unsigned long)(paddr))
|
|
+
|
|
+#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
|
|
+#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
|
|
+
|
|
+#define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
|
|
+#define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
|
|
+
|
|
+#define pfn_to_page(pfn) virt_to_page(pfn_to_virt(pfn))
|
|
+#define page_to_pfn(page) virt_to_pfn(page_to_virt(page))
|
|
+#define pfn_valid(pfn) ((pfn) < max_mapnr)
|
|
+
|
|
+#define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
|
|
+ ((void *)(kaddr) < (void *)memory_end))
|
|
+
|
|
+#endif /* __ASSEMBLY__ */
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+#include <asm-generic/page.h>
|
|
+#endif
|
|
+
|
|
+#endif /* _ASM_UBICOM32_PAGE_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/page_offset.h
|
|
@@ -0,0 +1,35 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/page_offset.h
|
|
+ * Definition of PAGE_OFFSET_RAW for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+
|
|
+#ifndef _ASM_UBICOM32_PAGE_OFFSET_H
|
|
+#define _ASM_UBICOM32_PAGE_OFFSET_H
|
|
+
|
|
+/* This handles the memory map.. */
|
|
+#define PAGE_OFFSET_RAW 0x3ffc0000
|
|
+
|
|
+#endif /* _ASM_UBICOM32_PAGE_OFFSET_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/param.h
|
|
@@ -0,0 +1,49 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/param.h
|
|
+ * Definition of miscellaneous constants, including HZ.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_PARAM_H
|
|
+#define _ASM_UBICOM32_PARAM_H
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+#define HZ CONFIG_HZ
|
|
+#define USER_HZ HZ
|
|
+#define CLOCKS_PER_SEC (USER_HZ)
|
|
+#endif
|
|
+
|
|
+#ifndef HZ
|
|
+#define HZ 100
|
|
+#endif
|
|
+
|
|
+#define EXEC_PAGESIZE 4096
|
|
+
|
|
+#ifndef NOGROUP
|
|
+#define NOGROUP (-1)
|
|
+#endif
|
|
+
|
|
+#define MAXHOSTNAMELEN 64 /* max length of hostname */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_PARAM_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/poll.h
|
|
@@ -0,0 +1,36 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/poll.h
|
|
+ * Ubicom32 specific poll() related flags definitions.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_POLL_H
|
|
+#define _ASM_UBICOM32_POLL_H
|
|
+
|
|
+#define POLLWRNORM POLLOUT
|
|
+#define POLLWRBAND 0x0100
|
|
+
|
|
+#include <asm-generic/poll.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_POLL_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/posix_types.h
|
|
@@ -0,0 +1,93 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/posix_types.h
|
|
+ * Ubicom32 architecture posix types.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ * Copyright (C) 2004 Microtronix Datacom Ltd
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef __ARCH_UBICOM32_POSIX_TYPES_H
|
|
+#define __ARCH_UBICOM32_POSIX_TYPES_H
|
|
+
|
|
+/*
|
|
+ * This file is generally used by user-level software, so you need to
|
|
+ * be a little careful about namespace pollution etc. Also, we cannot
|
|
+ * assume GCC is being used.
|
|
+ */
|
|
+
|
|
+typedef unsigned long __kernel_ino_t;
|
|
+typedef unsigned short __kernel_mode_t;
|
|
+typedef unsigned short __kernel_nlink_t;
|
|
+typedef long __kernel_off_t;
|
|
+typedef int __kernel_pid_t;
|
|
+typedef unsigned short __kernel_ipc_pid_t;
|
|
+typedef unsigned short __kernel_uid_t;
|
|
+typedef unsigned short __kernel_gid_t;
|
|
+typedef unsigned int __kernel_size_t;
|
|
+typedef int __kernel_ssize_t;
|
|
+typedef int __kernel_ptrdiff_t;
|
|
+typedef long __kernel_time_t;
|
|
+typedef long __kernel_suseconds_t;
|
|
+typedef long __kernel_clock_t;
|
|
+typedef int __kernel_timer_t;
|
|
+typedef int __kernel_clockid_t;
|
|
+typedef int __kernel_daddr_t;
|
|
+typedef char * __kernel_caddr_t;
|
|
+typedef unsigned short __kernel_uid16_t;
|
|
+typedef unsigned short __kernel_gid16_t;
|
|
+typedef unsigned int __kernel_uid32_t;
|
|
+typedef unsigned int __kernel_gid32_t;
|
|
+
|
|
+typedef unsigned short __kernel_old_uid_t;
|
|
+typedef unsigned short __kernel_old_gid_t;
|
|
+typedef unsigned short __kernel_old_dev_t;
|
|
+
|
|
+#ifdef __GNUC__
|
|
+typedef long long __kernel_loff_t;
|
|
+#endif
|
|
+
|
|
+typedef struct {
|
|
+#if defined(__KERNEL__) || defined(__USE_ALL)
|
|
+ int val[2];
|
|
+#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
|
|
+ int __val[2];
|
|
+#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
|
|
+} __kernel_fsid_t;
|
|
+
|
|
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
|
|
+
|
|
+#undef __FD_SET
|
|
+#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
|
|
+
|
|
+#undef __FD_CLR
|
|
+#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
|
|
+
|
|
+#undef __FD_ISSET
|
|
+#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
|
|
+
|
|
+#undef __FD_ZERO
|
|
+#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
|
|
+
|
|
+#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
|
|
+
|
|
+#endif
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/ptrace.h
|
|
@@ -0,0 +1,177 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/ptrace.h
|
|
+ * Ubicom32 architecture ptrace support.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_PTRACE_H
|
|
+#define _ASM_UBICOM32_PTRACE_H
|
|
+
|
|
+#ifndef __ASSEMBLY__
|
|
+
|
|
+/*
|
|
+ * We use hard coded constants because this is shared with user
|
|
+ * space and the values are NOT allowed to change. Only fields
|
|
+ * that are intended to be exposed get values.
|
|
+ */
|
|
+#define PT_D0 0
|
|
+#define PT_D1 4
|
|
+#define PT_D2 8
|
|
+#define PT_D3 12
|
|
+#define PT_D4 16
|
|
+#define PT_D5 20
|
|
+#define PT_D6 24
|
|
+#define PT_D7 28
|
|
+#define PT_D8 32
|
|
+#define PT_D9 36
|
|
+#define PT_D10 40
|
|
+#define PT_D11 44
|
|
+#define PT_D12 48
|
|
+#define PT_D13 52
|
|
+#define PT_D14 56
|
|
+#define PT_D15 60
|
|
+#define PT_A0 64
|
|
+#define PT_A1 68
|
|
+#define PT_A2 72
|
|
+#define PT_A3 76
|
|
+#define PT_A4 80
|
|
+#define PT_A5 84
|
|
+#define PT_A6 88
|
|
+#define PT_A7 92
|
|
+#define PT_SP 92
|
|
+#define PT_ACC0HI 96
|
|
+#define PT_ACC0LO 100
|
|
+#define PT_MAC_RC16 104
|
|
+#define PT_ACC1HI 108
|
|
+#define PT_ACC1LO 112
|
|
+#define PT_SOURCE3 116
|
|
+#define PT_INST_CNT 120
|
|
+#define PT_CSR 124
|
|
+#define PT_DUMMY_UNUSED 128
|
|
+#define PT_INT_MASK0 132
|
|
+#define PT_INT_MASK1 136
|
|
+#define PT_TRAP_CAUSE 140
|
|
+#define PT_PC 144
|
|
+#define PT_ORIGINAL_D0 148
|
|
+#define PT_FRAME_TYPE 152
|
|
+
|
|
+/*
|
|
+ * The following 'registers' are not registers at all but are used
|
|
+ * locate the relocated sections.
|
|
+ */
|
|
+#define PT_TEXT_ADDR 200
|
|
+#define PT_TEXT_END_ADDR 204
|
|
+#define PT_DATA_ADDR 208
|
|
+#define PT_EXEC_FDPIC_LOADMAP 212
|
|
+#define PT_INTERP_FDPIC_LOADMAP 216
|
|
+
|
|
+/*
|
|
+ * This struct defines the way the registers are stored on the
|
|
+ * stack during a system call.
|
|
+ */
|
|
+enum thread_type {
|
|
+ NORMAL_THREAD,
|
|
+ KERNEL_THREAD,
|
|
+};
|
|
+
|
|
+#define UBICOM32_FRAME_TYPE_SYSCALL -1 /* System call frame */
|
|
+#define UBICOM32_FRAME_TYPE_INVALID 0 /* Invalid frame, no longer in use */
|
|
+#define UBICOM32_FRAME_TYPE_INTERRUPT 1 /* Interrupt frame */
|
|
+#define UBICOM32_FRAME_TYPE_TRAP 2 /* Trap frame */
|
|
+#define UBICOM32_FRAME_TYPE_SIGTRAMP 3 /* Signal trampoline frame. */
|
|
+#define UBICOM32_FRAME_TYPE_NEW_THREAD 4 /* New Thread. */
|
|
+
|
|
+struct pt_regs {
|
|
+ /*
|
|
+ * Data Registers
|
|
+ */
|
|
+ unsigned long dn[16];
|
|
+
|
|
+ /*
|
|
+ * Address Registers
|
|
+ */
|
|
+ unsigned long an[8];
|
|
+
|
|
+ /*
|
|
+ * Per thread misc registers.
|
|
+ */
|
|
+ unsigned long acc0[2];
|
|
+ unsigned long mac_rc16;
|
|
+ unsigned long acc1[2];
|
|
+ unsigned long source3;
|
|
+ unsigned long inst_cnt;
|
|
+ unsigned long csr;
|
|
+ unsigned long dummy_unused;
|
|
+ unsigned long int_mask0;
|
|
+ unsigned long int_mask1;
|
|
+ unsigned long trap_cause;
|
|
+ unsigned long pc;
|
|
+ unsigned long original_dn_0;
|
|
+
|
|
+ /*
|
|
+ * Frame type. Syscall frames are -1. For other types look above.
|
|
+ */
|
|
+ unsigned long frame_type;
|
|
+
|
|
+ /*
|
|
+ * These fields are not exposed to ptrace.
|
|
+ */
|
|
+ unsigned long previous_pc;
|
|
+ long nesting_level; /* When the kernel in in user space this
|
|
+ * will be -1. */
|
|
+ unsigned long thread_type; /* This indicates if this is a kernel
|
|
+ * thread. */
|
|
+};
|
|
+
|
|
+/*
|
|
+ * This is the extended stack used by signal handlers and the context
|
|
+ * switcher: it's pushed after the normal "struct pt_regs".
|
|
+ */
|
|
+struct switch_stack {
|
|
+ unsigned long dummy;
|
|
+};
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+
|
|
+/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
|
|
+#define PTRACE_GETREGS 12
|
|
+#define PTRACE_SETREGS 13
|
|
+
|
|
+#ifndef PS_S
|
|
+#define PS_S (0x2000)
|
|
+#define PS_M (0x1000)
|
|
+#endif
|
|
+
|
|
+extern int __user_mode(unsigned long sp);
|
|
+
|
|
+#define user_mode(regs) (__user_mode((regs->an[7])))
|
|
+#define user_stack(regs) ((regs)->an[7])
|
|
+#define instruction_pointer(regs) ((regs)->pc)
|
|
+#define profile_pc(regs) instruction_pointer(regs)
|
|
+extern void show_regs(struct pt_regs *);
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+#endif /* __ASSEMBLY__ */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_PTRACE_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/resource.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/resource.h
|
|
+ * Generic definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_RESOURCE_H
|
|
+#define _ASM_UBICOM32_RESOURCE_H
|
|
+
|
|
+#include <asm-generic/resource.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_RESOURCE_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/sections.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/sections.h
|
|
+ * Generic sections.h definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SECTIONS_H
|
|
+#define _ASM_UBICOM32_SECTIONS_H
|
|
+
|
|
+#include <asm-generic/sections.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SECTIONS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/segment.h
|
|
@@ -0,0 +1,78 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/segment.h
|
|
+ * Memory segment definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SEGMENT_H
|
|
+#define _ASM_UBICOM32_SEGMENT_H
|
|
+
|
|
+/* define constants */
|
|
+/* Address spaces (FC0-FC2) */
|
|
+#define USER_DATA (1)
|
|
+#ifndef __USER_DS
|
|
+#define __USER_DS (USER_DATA)
|
|
+#endif
|
|
+#define USER_PROGRAM (2)
|
|
+#define SUPER_DATA (5)
|
|
+#ifndef __KERNEL_DS
|
|
+#define __KERNEL_DS (SUPER_DATA)
|
|
+#endif
|
|
+#define SUPER_PROGRAM (6)
|
|
+#define CPU_SPACE (7)
|
|
+
|
|
+#ifndef __ASSEMBLY__
|
|
+
|
|
+typedef struct {
|
|
+ unsigned long seg;
|
|
+} mm_segment_t;
|
|
+
|
|
+#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
|
|
+#define USER_DS MAKE_MM_SEG(__USER_DS)
|
|
+#define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS)
|
|
+
|
|
+/*
|
|
+ * Get/set the SFC/DFC registers for MOVES instructions
|
|
+ */
|
|
+
|
|
+static inline mm_segment_t get_fs(void)
|
|
+{
|
|
+ return USER_DS;
|
|
+}
|
|
+
|
|
+static inline mm_segment_t get_ds(void)
|
|
+{
|
|
+ /* return the supervisor data space code */
|
|
+ return KERNEL_DS;
|
|
+}
|
|
+
|
|
+static inline void set_fs(mm_segment_t val)
|
|
+{
|
|
+}
|
|
+
|
|
+#define segment_eq(a,b) ((a).seg == (b).seg)
|
|
+
|
|
+#endif /* __ASSEMBLY__ */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SEGMENT_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/sembuf.h
|
|
@@ -0,0 +1,52 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/sembuf.h
|
|
+ * The semid64_ds structure for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SEMBUF_H
|
|
+#define _ASM_UBICOM32_SEMBUF_H
|
|
+
|
|
+/*
|
|
+ * The semid64_ds structure for ubicom32 architecture.
|
|
+ * Note extra padding because this structure is passed back and forth
|
|
+ * between kernel and user space.
|
|
+ *
|
|
+ * Pad space is left for:
|
|
+ * - 64-bit time_t to solve y2038 problem
|
|
+ * - 2 miscellaneous 32-bit values
|
|
+ */
|
|
+
|
|
+struct semid64_ds {
|
|
+ struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
|
|
+ __kernel_time_t sem_otime; /* last semop time */
|
|
+ unsigned long __unused1;
|
|
+ __kernel_time_t sem_ctime; /* last change time */
|
|
+ unsigned long __unused2;
|
|
+ unsigned long sem_nsems; /* no. of semaphores in array */
|
|
+ unsigned long __unused3;
|
|
+ unsigned long __unused4;
|
|
+};
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SEMBUF_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/setup.h
|
|
@@ -0,0 +1,35 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/setup.h
|
|
+ * Kernel command line length definition.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ * Copyright (C) 2004, Microtronix Datacom Ltd., All rights reserved.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+
|
|
+#ifndef _ASM_UBICOM32_SETUP_H
|
|
+#define _ASM_UBICOM32_SETUP_H
|
|
+
|
|
+#define COMMAND_LINE_SIZE 512
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SETUP_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/shmbuf.h
|
|
@@ -0,0 +1,69 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/shmbuf.h
|
|
+ * The shmid64_ds structure for the Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SHMBUF_H
|
|
+#define _ASM_UBICOM32_SHMBUF_H
|
|
+
|
|
+/*
|
|
+ * The shmid64_ds structure for m68k architecture.
|
|
+ * Note extra padding because this structure is passed back and forth
|
|
+ * between kernel and user space.
|
|
+ *
|
|
+ * Pad space is left for:
|
|
+ * - 64-bit time_t to solve y2038 problem
|
|
+ * - 2 miscellaneous 32-bit values
|
|
+ */
|
|
+
|
|
+struct shmid64_ds {
|
|
+ struct ipc64_perm shm_perm; /* operation perms */
|
|
+ size_t shm_segsz; /* size of segment (bytes) */
|
|
+ __kernel_time_t shm_atime; /* last attach time */
|
|
+ unsigned long __unused1;
|
|
+ __kernel_time_t shm_dtime; /* last detach time */
|
|
+ unsigned long __unused2;
|
|
+ __kernel_time_t shm_ctime; /* last change time */
|
|
+ unsigned long __unused3;
|
|
+ __kernel_pid_t shm_cpid; /* pid of creator */
|
|
+ __kernel_pid_t shm_lpid; /* pid of last operator */
|
|
+ unsigned long shm_nattch; /* no. of current attaches */
|
|
+ unsigned long __unused4;
|
|
+ unsigned long __unused5;
|
|
+};
|
|
+
|
|
+struct shminfo64 {
|
|
+ unsigned long shmmax;
|
|
+ unsigned long shmmin;
|
|
+ unsigned long shmmni;
|
|
+ unsigned long shmseg;
|
|
+ unsigned long shmall;
|
|
+ unsigned long __unused1;
|
|
+ unsigned long __unused2;
|
|
+ unsigned long __unused3;
|
|
+ unsigned long __unused4;
|
|
+};
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SHMBUF_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/shmparam.h
|
|
@@ -0,0 +1,35 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/shmparam.h
|
|
+ * Shared memory definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ * Copyright (C) 2004 Microtronix Datacom Ltd
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ * Alpha, ix86, M68K, Sparc, ...et al
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SHMPARAM_H
|
|
+#define _ASM_UBICOM32_SHMPARAM_H
|
|
+
|
|
+#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SHMPARAM_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/sigcontext.h
|
|
@@ -0,0 +1,37 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/sigcontext.h
|
|
+ * Definition of sigcontext struct for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SIGCONTEXT_H
|
|
+#define _ASM_UBICOM32_SIGCONTEXT_H
|
|
+
|
|
+#include <asm/ptrace.h>
|
|
+
|
|
+struct sigcontext {
|
|
+ struct pt_regs sc_regs;
|
|
+};
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SIGCONTEXT_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/siginfo.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/siginfo.h
|
|
+ * Generic siginfo.h definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SIGINFO_H
|
|
+#define _ASM_UBICOM32_SIGINFO_H
|
|
+
|
|
+#include <asm-generic/siginfo.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SIGINFO_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/signal.h
|
|
@@ -0,0 +1,180 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/signal.h
|
|
+ * Signal related definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SIGNAL_H
|
|
+#define _ASM_UBICOM32_SIGNAL_H
|
|
+
|
|
+#include <linux/types.h>
|
|
+
|
|
+/* Avoid too many header ordering problems. */
|
|
+struct siginfo;
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+/* Most things should be clean enough to redefine this at will, if care
|
|
+ is taken to make libc match. */
|
|
+
|
|
+#define _NSIG 64
|
|
+#define _NSIG_BPW 32
|
|
+#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
|
|
+
|
|
+typedef unsigned long old_sigset_t; /* at least 32 bits */
|
|
+
|
|
+typedef struct {
|
|
+ unsigned long sig[_NSIG_WORDS];
|
|
+} sigset_t;
|
|
+
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+#define SIGHUP 1
|
|
+#define SIGINT 2
|
|
+#define SIGQUIT 3
|
|
+#define SIGILL 4
|
|
+#define SIGTRAP 5
|
|
+#define SIGABRT 6
|
|
+#define SIGIOT 6
|
|
+#define SIGBUS 7
|
|
+#define SIGFPE 8
|
|
+#define SIGKILL 9
|
|
+#define SIGUSR1 10
|
|
+#define SIGSEGV 11
|
|
+#define SIGUSR2 12
|
|
+#define SIGPIPE 13
|
|
+#define SIGALRM 14
|
|
+#define SIGTERM 15
|
|
+#define SIGSTKFLT 16
|
|
+#define SIGCHLD 17
|
|
+#define SIGCONT 18
|
|
+#define SIGSTOP 19
|
|
+#define SIGTSTP 20
|
|
+#define SIGTTIN 21
|
|
+#define SIGTTOU 22
|
|
+#define SIGURG 23
|
|
+#define SIGXCPU 24
|
|
+#define SIGXFSZ 25
|
|
+#define SIGVTALRM 26
|
|
+#define SIGPROF 27
|
|
+#define SIGWINCH 28
|
|
+#define SIGIO 29
|
|
+#define SIGPOLL SIGIO
|
|
+/*
|
|
+#define SIGLOST 29
|
|
+*/
|
|
+#define SIGPWR 30
|
|
+#define SIGSYS 31
|
|
+#define SIGUNUSED 31
|
|
+
|
|
+/* These should not be considered constants from userland. */
|
|
+#define SIGRTMIN 32
|
|
+#define SIGRTMAX _NSIG
|
|
+
|
|
+/*
|
|
+ * SA_FLAGS values:
|
|
+ *
|
|
+ * SA_ONSTACK indicates that a registered stack_t will be used.
|
|
+ * SA_RESTART flag to get restarting signals (which were the default long ago)
|
|
+ * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
|
|
+ * SA_RESETHAND clears the handler when the signal is delivered.
|
|
+ * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
|
|
+ * SA_NODEFER prevents the current signal from being masked in the handler.
|
|
+ *
|
|
+ * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
|
|
+ * Unix names RESETHAND and NODEFER respectively.
|
|
+ */
|
|
+#define SA_NOCLDSTOP 0x00000001
|
|
+#define SA_NOCLDWAIT 0x00000002
|
|
+#define SA_SIGINFO 0x00000004
|
|
+#define SA_ONSTACK 0x08000000
|
|
+#define SA_RESTART 0x10000000
|
|
+#define SA_NODEFER 0x40000000
|
|
+#define SA_RESETHAND 0x80000000
|
|
+
|
|
+#define SA_NOMASK SA_NODEFER
|
|
+#define SA_ONESHOT SA_RESETHAND
|
|
+
|
|
+/*
|
|
+ * sigaltstack controls
|
|
+ */
|
|
+#define SS_ONSTACK 1
|
|
+#define SS_DISABLE 2
|
|
+
|
|
+#define MINSIGSTKSZ 2048
|
|
+#define SIGSTKSZ 8192
|
|
+
|
|
+#include <asm-generic/signal.h>
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+struct old_sigaction {
|
|
+ __sighandler_t sa_handler;
|
|
+ old_sigset_t sa_mask;
|
|
+ unsigned long sa_flags;
|
|
+ void (*sa_restorer)(void);
|
|
+};
|
|
+
|
|
+struct sigaction {
|
|
+ __sighandler_t sa_handler;
|
|
+ unsigned long sa_flags;
|
|
+ void (*sa_restorer)(void);
|
|
+ sigset_t sa_mask; /* mask last for extensibility */
|
|
+};
|
|
+
|
|
+struct k_sigaction {
|
|
+ struct sigaction sa;
|
|
+};
|
|
+#else
|
|
+/* Here we must cater to libcs that poke about in kernel headers. */
|
|
+
|
|
+struct sigaction {
|
|
+ union {
|
|
+ __sighandler_t _sa_handler;
|
|
+ void (*_sa_sigaction)(int, struct siginfo *, void *);
|
|
+ } _u;
|
|
+ sigset_t sa_mask;
|
|
+ unsigned long sa_flags;
|
|
+ void (*sa_restorer)(void);
|
|
+};
|
|
+
|
|
+#define sa_handler _u._sa_handler
|
|
+#define sa_sigaction _u._sa_sigaction
|
|
+
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+typedef struct sigaltstack {
|
|
+ void *ss_sp;
|
|
+ int ss_flags;
|
|
+ size_t ss_size;
|
|
+} stack_t;
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+
|
|
+#include <asm/sigcontext.h>
|
|
+#undef __HAVE_ARCH_SIG_BITOPS
|
|
+
|
|
+#define ptrace_signal_deliver(regs, cookie) do { } while (0)
|
|
+
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SIGNAL_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/socket.h
|
|
@@ -0,0 +1,84 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/socket.h
|
|
+ * Socket options definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SOCKET_H
|
|
+#define _ASM_UBICOM32_SOCKET_H
|
|
+
|
|
+#include <asm/sockios.h>
|
|
+
|
|
+/* For setsockopt(2) */
|
|
+#define SOL_SOCKET 1
|
|
+
|
|
+#define SO_DEBUG 1
|
|
+#define SO_REUSEADDR 2
|
|
+#define SO_TYPE 3
|
|
+#define SO_ERROR 4
|
|
+#define SO_DONTROUTE 5
|
|
+#define SO_BROADCAST 6
|
|
+#define SO_SNDBUF 7
|
|
+#define SO_RCVBUF 8
|
|
+#define SO_SNDBUFFORCE 32
|
|
+#define SO_RCVBUFFORCE 33
|
|
+#define SO_KEEPALIVE 9
|
|
+#define SO_OOBINLINE 10
|
|
+#define SO_NO_CHECK 11
|
|
+#define SO_PRIORITY 12
|
|
+#define SO_LINGER 13
|
|
+#define SO_BSDCOMPAT 14
|
|
+/* To add :#define SO_REUSEPORT 15 */
|
|
+#define SO_PASSCRED 16
|
|
+#define SO_PEERCRED 17
|
|
+#define SO_RCVLOWAT 18
|
|
+#define SO_SNDLOWAT 19
|
|
+#define SO_RCVTIMEO 20
|
|
+#define SO_SNDTIMEO 21
|
|
+
|
|
+/* Security levels - as per NRL IPv6 - don't actually do anything */
|
|
+#define SO_SECURITY_AUTHENTICATION 22
|
|
+#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
|
|
+#define SO_SECURITY_ENCRYPTION_NETWORK 24
|
|
+
|
|
+#define SO_BINDTODEVICE 25
|
|
+
|
|
+/* Socket filtering */
|
|
+#define SO_ATTACH_FILTER 26
|
|
+#define SO_DETACH_FILTER 27
|
|
+
|
|
+#define SO_PEERNAME 28
|
|
+#define SO_TIMESTAMP 29
|
|
+#define SCM_TIMESTAMP SO_TIMESTAMP
|
|
+
|
|
+#define SO_ACCEPTCONN 30
|
|
+
|
|
+#define SO_PEERSEC 31
|
|
+#define SO_PASSSEC 34
|
|
+#define SO_TIMESTAMPNS 35
|
|
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
|
|
+
|
|
+#define SO_MARK 36
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SOCKET_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/sockios.h
|
|
@@ -0,0 +1,40 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/sockios.h
|
|
+ * Socket-level ioctl definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SOCKIOS_H
|
|
+#define _ASM_UBICOM32_SOCKIOS_H
|
|
+
|
|
+/* Socket-level I/O control calls. */
|
|
+#define FIOSETOWN 0x8901
|
|
+#define SIOCSPGRP 0x8902
|
|
+#define FIOGETOWN 0x8903
|
|
+#define SIOCGPGRP 0x8904
|
|
+#define SIOCATMARK 0x8905
|
|
+#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
|
|
+#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SOCKIOS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/statfs.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/statfs.h
|
|
+ * Generic statfs.h definitions
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_STATFS_H
|
|
+#define _ASM_UBICOM32_STATFS_H
|
|
+
|
|
+#include <asm-generic/statfs.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_STATFS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/stat.h
|
|
@@ -0,0 +1,104 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/stat.h
|
|
+ * File status definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_STAT_H
|
|
+#define _ASM_UBICOM32_STAT_H
|
|
+
|
|
+struct __old_kernel_stat {
|
|
+ unsigned short st_dev;
|
|
+ unsigned short st_ino;
|
|
+ unsigned short st_mode;
|
|
+ unsigned short st_nlink;
|
|
+ unsigned short st_uid;
|
|
+ unsigned short st_gid;
|
|
+ unsigned short st_rdev;
|
|
+ unsigned long st_size;
|
|
+ unsigned long st_atime;
|
|
+ unsigned long st_mtime;
|
|
+ unsigned long st_ctime;
|
|
+};
|
|
+
|
|
+struct stat {
|
|
+ unsigned short st_dev;
|
|
+ unsigned short __pad1;
|
|
+ unsigned long st_ino;
|
|
+ unsigned short st_mode;
|
|
+ unsigned short st_nlink;
|
|
+ unsigned short st_uid;
|
|
+ unsigned short st_gid;
|
|
+ unsigned short st_rdev;
|
|
+ unsigned short __pad2;
|
|
+ unsigned long st_size;
|
|
+ unsigned long st_blksize;
|
|
+ unsigned long st_blocks;
|
|
+ unsigned long st_atime;
|
|
+ unsigned long __unused1;
|
|
+ unsigned long st_mtime;
|
|
+ unsigned long __unused2;
|
|
+ unsigned long st_ctime;
|
|
+ unsigned long __unused3;
|
|
+ unsigned long __unused4;
|
|
+ unsigned long __unused5;
|
|
+};
|
|
+
|
|
+/* This matches struct stat64 in glibc2.1, hence the absolutely
|
|
+ * insane amounts of padding around dev_t's.
|
|
+ */
|
|
+struct stat64 {
|
|
+ unsigned long long st_dev;
|
|
+ unsigned char __pad1[2];
|
|
+
|
|
+#define STAT64_HAS_BROKEN_ST_INO 1
|
|
+ unsigned long __st_ino;
|
|
+
|
|
+ unsigned int st_mode;
|
|
+ unsigned int st_nlink;
|
|
+
|
|
+ unsigned long st_uid;
|
|
+ unsigned long st_gid;
|
|
+
|
|
+ unsigned long long st_rdev;
|
|
+ unsigned char __pad3[2];
|
|
+
|
|
+ long long st_size;
|
|
+ unsigned long st_blksize;
|
|
+
|
|
+ unsigned long long st_blocks; /* Number 512-byte blocks allocated. */
|
|
+
|
|
+ unsigned long st_atime;
|
|
+ unsigned long st_atime_nsec;
|
|
+
|
|
+ unsigned long st_mtime;
|
|
+ unsigned long st_mtime_nsec;
|
|
+
|
|
+ unsigned long st_ctime;
|
|
+ unsigned long st_ctime_nsec;
|
|
+
|
|
+ unsigned long long st_ino;
|
|
+};
|
|
+
|
|
+#endif /* _ASM_UBICOM32_STAT_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/swab.h
|
|
@@ -0,0 +1,46 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/swab.h
|
|
+ * Byte order swapping utility routines.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_SWAB_H
|
|
+#define _ASM_UBICOM32_SWAB_H
|
|
+
|
|
+#include <linux/types.h>
|
|
+
|
|
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
|
|
+# define __BYTEORDER_HAS_U64__
|
|
+# define __SWAB_64_THRU_32__
|
|
+#endif
|
|
+
|
|
+#if defined(IP7000) || defined(IP7000_REV2)
|
|
+
|
|
+#define __arch__swab16 __builtin_ubicom32_swapb_2
|
|
+#define __arch__swab32 __builtin_ubicom32_swapb_4
|
|
+
|
|
+#endif /* IP7000 */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_SWAB_H */
|
|
+
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/termbits.h
|
|
@@ -0,0 +1,227 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/termbits.h
|
|
+ * Terminal/serial port definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_TERMBITS_H
|
|
+#define _ASM_UBICOM32_TERMBITS_H
|
|
+
|
|
+#include <linux/posix_types.h>
|
|
+
|
|
+typedef unsigned char cc_t;
|
|
+typedef unsigned int speed_t;
|
|
+typedef unsigned int tcflag_t;
|
|
+
|
|
+#define NCCS 19
|
|
+struct termios {
|
|
+ tcflag_t c_iflag; /* input mode flags */
|
|
+ tcflag_t c_oflag; /* output mode flags */
|
|
+ tcflag_t c_cflag; /* control mode flags */
|
|
+ tcflag_t c_lflag; /* local mode flags */
|
|
+ cc_t c_line; /* line discipline */
|
|
+ cc_t c_cc[NCCS]; /* control characters */
|
|
+};
|
|
+
|
|
+struct termios2 {
|
|
+ tcflag_t c_iflag; /* input mode flags */
|
|
+ tcflag_t c_oflag; /* output mode flags */
|
|
+ tcflag_t c_cflag; /* control mode flags */
|
|
+ tcflag_t c_lflag; /* local mode flags */
|
|
+ cc_t c_line; /* line discipline */
|
|
+ cc_t c_cc[NCCS]; /* control characters */
|
|
+ speed_t c_ispeed; /* input speed */
|
|
+ speed_t c_ospeed; /* output speed */
|
|
+};
|
|
+
|
|
+struct ktermios {
|
|
+ tcflag_t c_iflag; /* input mode flags */
|
|
+ tcflag_t c_oflag; /* output mode flags */
|
|
+ tcflag_t c_cflag; /* control mode flags */
|
|
+ tcflag_t c_lflag; /* local mode flags */
|
|
+ cc_t c_line; /* line discipline */
|
|
+ cc_t c_cc[NCCS]; /* control characters */
|
|
+ speed_t c_ispeed; /* input speed */
|
|
+ speed_t c_ospeed; /* output speed */
|
|
+};
|
|
+
|
|
+/* c_cc characters */
|
|
+#define VINTR 0
|
|
+#define VQUIT 1
|
|
+#define VERASE 2
|
|
+#define VKILL 3
|
|
+#define VEOF 4
|
|
+#define VTIME 5
|
|
+#define VMIN 6
|
|
+#define VSWTC 7
|
|
+#define VSTART 8
|
|
+#define VSTOP 9
|
|
+#define VSUSP 10
|
|
+#define VEOL 11
|
|
+#define VREPRINT 12
|
|
+#define VDISCARD 13
|
|
+#define VWERASE 14
|
|
+#define VLNEXT 15
|
|
+#define VEOL2 16
|
|
+
|
|
+
|
|
+/* c_iflag bits */
|
|
+#define IGNBRK 0000001
|
|
+#define BRKINT 0000002
|
|
+#define IGNPAR 0000004
|
|
+#define PARMRK 0000010
|
|
+#define INPCK 0000020
|
|
+#define ISTRIP 0000040
|
|
+#define INLCR 0000100
|
|
+#define IGNCR 0000200
|
|
+#define ICRNL 0000400
|
|
+#define IUCLC 0001000
|
|
+#define IXON 0002000
|
|
+#define IXANY 0004000
|
|
+#define IXOFF 0010000
|
|
+#define IMAXBEL 0020000
|
|
+#define IUTF8 0040000
|
|
+
|
|
+/* c_oflag bits */
|
|
+#define OPOST 0000001
|
|
+#define OLCUC 0000002
|
|
+#define ONLCR 0000004
|
|
+#define OCRNL 0000010
|
|
+#define ONOCR 0000020
|
|
+#define ONLRET 0000040
|
|
+#define OFILL 0000100
|
|
+#define OFDEL 0000200
|
|
+#define NLDLY 0000400
|
|
+#define NL0 0000000
|
|
+#define NL1 0000400
|
|
+#define CRDLY 0003000
|
|
+#define CR0 0000000
|
|
+#define CR1 0001000
|
|
+#define CR2 0002000
|
|
+#define CR3 0003000
|
|
+#define TABDLY 0014000
|
|
+#define TAB0 0000000
|
|
+#define TAB1 0004000
|
|
+#define TAB2 0010000
|
|
+#define TAB3 0014000
|
|
+#define XTABS 0014000
|
|
+#define BSDLY 0020000
|
|
+#define BS0 0000000
|
|
+#define BS1 0020000
|
|
+#define VTDLY 0040000
|
|
+#define VT0 0000000
|
|
+#define VT1 0040000
|
|
+#define FFDLY 0100000
|
|
+#define FF0 0000000
|
|
+#define FF1 0100000
|
|
+
|
|
+/* c_cflag bit meaning */
|
|
+#define CBAUD 0010017
|
|
+#define B0 0000000 /* hang up */
|
|
+#define B50 0000001
|
|
+#define B75 0000002
|
|
+#define B110 0000003
|
|
+#define B134 0000004
|
|
+#define B150 0000005
|
|
+#define B200 0000006
|
|
+#define B300 0000007
|
|
+#define B600 0000010
|
|
+#define B1200 0000011
|
|
+#define B1800 0000012
|
|
+#define B2400 0000013
|
|
+#define B4800 0000014
|
|
+#define B9600 0000015
|
|
+#define B19200 0000016
|
|
+#define B38400 0000017
|
|
+#define EXTA B19200
|
|
+#define EXTB B38400
|
|
+#define CSIZE 0000060
|
|
+#define CS5 0000000
|
|
+#define CS6 0000020
|
|
+#define CS7 0000040
|
|
+#define CS8 0000060
|
|
+#define CSTOPB 0000100
|
|
+#define CREAD 0000200
|
|
+#define PARENB 0000400
|
|
+#define PARODD 0001000
|
|
+#define HUPCL 0002000
|
|
+#define CLOCAL 0004000
|
|
+#define CBAUDEX 0010000
|
|
+#define BOTHER 0010000
|
|
+#define B57600 0010001
|
|
+#define B115200 0010002
|
|
+#define B230400 0010003
|
|
+#define B460800 0010004
|
|
+#define B500000 0010005
|
|
+#define B576000 0010006
|
|
+#define B921600 0010007
|
|
+#define B1000000 0010010
|
|
+#define B1152000 0010011
|
|
+#define B1500000 0010012
|
|
+#define B2000000 0010013
|
|
+#define B2500000 0010014
|
|
+#define B3000000 0010015
|
|
+#define B3500000 0010016
|
|
+#define B4000000 0010017
|
|
+#define CIBAUD 002003600000 /* input baud rate */
|
|
+#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
|
+#define CRTSCTS 020000000000 /* flow control */
|
|
+
|
|
+#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
|
|
+
|
|
+/* c_lflag bits */
|
|
+#define ISIG 0000001
|
|
+#define ICANON 0000002
|
|
+#define XCASE 0000004
|
|
+#define ECHO 0000010
|
|
+#define ECHOE 0000020
|
|
+#define ECHOK 0000040
|
|
+#define ECHONL 0000100
|
|
+#define NOFLSH 0000200
|
|
+#define TOSTOP 0000400
|
|
+#define ECHOCTL 0001000
|
|
+#define ECHOPRT 0002000
|
|
+#define ECHOKE 0004000
|
|
+#define FLUSHO 0010000
|
|
+#define PENDIN 0040000
|
|
+#define IEXTEN 0100000
|
|
+
|
|
+
|
|
+/* tcflow() and TCXONC use these */
|
|
+#define TCOOFF 0
|
|
+#define TCOON 1
|
|
+#define TCIOFF 2
|
|
+#define TCION 3
|
|
+
|
|
+/* tcflush() and TCFLSH use these */
|
|
+#define TCIFLUSH 0
|
|
+#define TCOFLUSH 1
|
|
+#define TCIOFLUSH 2
|
|
+
|
|
+/* tcsetattr uses these */
|
|
+#define TCSANOW 0
|
|
+#define TCSADRAIN 1
|
|
+#define TCSAFLUSH 2
|
|
+
|
|
+#endif /* _ASM_UBICOM32_TERMBITS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/termios.h
|
|
@@ -0,0 +1,119 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/termios.h
|
|
+ * Ubicom32 termio definitions.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_TERMIOS_H
|
|
+#define _ASM_UBICOM32_TERMIOS_H
|
|
+
|
|
+#include <asm/termbits.h>
|
|
+#include <asm/ioctls.h>
|
|
+
|
|
+struct winsize {
|
|
+ unsigned short ws_row;
|
|
+ unsigned short ws_col;
|
|
+ unsigned short ws_xpixel;
|
|
+ unsigned short ws_ypixel;
|
|
+};
|
|
+
|
|
+#define NCC 8
|
|
+struct termio {
|
|
+ unsigned short c_iflag; /* input mode flags */
|
|
+ unsigned short c_oflag; /* output mode flags */
|
|
+ unsigned short c_cflag; /* control mode flags */
|
|
+ unsigned short c_lflag; /* local mode flags */
|
|
+ unsigned char c_line; /* line discipline */
|
|
+ unsigned char c_cc[NCC]; /* control characters */
|
|
+};
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+/* intr=^C quit=^| erase=del kill=^U
|
|
+ eof=^D vtime=\0 vmin=\1 sxtc=\0
|
|
+ start=^Q stop=^S susp=^Z eol=\0
|
|
+ reprint=^R discard=^U werase=^W lnext=^V
|
|
+ eol2=\0
|
|
+*/
|
|
+#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
|
|
+#endif
|
|
+
|
|
+/* modem lines */
|
|
+#define TIOCM_LE 0x001
|
|
+#define TIOCM_DTR 0x002
|
|
+#define TIOCM_RTS 0x004
|
|
+#define TIOCM_ST 0x008
|
|
+#define TIOCM_SR 0x010
|
|
+#define TIOCM_CTS 0x020
|
|
+#define TIOCM_CAR 0x040
|
|
+#define TIOCM_RNG 0x080
|
|
+#define TIOCM_DSR 0x100
|
|
+#define TIOCM_CD TIOCM_CAR
|
|
+#define TIOCM_RI TIOCM_RNG
|
|
+#define TIOCM_OUT1 0x2000
|
|
+#define TIOCM_OUT2 0x4000
|
|
+#define TIOCM_LOOP 0x8000
|
|
+
|
|
+/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+
|
|
+/*
|
|
+ * Translate a "termio" structure into a "termios". Ugh.
|
|
+ */
|
|
+#define user_termio_to_kernel_termios(termios, termio) \
|
|
+({ \
|
|
+ unsigned short tmp; \
|
|
+ get_user(tmp, &(termio)->c_iflag); \
|
|
+ (termios)->c_iflag = (0xffff0000 & ((termios)->c_iflag)) | tmp; \
|
|
+ get_user(tmp, &(termio)->c_oflag); \
|
|
+ (termios)->c_oflag = (0xffff0000 & ((termios)->c_oflag)) | tmp; \
|
|
+ get_user(tmp, &(termio)->c_cflag); \
|
|
+ (termios)->c_cflag = (0xffff0000 & ((termios)->c_cflag)) | tmp; \
|
|
+ get_user(tmp, &(termio)->c_lflag); \
|
|
+ (termios)->c_lflag = (0xffff0000 & ((termios)->c_lflag)) | tmp; \
|
|
+ get_user((termios)->c_line, &(termio)->c_line); \
|
|
+ copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
|
|
+})
|
|
+
|
|
+/*
|
|
+ * Translate a "termios" structure into a "termio". Ugh.
|
|
+ */
|
|
+#define kernel_termios_to_user_termio(termio, termios) \
|
|
+({ \
|
|
+ put_user((termios)->c_iflag, &(termio)->c_iflag); \
|
|
+ put_user((termios)->c_oflag, &(termio)->c_oflag); \
|
|
+ put_user((termios)->c_cflag, &(termio)->c_cflag); \
|
|
+ put_user((termios)->c_lflag, &(termio)->c_lflag); \
|
|
+ put_user((termios)->c_line, &(termio)->c_line); \
|
|
+ copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
|
|
+})
|
|
+
|
|
+#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
|
|
+#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
|
|
+#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
|
|
+#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
|
|
+
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_TERMIOS_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/thread_info.h
|
|
@@ -0,0 +1,134 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/thread_info.h
|
|
+ * Ubicom32 architecture low-level thread information.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ * Adapted from the i386 and PPC versions by Greg Ungerer (gerg@snapgear.com)
|
|
+ * Copyright (C) 2002 David Howells (dhowells@redhat.com)
|
|
+ * - Incorporating suggestions made by Linus Torvalds and Dave Miller
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+
|
|
+#ifndef _ASM_UBICOM32_THREAD_INFO_H
|
|
+#define _ASM_UBICOM32_THREAD_INFO_H
|
|
+
|
|
+#include <asm/page.h>
|
|
+
|
|
+/*
|
|
+ * Size of kernel stack for each process. This must be a power of 2...
|
|
+ */
|
|
+#ifdef CONFIG_4KSTACKS
|
|
+#define THREAD_SIZE_ORDER (0)
|
|
+#else
|
|
+#define THREAD_SIZE_ORDER (1)
|
|
+#endif
|
|
+
|
|
+/*
|
|
+ * for asm files, THREAD_SIZE is now generated by asm-offsets.c
|
|
+ */
|
|
+#define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER)
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+
|
|
+#ifndef __ASSEMBLY__
|
|
+
|
|
+/*
|
|
+ * low level task data.
|
|
+ */
|
|
+struct thread_info {
|
|
+ struct task_struct *task; /* main task structure */
|
|
+ struct exec_domain *exec_domain; /* execution domain */
|
|
+ unsigned long flags; /* low level flags */
|
|
+ int cpu; /* cpu we're on */
|
|
+ int preempt_count; /* 0 => preemptable, <0 => BUG */
|
|
+ int interrupt_nesting; /* Interrupt nesting level. */
|
|
+ struct restart_block restart_block;
|
|
+};
|
|
+
|
|
+/*
|
|
+ * macros/functions for gaining access to the thread information structure
|
|
+ */
|
|
+#define INIT_THREAD_INFO(tsk) \
|
|
+{ \
|
|
+ .task = &tsk, \
|
|
+ .exec_domain = &default_exec_domain, \
|
|
+ .flags = 0, \
|
|
+ .cpu = 0, \
|
|
+ .interrupt_nesting = 0, \
|
|
+ .restart_block = { \
|
|
+ .fn = do_no_restart_syscall, \
|
|
+ }, \
|
|
+}
|
|
+
|
|
+#define init_thread_info (init_thread_union.thread_info)
|
|
+#define init_stack (init_thread_union.stack)
|
|
+
|
|
+
|
|
+/* how to get the thread information struct from C */
|
|
+static inline struct thread_info *current_thread_info(void)
|
|
+{
|
|
+ struct thread_info *ti;
|
|
+
|
|
+ asm (
|
|
+ "and.4 %0, sp, %1\n\t"
|
|
+ : "=&r" (ti)
|
|
+ : "d" (~(THREAD_SIZE-1))
|
|
+ : "cc"
|
|
+ );
|
|
+
|
|
+ return ti;
|
|
+}
|
|
+
|
|
+#define STACK_WARN (THREAD_SIZE / 8)
|
|
+
|
|
+#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR 1
|
|
+
|
|
+/* thread information allocation */
|
|
+#define alloc_thread_info(tsk) ((struct thread_info *) \
|
|
+ __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER))
|
|
+#define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_SIZE_ORDER)
|
|
+#endif /* __ASSEMBLY__ */
|
|
+
|
|
+#define PREEMPT_ACTIVE 0x4000000
|
|
+
|
|
+/*
|
|
+ * thread information flag bit numbers
|
|
+ */
|
|
+#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
|
|
+#define TIF_SIGPENDING 1 /* signal pending */
|
|
+#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
|
|
+#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling
|
|
+ TIF_NEED_RESCHED */
|
|
+#define TIF_MEMDIE 4
|
|
+
|
|
+/* as above, but as bit values */
|
|
+#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
|
+#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
|
|
+#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
|
|
+#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
|
+
|
|
+#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
|
|
+
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_THREAD_INFO_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/types.h
|
|
@@ -0,0 +1,75 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/types.h
|
|
+ * Date type definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_TYPES_H
|
|
+#define _ASM_UBICOM32_TYPES_H
|
|
+
|
|
+/*
|
|
+ * This file is never included by application software unless
|
|
+ * explicitly requested (e.g., via linux/types.h) in which case the
|
|
+ * application is Linux specific so (user-) name space pollution is
|
|
+ * not a major issue. However, for interoperability, libraries still
|
|
+ * need to be careful to avoid a name clashes.
|
|
+ */
|
|
+
|
|
+#include <asm-generic/int-ll64.h>
|
|
+
|
|
+#ifndef __ASSEMBLY__
|
|
+
|
|
+typedef unsigned short umode_t;
|
|
+
|
|
+#endif /* __ASSEMBLY__ */
|
|
+
|
|
+/*
|
|
+ * These aren't exported outside the kernel to avoid name space clashes
|
|
+ */
|
|
+#ifdef __KERNEL__
|
|
+
|
|
+#define BITS_PER_LONG 32
|
|
+
|
|
+#ifndef __ASSEMBLY__
|
|
+
|
|
+/* DMA addresses are always 32-bits wide */
|
|
+
|
|
+typedef u32 dma_addr_t;
|
|
+typedef u32 dma64_addr_t;
|
|
+
|
|
+/*
|
|
+ * XXX These are "Ubicom style" typedefs. They should be removed in all files used by linux.
|
|
+ */
|
|
+typedef u32 u32_t;
|
|
+typedef s32 s32_t;
|
|
+typedef u16 u16_t;
|
|
+typedef s16 s16_t;
|
|
+typedef u8 u8_t;
|
|
+typedef s8 s8_t;
|
|
+
|
|
+#endif /* __ASSEMBLY__ */
|
|
+
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_TYPES_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/ucontext.h
|
|
@@ -0,0 +1,39 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/ucontext.h
|
|
+ * Definition of ucontext structure for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_UCONTEXT_H
|
|
+#define _ASM_UBICOM32_UCONTEXT_H
|
|
+
|
|
+struct ucontext {
|
|
+ unsigned long uc_flags;
|
|
+ struct ucontext *uc_link;
|
|
+ stack_t uc_stack;
|
|
+ struct sigcontext uc_mcontext;
|
|
+ sigset_t uc_sigmask; /* mask last for extensibility */
|
|
+};
|
|
+
|
|
+#endif /* _ASM_UBICOM32_UCONTEXT_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/unistd.h
|
|
@@ -0,0 +1,400 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/unistd.h
|
|
+ * Ubicom32 architecture syscall definitions.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_UNISTD_H
|
|
+#define _ASM_UBICOM32_UNISTD_H
|
|
+
|
|
+/*
|
|
+ * This file contains the system call numbers.
|
|
+ */
|
|
+
|
|
+#define __NR_restart_syscall 0
|
|
+#define __NR_exit 1
|
|
+#define __NR_fork 2
|
|
+#define __NR_read 3
|
|
+#define __NR_write 4
|
|
+#define __NR_open 5
|
|
+#define __NR_close 6
|
|
+#define __NR_waitpid 7
|
|
+#define __NR_creat 8
|
|
+#define __NR_link 9
|
|
+#define __NR_unlink 10
|
|
+#define __NR_execve 11
|
|
+#define __NR_chdir 12
|
|
+#define __NR_time 13
|
|
+#define __NR_mknod 14
|
|
+#define __NR_chmod 15
|
|
+#define __NR_chown 16
|
|
+#define __NR_break 17
|
|
+#define __NR_oldstat 18
|
|
+#define __NR_lseek 19
|
|
+#define __NR_getpid 20
|
|
+#define __NR_mount 21
|
|
+#define __NR_umount 22
|
|
+#define __NR_setuid 23
|
|
+#define __NR_getuid 24
|
|
+#define __NR_stime 25
|
|
+#define __NR_ptrace 26
|
|
+#define __NR_alarm 27
|
|
+#define __NR_oldfstat 28
|
|
+#define __NR_pause 29
|
|
+#define __NR_utime 30
|
|
+#define __NR_stty 31
|
|
+#define __NR_gtty 32
|
|
+#define __NR_access 33
|
|
+#define __NR_nice 34
|
|
+#define __NR_ftime 35
|
|
+#define __NR_sync 36
|
|
+#define __NR_kill 37
|
|
+#define __NR_rename 38
|
|
+#define __NR_mkdir 39
|
|
+#define __NR_rmdir 40
|
|
+#define __NR_dup 41
|
|
+#define __NR_pipe 42
|
|
+#define __NR_times 43
|
|
+#define __NR_prof 44
|
|
+#define __NR_brk 45
|
|
+#define __NR_setgid 46
|
|
+#define __NR_getgid 47
|
|
+#define __NR_signal 48
|
|
+#define __NR_geteuid 49
|
|
+#define __NR_getegid 50
|
|
+#define __NR_acct 51
|
|
+#define __NR_umount2 52
|
|
+#define __NR_lock 53
|
|
+#define __NR_ioctl 54
|
|
+#define __NR_fcntl 55
|
|
+#define __NR_mpx 56
|
|
+#define __NR_setpgid 57
|
|
+#define __NR_ulimit 58
|
|
+#define __NR_oldolduname 59
|
|
+#define __NR_umask 60
|
|
+#define __NR_chroot 61
|
|
+#define __NR_ustat 62
|
|
+#define __NR_dup2 63
|
|
+#define __NR_getppid 64
|
|
+#define __NR_getpgrp 65
|
|
+#define __NR_setsid 66
|
|
+#define __NR_sigaction 67
|
|
+#define __NR_sgetmask 68
|
|
+#define __NR_ssetmask 69
|
|
+#define __NR_setreuid 70
|
|
+#define __NR_setregid 71
|
|
+#define __NR_sigsuspend 72
|
|
+#define __NR_sigpending 73
|
|
+#define __NR_sethostname 74
|
|
+#define __NR_setrlimit 75
|
|
+#define __NR_getrlimit 76
|
|
+#define __NR_getrusage 77
|
|
+#define __NR_gettimeofday 78
|
|
+#define __NR_settimeofday 79
|
|
+#define __NR_getgroups 80
|
|
+#define __NR_setgroups 81
|
|
+#define __NR_select 82
|
|
+#define __NR_symlink 83
|
|
+#define __NR_oldlstat 84
|
|
+#define __NR_readlink 85
|
|
+#define __NR_uselib 86
|
|
+#define __NR_swapon 87
|
|
+#define __NR_reboot 88
|
|
+#define __NR_readdir 89
|
|
+#define __NR_mmap 90
|
|
+#define __NR_munmap 91
|
|
+#define __NR_truncate 92
|
|
+#define __NR_ftruncate 93
|
|
+#define __NR_fchmod 94
|
|
+#define __NR_fchown 95
|
|
+#define __NR_getpriority 96
|
|
+#define __NR_setpriority 97
|
|
+#define __NR_profil 98
|
|
+#define __NR_statfs 99
|
|
+#define __NR_fstatfs 100
|
|
+#define __NR_ioperm 101
|
|
+#define __NR_socketcall 102
|
|
+#define __NR_syslog 103
|
|
+#define __NR_setitimer 104
|
|
+#define __NR_getitimer 105
|
|
+#define __NR_stat 106
|
|
+#define __NR_lstat 107
|
|
+#define __NR_fstat 108
|
|
+#define __NR_olduname 109
|
|
+#define __NR_iopl /* 110 */ not supported
|
|
+#define __NR_vhangup 111
|
|
+#define __NR_idle /* 112 */ Obsolete
|
|
+#define __NR_vm86 /* 113 */ not supported
|
|
+#define __NR_wait4 114
|
|
+#define __NR_swapoff 115
|
|
+#define __NR_sysinfo 116
|
|
+#define __NR_ipc 117
|
|
+#define __NR_fsync 118
|
|
+#define __NR_sigreturn 119
|
|
+#define __NR_clone 120
|
|
+#define __NR_setdomainname 121
|
|
+#define __NR_uname 122
|
|
+#define __NR_cacheflush 123
|
|
+#define __NR_adjtimex 124
|
|
+#define __NR_mprotect 125
|
|
+#define __NR_sigprocmask 126
|
|
+#define __NR_create_module 127
|
|
+#define __NR_init_module 128
|
|
+#define __NR_delete_module 129
|
|
+#define __NR_get_kernel_syms 130
|
|
+#define __NR_quotactl 131
|
|
+#define __NR_getpgid 132
|
|
+#define __NR_fchdir 133
|
|
+#define __NR_bdflush 134
|
|
+#define __NR_sysfs 135
|
|
+#define __NR_personality 136
|
|
+#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
|
|
+#define __NR_setfsuid 138
|
|
+#define __NR_setfsgid 139
|
|
+#define __NR__llseek 140
|
|
+#define __NR_getdents 141
|
|
+#define __NR__newselect 142
|
|
+#define __NR_flock 143
|
|
+#define __NR_msync 144
|
|
+#define __NR_readv 145
|
|
+#define __NR_writev 146
|
|
+#define __NR_getsid 147
|
|
+#define __NR_fdatasync 148
|
|
+#define __NR__sysctl 149
|
|
+#define __NR_mlock 150
|
|
+#define __NR_munlock 151
|
|
+#define __NR_mlockall 152
|
|
+#define __NR_munlockall 153
|
|
+#define __NR_sched_setparam 154
|
|
+#define __NR_sched_getparam 155
|
|
+#define __NR_sched_setscheduler 156
|
|
+#define __NR_sched_getscheduler 157
|
|
+#define __NR_sched_yield 158
|
|
+#define __NR_sched_get_priority_max 159
|
|
+#define __NR_sched_get_priority_min 160
|
|
+#define __NR_sched_rr_get_interval 161
|
|
+#define __NR_nanosleep 162
|
|
+#define __NR_mremap 163
|
|
+#define __NR_setresuid 164
|
|
+#define __NR_getresuid 165
|
|
+#define __NR_getpagesize 166
|
|
+#define __NR_query_module 167
|
|
+#define __NR_poll 168
|
|
+#define __NR_nfsservctl 169
|
|
+#define __NR_setresgid 170
|
|
+#define __NR_getresgid 171
|
|
+#define __NR_prctl 172
|
|
+#define __NR_rt_sigreturn 173
|
|
+#define __NR_rt_sigaction 174
|
|
+#define __NR_rt_sigprocmask 175
|
|
+#define __NR_rt_sigpending 176
|
|
+#define __NR_rt_sigtimedwait 177
|
|
+#define __NR_rt_sigqueueinfo 178
|
|
+#define __NR_rt_sigsuspend 179
|
|
+#define __NR_pread64 180
|
|
+#define __NR_pwrite64 181
|
|
+#define __NR_lchown 182
|
|
+#define __NR_getcwd 183
|
|
+#define __NR_capget 184
|
|
+#define __NR_capset 185
|
|
+#define __NR_sigaltstack 186
|
|
+#define __NR_sendfile 187
|
|
+#define __NR_getpmsg 188 /* some people actually want streams */
|
|
+#define __NR_putpmsg 189 /* some people actually want streams */
|
|
+#define __NR_vfork 190
|
|
+#define __NR_ugetrlimit 191
|
|
+#define __NR_mmap2 192
|
|
+#define __NR_truncate64 193
|
|
+#define __NR_ftruncate64 194
|
|
+#define __NR_stat64 195
|
|
+#define __NR_lstat64 196
|
|
+#define __NR_fstat64 197
|
|
+#define __NR_chown32 198
|
|
+#define __NR_getuid32 199
|
|
+#define __NR_getgid32 200
|
|
+#define __NR_geteuid32 201
|
|
+#define __NR_getegid32 202
|
|
+#define __NR_setreuid32 203
|
|
+#define __NR_setregid32 204
|
|
+#define __NR_getgroups32 205
|
|
+#define __NR_setgroups32 206
|
|
+#define __NR_fchown32 207
|
|
+#define __NR_setresuid32 208
|
|
+#define __NR_getresuid32 209
|
|
+#define __NR_setresgid32 210
|
|
+#define __NR_getresgid32 211
|
|
+#define __NR_lchown32 212
|
|
+#define __NR_setuid32 213
|
|
+#define __NR_setgid32 214
|
|
+#define __NR_setfsuid32 215
|
|
+#define __NR_setfsgid32 216
|
|
+#define __NR_pivot_root 217
|
|
+#define __NR_getdents64 220
|
|
+#define __NR_gettid 221
|
|
+#define __NR_tkill 222
|
|
+#define __NR_setxattr 223
|
|
+#define __NR_lsetxattr 224
|
|
+#define __NR_fsetxattr 225
|
|
+#define __NR_getxattr 226
|
|
+#define __NR_lgetxattr 227
|
|
+#define __NR_fgetxattr 228
|
|
+#define __NR_listxattr 229
|
|
+#define __NR_llistxattr 230
|
|
+#define __NR_flistxattr 231
|
|
+#define __NR_removexattr 232
|
|
+#define __NR_lremovexattr 233
|
|
+#define __NR_fremovexattr 234
|
|
+#define __NR_futex 235
|
|
+#define __NR_sendfile64 236
|
|
+#define __NR_mincore 237
|
|
+#define __NR_madvise 238
|
|
+#define __NR_fcntl64 239
|
|
+#define __NR_readahead 240
|
|
+#define __NR_io_setup 241
|
|
+#define __NR_io_destroy 242
|
|
+#define __NR_io_getevents 243
|
|
+#define __NR_io_submit 244
|
|
+#define __NR_io_cancel 245
|
|
+#define __NR_fadvise64 246
|
|
+#define __NR_exit_group 247
|
|
+#define __NR_lookup_dcookie 248
|
|
+#define __NR_epoll_create 249
|
|
+#define __NR_epoll_ctl 250
|
|
+#define __NR_epoll_wait 251
|
|
+#define __NR_remap_file_pages 252
|
|
+#define __NR_set_tid_address 253
|
|
+#define __NR_timer_create 254
|
|
+#define __NR_timer_settime 255
|
|
+#define __NR_timer_gettime 256
|
|
+#define __NR_timer_getoverrun 257
|
|
+#define __NR_timer_delete 258
|
|
+#define __NR_clock_settime 259
|
|
+#define __NR_clock_gettime 260
|
|
+#define __NR_clock_getres 261
|
|
+#define __NR_clock_nanosleep 262
|
|
+#define __NR_statfs64 263
|
|
+#define __NR_fstatfs64 264
|
|
+#define __NR_tgkill 265
|
|
+#define __NR_utimes 266
|
|
+#define __NR_fadvise64_64 267
|
|
+#define __NR_mbind 268
|
|
+#define __NR_get_mempolicy 269
|
|
+#define __NR_set_mempolicy 270
|
|
+#define __NR_mq_open 271
|
|
+#define __NR_mq_unlink 272
|
|
+#define __NR_mq_timedsend 273
|
|
+#define __NR_mq_timedreceive 274
|
|
+#define __NR_mq_notify 275
|
|
+#define __NR_mq_getsetattr 276
|
|
+#define __NR_waitid 277
|
|
+#define __NR_vserver 278
|
|
+#define __NR_add_key 279
|
|
+#define __NR_request_key 280
|
|
+#define __NR_keyctl 281
|
|
+#define __NR_ioprio_set 282
|
|
+#define __NR_ioprio_get 283
|
|
+#define __NR_inotify_init 284
|
|
+#define __NR_inotify_add_watch 285
|
|
+#define __NR_inotify_rm_watch 286
|
|
+#define __NR_migrate_pages 287
|
|
+#define __NR_openat 288
|
|
+#define __NR_mkdirat 289
|
|
+#define __NR_mknodat 290
|
|
+#define __NR_fchownat 291
|
|
+#define __NR_futimesat 292
|
|
+#define __NR_fstatat64 293
|
|
+#define __NR_unlinkat 294
|
|
+#define __NR_renameat 295
|
|
+#define __NR_linkat 296
|
|
+#define __NR_symlinkat 297
|
|
+#define __NR_readlinkat 298
|
|
+#define __NR_fchmodat 299
|
|
+#define __NR_faccessat 300
|
|
+#define __NR_pselect6 301
|
|
+#define __NR_ppoll 302
|
|
+#define __NR_unshare 303
|
|
+#define __NR_set_robust_list 304
|
|
+#define __NR_get_robust_list 305
|
|
+#define __NR_splice 306
|
|
+#define __NR_sync_file_range 307
|
|
+#define __NR_tee 308
|
|
+#define __NR_vmsplice 309
|
|
+#define __NR_move_pages 310
|
|
+#define __NR_sched_setaffinity 311
|
|
+#define __NR_sched_getaffinity 312
|
|
+#define __NR_kexec_load 313
|
|
+#define __NR_getcpu 314
|
|
+#define __NR_epoll_pwait 315
|
|
+#define __NR_utimensat 316
|
|
+#define __NR_signalfd 317
|
|
+#define __NR_timerfd_create 318
|
|
+#define __NR_eventfd 319
|
|
+#define __NR_fallocate 320
|
|
+#define __NR_timerfd_settime 321
|
|
+#define __NR_timerfd_gettime 322
|
|
+#define __NR_signalfd4 323
|
|
+#define __NR_eventfd2 324
|
|
+#define __NR_epoll_create1 325
|
|
+#define __NR_dup3 326
|
|
+#define __NR_pipe2 327
|
|
+#define __NR_inotify_init1 328
|
|
+
|
|
+#ifdef __KERNEL__
|
|
+
|
|
+#define NR_syscalls 329
|
|
+
|
|
+#define __ARCH_WANT_IPC_PARSE_VERSION
|
|
+#define __ARCH_WANT_OLD_READDIR
|
|
+#define __ARCH_WANT_OLD_STAT
|
|
+#define __ARCH_WANT_STAT64
|
|
+#define __ARCH_WANT_SYS_ALARM
|
|
+#define __ARCH_WANT_SYS_GETHOSTNAME
|
|
+#define __ARCH_WANT_SYS_PAUSE
|
|
+#define __ARCH_WANT_SYS_SGETMASK
|
|
+#define __ARCH_WANT_SYS_SIGNAL
|
|
+#define __ARCH_WANT_SYS_TIME
|
|
+#define __ARCH_WANT_SYS_UTIME
|
|
+#define __ARCH_WANT_SYS_WAITPID
|
|
+#define __ARCH_WANT_SYS_SOCKETCALL
|
|
+#define __ARCH_WANT_SYS_FADVISE64
|
|
+#define __ARCH_WANT_SYS_GETPGRP
|
|
+#define __ARCH_WANT_SYS_LLSEEK
|
|
+#define __ARCH_WANT_SYS_NICE
|
|
+#define __ARCH_WANT_SYS_OLD_GETRLIMIT
|
|
+#define __ARCH_WANT_SYS_OLDUMOUNT
|
|
+#define __ARCH_WANT_SYS_SIGPENDING
|
|
+#define __ARCH_WANT_SYS_SIGPROCMASK
|
|
+#define __ARCH_WANT_SYS_RT_SIGACTION
|
|
+
|
|
+/*
|
|
+ * "Conditional" syscalls
|
|
+ *
|
|
+ * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
|
+ * but it doesn't work on all toolchains, so we just do it by hand
|
|
+ */
|
|
+//#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
|
+#define cond_syscall(x) long x(void) __attribute__((weak,alias("sys_ni_syscall")))
|
|
+#endif /* __KERNEL__ */
|
|
+
|
|
+#endif /* _ASM_UBICOM32_UNISTD_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/user.h
|
|
@@ -0,0 +1,82 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/user.h
|
|
+ * Ubicom32 architecture core file definitions.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_USER_H
|
|
+#define _ASM_UBICOM32_USER_H
|
|
+
|
|
+#include <asm/ptrace.h>
|
|
+#include <asm/page.h>
|
|
+/*
|
|
+ * Adapted from <asm-powerpc/user.h>
|
|
+ *
|
|
+ * Core file format: The core file is written in such a way that gdb
|
|
+ * can understand it and provide useful information to the user (under
|
|
+ * linux we use the `trad-core' bfd, NOT the osf-core). The file contents
|
|
+ * are as follows:
|
|
+ *
|
|
+ * upage: 1 page consisting of a user struct that tells gdb
|
|
+ * what is present in the file. Directly after this is a
|
|
+ * copy of the task_struct, which is currently not used by gdb,
|
|
+ * but it may come in handy at some point. All of the registers
|
|
+ * are stored as part of the upage. The upage should always be
|
|
+ * only one page long.
|
|
+ * data: The data segment follows next. We use current->end_text to
|
|
+ * current->brk to pick up all of the user variables, plus any memory
|
|
+ * that may have been sbrk'ed. No attempt is made to determine if a
|
|
+ * page is demand-zero or if a page is totally unused, we just cover
|
|
+ * the entire range. All of the addresses are rounded in such a way
|
|
+ * that an integral number of pages is written.
|
|
+ * stack: We need the stack information in order to get a meaningful
|
|
+ * backtrace. We need to write the data from usp to
|
|
+ * current->start_stack, so we round each of these in order to be able
|
|
+ * to write an integer number of pages.
|
|
+ */
|
|
+
|
|
+struct user_ubicom32fp_struct {
|
|
+};
|
|
+
|
|
+struct user {
|
|
+ struct pt_regs regs; /* entire machine state */
|
|
+ size_t u_tsize; /* text size (pages) */
|
|
+ size_t u_dsize; /* data size (pages) */
|
|
+ size_t u_ssize; /* stack size (pages) */
|
|
+ unsigned long start_code; /* text starting address */
|
|
+ unsigned long start_data; /* data starting address */
|
|
+ unsigned long start_stack; /* stack starting address */
|
|
+ long int signal; /* signal causing core dump */
|
|
+ unsigned long u_ar0; /* help gdb find registers */
|
|
+ unsigned long magic; /* identifies a core file */
|
|
+ char u_comm[32]; /* user command name */
|
|
+};
|
|
+
|
|
+#define NBPG PAGE_SIZE
|
|
+#define UPAGES 1
|
|
+#define HOST_TEXT_START_ADDR (u.start_code)
|
|
+#define HOST_DATA_START_ADDR (u.start_data)
|
|
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
|
|
+
|
|
+#endif /* _ASM_UBICOM32_USER_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/include/asm/xor.h
|
|
@@ -0,0 +1,33 @@
|
|
+/*
|
|
+ * arch/ubicom32/include/asm/xor.h
|
|
+ * Generic xor.h definitions for Ubicom32 architecture.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+#ifndef _ASM_UBICOM32_XOR_H
|
|
+#define _ASM_UBICOM32_XOR_H
|
|
+
|
|
+#include <asm-generic/xor.h>
|
|
+
|
|
+#endif /* _ASM_UBICOM32_XOR_H */
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/Kconfig
|
|
@@ -0,0 +1,455 @@
|
|
+#
|
|
+# For a description of the syntax of this configuration file,
|
|
+# see Documentation/kbuild/kconfig-language.txt.
|
|
+#
|
|
+
|
|
+mainmenu "uClinux/ubicom32 (w/o MMU) Kernel Configuration"
|
|
+
|
|
+config RAMBASE
|
|
+ hex
|
|
+ default "0x40000000"
|
|
+ help
|
|
+ Define the address that RAM starts at.
|
|
+
|
|
+config UBICOM32
|
|
+ bool
|
|
+ select HAVE_OPROFILE
|
|
+ default y
|
|
+
|
|
+config RAMKERNEL
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config CPU_BIG_ENDIAN
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config FORCE_MAX_ZONEORDER
|
|
+ int
|
|
+ default "14"
|
|
+
|
|
+config HAVE_CLK
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config MMU
|
|
+ bool
|
|
+ default n
|
|
+
|
|
+config FPU
|
|
+ bool
|
|
+ default n
|
|
+
|
|
+config ZONE_DMA
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config RWSEM_GENERIC_SPINLOCK
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config RWSEM_XCHGADD_ALGORITHM
|
|
+ bool
|
|
+ default n
|
|
+
|
|
+config ARCH_HAS_ILOG2_U32
|
|
+ bool
|
|
+ default n
|
|
+
|
|
+config ARCH_HAS_ILOG2_U64
|
|
+ bool
|
|
+ default n
|
|
+
|
|
+config GENERIC_FIND_NEXT_BIT
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GENERIC_GPIO
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GPIOLIB
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GENERIC_HWEIGHT
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GENERIC_HARDIRQS
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config STACKTRACE_SUPPORT
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config LOCKDEP_SUPPORT
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GENERIC_CALIBRATE_DELAY
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GENERIC_TIME
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config TIME_LOW_RES
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GENERIC_CLOCKEVENTS
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config GENERIC_CLOCKEVENTS_BROADCAST
|
|
+ bool
|
|
+ depends on GENERIC_CLOCKEVENTS
|
|
+ default y if SMP && !LOCAL_TIMERS
|
|
+
|
|
+config NO_IOPORT
|
|
+ def_bool y
|
|
+
|
|
+config ARCH_SUPPORTS_AOUT
|
|
+ def_bool y
|
|
+
|
|
+config IRQ_PER_CPU
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+config SCHED_NO_NO_OMIT_FRAME_POINTER
|
|
+ bool
|
|
+ default y
|
|
+
|
|
+menu "Processor type and features"
|
|
+
|
|
+config BRD_32MB
|
|
+ bool
|
|
+ depends on IP5160EVAL
|
|
+ help
|
|
+ Board has 32MB of RAM on it. It is a hidden option used to select default for size of RAM
|
|
+ default n
|
|
+
|
|
+config BRD_64MB
|
|
+ bool
|
|
+ depends on IP7145DPF || IP7160RGW || IP7160BRINGUP || IP7160DPF || IP5170DPF || IP5160DEV
|
|
+ help
|
|
+ Board has 64MB of RAM on it. It is a hidden option used to select default for size of RAM
|
|
+ default n
|
|
+
|
|
+config BRD_128MB
|
|
+ bool
|
|
+ depends on IP7500MODULE || IP7500AV || IP7500MEDIA
|
|
+ help
|
|
+ Board has 128MB of RAM on it. It is a hidden option used to select default for size of RAM
|
|
+ default n
|
|
+
|
|
+comment "Processor type will be selected by Board"
|
|
+
|
|
+config UBICOM32_V3
|
|
+ bool
|
|
+ help
|
|
+ Ubicom IP5xxx series processor support.
|
|
+
|
|
+config UBICOM32_V4
|
|
+ bool
|
|
+ help
|
|
+ Ubicom IP7xxx series processor support.
|
|
+
|
|
+comment "Board"
|
|
+choice
|
|
+ prompt "Board type"
|
|
+ help
|
|
+ Select your board.
|
|
+
|
|
+config NOBOARD
|
|
+ bool "No board selected"
|
|
+ help
|
|
+ Default. Don't select any board specific config. Will not build unless you change!
|
|
+
|
|
+# Add your boards here
|
|
+source "arch/ubicom32/mach-ip5k/Kconfig"
|
|
+source "arch/ubicom32/mach-ip7k/Kconfig"
|
|
+
|
|
+endchoice
|
|
+
|
|
+comment "Kernel Options"
|
|
+config SMP
|
|
+ bool "Symmetric multi-processing support"
|
|
+ select USE_GENERIC_SMP_HELPERS
|
|
+ default n
|
|
+ help
|
|
+ Enables multithreading support. Enabling SMP support increases
|
|
+ the size of system data structures. SMP support can have either
|
|
+ positive or negative impact on performance depending on workloads.
|
|
+
|
|
+ If you do not know what to do here, say N.
|
|
+
|
|
+config NR_CPUS
|
|
+ int "Number of configured CPUs"
|
|
+ range 2 32
|
|
+ default 2
|
|
+ depends on SMP
|
|
+ help
|
|
+ Upper bound on the number of CPUs. Space is reserved
|
|
+ at compile time for this many CPUs.
|
|
+
|
|
+config LOCAL_TIMERS
|
|
+ bool "Use local timer interrupts"
|
|
+ depends on SMP
|
|
+ default y
|
|
+ help
|
|
+ Enable support for local timers on SMP platforms, rather then the
|
|
+ legacy IPI broadcast method. Local timers allows the system
|
|
+ accounting to be spread across the timer interval, preventing a
|
|
+ "thundering herd" at every timer tick. A physical timer is allocated
|
|
+ per cpu.
|
|
+
|
|
+config TIMER_EXTRA_ALLOC
|
|
+ int "Number of additional physical timer events to create"
|
|
+ depends on GENERIC_CLOCKEVENTS
|
|
+ default 0
|
|
+ help
|
|
+ The Ubicom32 processor has a number of event timers that can be wrapped
|
|
+ in Linux clock event structures (assuming that the timers are not being
|
|
+ used for another purpose). Based on the value of LOCAL_TIMERS, either
|
|
+ 2 timers will be used or a timer will be used for every CPU. This value
|
|
+ allows the programmer to select additional timers over that amount.
|
|
+
|
|
+config IRQSTACKS
|
|
+ bool "Create separate stacks for interrupt handling"
|
|
+ default n
|
|
+ help
|
|
+ Selecting this causes interrupts to be created on a separate
|
|
+ stack instead of nesting the interrupts on the kernel stack.
|
|
+
|
|
+config IRQSTACKS_USEOCM
|
|
+ bool "Use OCM for interrupt stacks"
|
|
+ default n
|
|
+ depends on IRQSTACKS
|
|
+ help
|
|
+ Selecting this cause the interrupt stacks to be placed in OCM
|
|
+ reducing cache misses at the expense of using the OCM for servicing
|
|
+ interrupts.
|
|
+
|
|
+menu "OCM Instruction Heap"
|
|
+
|
|
+config OCM_MODULES_RESERVATION
|
|
+ int "OCM Instruction heap reservation. 0-192 kB"
|
|
+ range 0 192
|
|
+ default "0"
|
|
+ help
|
|
+ The minimum amount of OCM memory to reserve for kernel loadable module
|
|
+ code. If you are not using this memory it cannot be used for anything
|
|
+ else. Leave it as 0 if you have prebuilt modules that are compiled with
|
|
+ OCM support.
|
|
+
|
|
+config OCM_MODULES_MAY_CONSUME_REMAINING_CODESPACE
|
|
+ bool "Give all unused ocm code space to the ocm instruction heap."
|
|
+ default n
|
|
+ help
|
|
+ Allow the OCM instruction heap allocation to consume any remaining
|
|
+ unused OCM code space. The result of this is that you will not have
|
|
+ and deterministic results, but you will not have any waste either.
|
|
+
|
|
+config OCM_MODULES_FALLBACK_TO_DDR
|
|
+ bool "Loadable Modules requiring OCM may fallback to use DDR."
|
|
+ default n
|
|
+ help
|
|
+ If a module cannot get the OCM code it requires allow DDR to
|
|
+ be used instead.
|
|
+endmenu
|
|
+
|
|
+config HZ
|
|
+ int "Frequency of 'jiffies' (for polling)"
|
|
+ default 1000
|
|
+ help
|
|
+ 100 is common for embedded systems, but 1000 allows
|
|
+ you to do more drivers without actually having
|
|
+ interrupts working properly.
|
|
+
|
|
+comment "RAM configuration"
|
|
+
|
|
+if BRD_32MB
|
|
+
|
|
+config RAMSIZE
|
|
+ hex "Size of RAM (in bytes)"
|
|
+ range 0x00000000 0x02000000
|
|
+ default "0x02000000"
|
|
+ help
|
|
+ Define the size of the system RAM. If you select 0 then the
|
|
+ kernel will try to probe the RAM size at runtime. This is not
|
|
+ supported on all CPU types.
|
|
+
|
|
+endif
|
|
+
|
|
+if BRD_64MB
|
|
+
|
|
+config RAMSIZE
|
|
+ hex "Size of RAM (in bytes)"
|
|
+ range 0x00000000 0x04000000
|
|
+ default "0x04000000"
|
|
+ help
|
|
+ Define the size of the system RAM. If you select 0 then the
|
|
+ kernel will try to probe the RAM size at runtime. This is not
|
|
+ supported on all CPU types.
|
|
+
|
|
+endif
|
|
+
|
|
+if BRD_128MB
|
|
+
|
|
+config RAMSIZE
|
|
+ hex "Size of RAM (in bytes)"
|
|
+ range 0x00000000 0x08000000
|
|
+ default "0x08000000"
|
|
+ help
|
|
+ Define the size of the system RAM. If you select 0 then the
|
|
+ kernel will try to probe the RAM size at runtime. This is not
|
|
+ supported on all CPU types.
|
|
+
|
|
+endif
|
|
+
|
|
+config KERNELBASE
|
|
+ hex "Address of the base of kernel code"
|
|
+ default "0x40400000"
|
|
+ help
|
|
+ For the time being we are going to start the Kernel at a 4 meg offset.
|
|
+
|
|
+comment "Build options"
|
|
+config LINKER_RELAXATION
|
|
+ bool "Linker Relaxation"
|
|
+ default y
|
|
+ help
|
|
+ Turns on linker relaxation that will produce smaller
|
|
+ faster code. Increases link time.
|
|
+
|
|
+comment "Driver options"
|
|
+menu "PCI Bus"
|
|
+config PCI
|
|
+ bool "PCI bus"
|
|
+ default true
|
|
+ help
|
|
+ Enable/Disable PCI bus
|
|
+ source "drivers/pci/Kconfig"
|
|
+
|
|
+
|
|
+config PCI_DEV0_IDSEL
|
|
+ hex "slot 0 address"
|
|
+ depends on PCI
|
|
+ default "0x01000000"
|
|
+ help
|
|
+ Slot 0 address. This address should correspond to the address line
|
|
+ which the IDSEL bit for this slot is connected to.
|
|
+
|
|
+config PCI_DEV1_IDSEL
|
|
+ hex "slot 1 address"
|
|
+ depends on PCI
|
|
+ default "0x02000000"
|
|
+ help
|
|
+ Slot 1 address. This address should correspond to the address line
|
|
+ which the IDSEL bit for this slot is connected to.
|
|
+endmenu
|
|
+# End PCI
|
|
+
|
|
+menu "Input devices"
|
|
+config UBICOM_INPUT
|
|
+ bool "Ubicom polled GPIO input driver"
|
|
+ select INPUT
|
|
+ select INPUT_POLLDEV
|
|
+ help
|
|
+ Polling input driver, much like the GPIO input driver, except that it doesn't
|
|
+ rely on interrupts. It will report events via the input subsystem.
|
|
+ default n
|
|
+
|
|
+config UBICOM_INPUT_I2C
|
|
+ bool "Ubicom polled GPIO input driver over I2C"
|
|
+ select INPUT
|
|
+ select INPUT_POLLDEV
|
|
+ help
|
|
+ Polling input driver, much like the PCA953x driver, it can support a variety of
|
|
+ different I2C I/O expanders. This device polls the I2C I/O expander for events
|
|
+ and reports them via the input subsystem.
|
|
+ default n
|
|
+endmenu
|
|
+# Input devices
|
|
+
|
|
+menu "Misc devices"
|
|
+config UBICOM_HID
|
|
+ bool "Ubicom HID driver"
|
|
+ select INPUT
|
|
+ select INPUT_POLLDEV
|
|
+ select LCD_CLASS_DEVICE
|
|
+ help
|
|
+ Driver for HID chip found on some Ubicom reference designs. This chip handles
|
|
+ PWM, button input, and IR remote control. It registers as an input device and
|
|
+ a backlight device.
|
|
+ default n
|
|
+endmenu
|
|
+# Misc devices
|
|
+
|
|
+config CMDLINE_BOOL
|
|
+ bool "Built-in kernel command line"
|
|
+ default n
|
|
+ help
|
|
+ Allow for specifying boot arguments to the kernel at
|
|
+ build time. On some systems (e.g. embedded ones), it is
|
|
+ necessary or convenient to provide some or all of the
|
|
+ kernel boot arguments with the kernel itself (that is,
|
|
+ to not rely on the boot loader to provide them.)
|
|
+
|
|
+ To compile command line arguments into the kernel,
|
|
+ set this option to 'Y', then fill in the
|
|
+ the boot arguments in CONFIG_CMDLINE.
|
|
+
|
|
+ Systems with fully functional boot loaders (i.e. non-embedded)
|
|
+ should leave this option set to 'N'.
|
|
+
|
|
+config CMDLINE
|
|
+ string "Built-in kernel command string"
|
|
+ depends on CMDLINE_BOOL
|
|
+ default ""
|
|
+ help
|
|
+ Enter arguments here that should be compiled into the kernel
|
|
+ image and used at boot time. If the boot loader provides a
|
|
+ command line at boot time, it is appended to this string to
|
|
+ form the full kernel command line, when the system boots.
|
|
+
|
|
+ However, you can use the CONFIG_CMDLINE_OVERRIDE option to
|
|
+ change this behavior.
|
|
+
|
|
+ In most cases, the command line (whether built-in or provided
|
|
+ by the boot loader) should specify the device for the root
|
|
+ file system.
|
|
+
|
|
+config CMDLINE_OVERRIDE
|
|
+ bool "Built-in command line overrides boot loader arguments"
|
|
+ default n
|
|
+ depends on CMDLINE_BOOL
|
|
+ help
|
|
+ Set this option to 'Y' to have the kernel ignore the boot loader
|
|
+ command line, and use ONLY the built-in command line.
|
|
+
|
|
+ This is used to work around broken boot loaders. This should
|
|
+ be set to 'N' under normal conditions.
|
|
+
|
|
+endmenu
|
|
+# End Processor type and features
|
|
+
|
|
+source "arch/ubicom32/Kconfig.debug"
|
|
+
|
|
+menu "Executable file formats"
|
|
+source "fs/Kconfig.binfmt"
|
|
+endmenu
|
|
+
|
|
+source "init/Kconfig"
|
|
+source "kernel/Kconfig.preempt"
|
|
+source "kernel/time/Kconfig"
|
|
+source "mm/Kconfig"
|
|
+source "net/Kconfig"
|
|
+source "drivers/Kconfig"
|
|
+source "fs/Kconfig"
|
|
+source "security/Kconfig"
|
|
+source "crypto/Kconfig"
|
|
+source "lib/Kconfig"
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/Kconfig.debug
|
|
@@ -0,0 +1,117 @@
|
|
+menu "Kernel hacking"
|
|
+
|
|
+config TRACE_IRQFLAGS_SUPPORT
|
|
+ def_bool y
|
|
+
|
|
+config PROTECT_KERNEL
|
|
+ default y
|
|
+ bool 'Enable Kernel range register Protection'
|
|
+ help
|
|
+ Adds code to enable/disable range registers to protect static
|
|
+ kernel code/data from userspace. Currently the ranges covered
|
|
+ do no protect kernel loadable modules or dynamically allocated
|
|
+ kernel data.
|
|
+
|
|
+config NO_KERNEL_MSG
|
|
+ bool "Suppress Kernel BUG Messages"
|
|
+ help
|
|
+ Do not output any debug BUG messages within the kernel.
|
|
+
|
|
+config EARLY_PRINTK
|
|
+ bool "Use the driver that you selected as console also for early printk (to debug kernel bootup)."
|
|
+ default n
|
|
+ help
|
|
+ If you want to use the serdes driver (console=ttyUS0) for
|
|
+ early printk, you must also supply an additional kernel boot
|
|
+ parameter like this:
|
|
+
|
|
+ serdes=ioportaddr,irq,clockrate,baud
|
|
+
|
|
+ For an IP7160RGW eval board, you could use this:
|
|
+
|
|
+ serdes=0x2004000,61,250000000,57600
|
|
+
|
|
+ which will let you see early printk output at 57600 baud.
|
|
+
|
|
+config STOP_ON_TRAP
|
|
+ bool "Enable stopping at the LDSR for all traps"
|
|
+ default n
|
|
+ help
|
|
+ Cause the LDSR to stop all threads whenever a trap is about to be serviced
|
|
+
|
|
+config STOP_ON_BUG
|
|
+ bool "Enable stopping on failed BUG_ON()"
|
|
+ default n
|
|
+ help
|
|
+ Cause all BUG_ON failures to stop all threads
|
|
+
|
|
+config DEBUG_IRQMEASURE
|
|
+ bool "Enable IRQ handler measurements"
|
|
+ default n
|
|
+ help
|
|
+ When enabled each IRQ's min/avg/max times will be printed. If the handler
|
|
+ re-enables interrupt, the times will show the full time including to service
|
|
+ nested interrupts. See /proc/irq_measurements.
|
|
+
|
|
+config DEBUG_PCIMEASURE
|
|
+ bool "Enable PCI transaction measurements"
|
|
+ default n
|
|
+ help
|
|
+ When enabled the system will measure the min/avg/max timer for each PCI transactions.
|
|
+ See /proc/pci_measurements.
|
|
+
|
|
+config ACCESS_OK_CHECKS_ENABLED
|
|
+ bool "Enable user space access checks"
|
|
+ default n
|
|
+ help
|
|
+ Enabling this check causes the kernel to verify that addresses passed
|
|
+ to the kernel by the user space code are within the processes
|
|
+ address space. On a no-mmu system, this is done by examining the
|
|
+ processes memory data structures (adversly affecting performance) but
|
|
+ ensuring that a process does not ask the kernel to violate another
|
|
+ processes address space. Sadly, the kernel uses access_ok() for
|
|
+ address that are in the kernel which results in a large volume of
|
|
+ false positives.
|
|
+
|
|
+choice
|
|
+ prompt "Unaligned Access Support"
|
|
+ default UNALIGNED_ACCESS_ENABLED
|
|
+ help
|
|
+ Kernel / Userspace unaligned access handling.
|
|
+
|
|
+config UNALIGNED_ACCESS_ENABLED
|
|
+ bool "Kernel and Userspace"
|
|
+ help
|
|
+
|
|
+config UNALIGNED_ACCESS_USERSPACE_ONLY
|
|
+ bool "Userspace Only"
|
|
+ help
|
|
+
|
|
+config UNALIGNED_ACCESS_DISABLED
|
|
+ bool "Disabled"
|
|
+ help
|
|
+
|
|
+endchoice
|
|
+
|
|
+config DEBUG_STACKOVERFLOW
|
|
+ bool "Check for stack overflows"
|
|
+ default n
|
|
+ depends on DEBUG_KERNEL
|
|
+ help
|
|
+ This option will cause messages to be printed if free kernel stack space
|
|
+ drops below a certain limit (THREAD_SIZE /8).
|
|
+
|
|
+config DEBUG_STACK_USAGE
|
|
+ bool "Stack utilization instrumentation"
|
|
+ default n
|
|
+ depends on DEBUG_KERNEL
|
|
+ help
|
|
+ Enables the display of the minimum amount of free kernel stack which each
|
|
+ task has ever had available in the sysrq-T and sysrq-P debug output.
|
|
+
|
|
+ This option will slow down process creation somewhat.
|
|
+
|
|
+source "lib/Kconfig.debug"
|
|
+
|
|
+endmenu
|
|
+
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/Makefile
|
|
@@ -0,0 +1,103 @@
|
|
+#
|
|
+# arch/ubicom32/Makefile
|
|
+# <TODO: Replace with short file description>
|
|
+#
|
|
+# (C) Copyright 2009, Ubicom, Inc.
|
|
+#
|
|
+# This file is part of the Ubicom32 Linux Kernel Port.
|
|
+#
|
|
+# The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+# it and/or modify it under the terms of the GNU General Public License
|
|
+# as published by the Free Software Foundation, either version 2 of the
|
|
+# License, or (at your option) any later version.
|
|
+#
|
|
+# The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+# will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+# the GNU General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with the Ubicom32 Linux Kernel Port. If not,
|
|
+# see <http://www.gnu.org/licenses/>.
|
|
+#
|
|
+# Ubicom32 implementation derived from (with many thanks):
|
|
+# arch/m68knommu
|
|
+# arch/blackfin
|
|
+# arch/parisc
|
|
+#
|
|
+
|
|
+KBUILD_DEFCONFIG :=
|
|
+
|
|
+# setup the machine name and machine dependent settings
|
|
+machine-$(CONFIG_UBICOM32_V3) := ip5k
|
|
+machine-$(CONFIG_UBICOM32_V4) := ip7k
|
|
+MACHINE := $(machine-y)
|
|
+export MACHINE
|
|
+
|
|
+model-$(CONFIG_RAMKERNEL) := ram
|
|
+model-$(CONFIG_ROMKERNEL) := rom
|
|
+MODEL := $(model-y)
|
|
+export MODEL
|
|
+
|
|
+CPUCLASS := $(cpuclass-y)
|
|
+
|
|
+export CPUCLASS
|
|
+
|
|
+#
|
|
+# We want the core kernel built using the fastcall ABI but modules need
|
|
+# to be built using the slower calling convention because they could be
|
|
+# loaded out of range for fast calls.
|
|
+#
|
|
+CFLAGS_KERNEL += -mfastcall
|
|
+CFLAGS_MODULE += -mno-fastcall
|
|
+
|
|
+#
|
|
+# Some CFLAG additions based on specific CPU type.
|
|
+#
|
|
+cflags-$(CONFIG_UBICOM32_V3) := -march=ubicom32v3 -mno-fdpic -DIP5000
|
|
+cflags-$(CONFIG_UBICOM32_V4) := -march=ubicom32v4 -mno-fdpic -DIP7000
|
|
+
|
|
+ldflags-$(CONFIG_LINKER_RELAXATION) := --relax
|
|
+LDFLAGS_vmlinux := $(ldflags-y)
|
|
+
|
|
+GCCLIBDIR := $(dir $(shell $(CC) $(cflags-y) -print-libgcc-file-name))
|
|
+
|
|
+KBUILD_CFLAGS += $(cflags-y) -ffunction-sections
|
|
+KBUILD_AFLAGS += $(cflags-y)
|
|
+
|
|
+KBUILD_CFLAGS += -D__linux__ -Dlinux
|
|
+KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\"
|
|
+
|
|
+# include any machine specific directory
|
|
+ifneq ($(machine-y),)
|
|
+core-y += arch/$(ARCH)/mach-$(MACHINE)/
|
|
+endif
|
|
+
|
|
+head-y := arch/$(ARCH)/kernel/head.o
|
|
+
|
|
+core-y += arch/$(ARCH)/kernel/ \
|
|
+ arch/$(ARCH)/mm/ \
|
|
+ arch/$(ARCH)/crypto/ \
|
|
+ arch/$(ARCH)/mach-common/
|
|
+
|
|
+drivers-$(CONFIG_OPROFILE) += arch/ubicom32/oprofile/
|
|
+
|
|
+libs-y += arch/$(ARCH)/lib/
|
|
+
|
|
+archclean:
|
|
+
|
|
+# make sure developer has selected a valid board
|
|
+ifeq ($(CONFIG_NOBOARD),y)
|
|
+# $(error have to select a valid board file $(CONFIG_NOBOARD), please run kernel config again)
|
|
+_all: config_board_error
|
|
+endif
|
|
+
|
|
+config_board_error:
|
|
+ @echo "*************************************************"
|
|
+ @echo "You have not selected a proper board."
|
|
+ @echo "Please run menuconfig (or config) against your"
|
|
+ @echo "kernel and choose your board under Processor"
|
|
+ @echo "options"
|
|
+ @echo "*************************************************"
|
|
+ @exit 1
|
|
+
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/kernel/asm-offsets.c
|
|
@@ -0,0 +1,162 @@
|
|
+/*
|
|
+ * arch/ubicom32/kernel/asm-offsets.c
|
|
+ * Ubicom32 architecture definitions needed by assembly language modules.
|
|
+ *
|
|
+ * (C) Copyright 2009, Ubicom, Inc.
|
|
+ *
|
|
+ * This file is part of the Ubicom32 Linux Kernel Port.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+ * it and/or modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation, either version 2 of the
|
|
+ * License, or (at your option) any later version.
|
|
+ *
|
|
+ * The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+ * the GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with the Ubicom32 Linux Kernel Port. If not,
|
|
+ * see <http://www.gnu.org/licenses/>.
|
|
+ *
|
|
+ * Ubicom32 implementation derived from (with many thanks):
|
|
+ * arch/m68knommu
|
|
+ * arch/blackfin
|
|
+ * arch/parisc
|
|
+ */
|
|
+/*
|
|
+ * This program is used to generate definitions needed by
|
|
+ * assembly language modules.
|
|
+ *
|
|
+ * We use the technique used in the OSF Mach kernel code:
|
|
+ * generate asm statements containing #defines,
|
|
+ * compile this file to assembler, and then extract the
|
|
+ * #defines from the assembly-language output.
|
|
+ */
|
|
+
|
|
+#include <linux/module.h>
|
|
+#include <linux/stddef.h>
|
|
+#include <linux/sched.h>
|
|
+#include <linux/kernel_stat.h>
|
|
+#include <linux/ptrace.h>
|
|
+#include <linux/hardirq.h>
|
|
+#include <asm/bootinfo.h>
|
|
+#include <asm/irq.h>
|
|
+#include <asm/thread_info.h>
|
|
+
|
|
+#define DEFINE(sym, val) \
|
|
+ asm volatile("\n->" #sym " %0 " #val : : "i" (val))
|
|
+
|
|
+#define BLANK() asm volatile("\n->" : : )
|
|
+
|
|
+int main(void)
|
|
+{
|
|
+ /* offsets into the task struct */
|
|
+ DEFINE(TASK_STATE, offsetof(struct task_struct, state));
|
|
+ DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags));
|
|
+ DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace));
|
|
+ DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked));
|
|
+ DEFINE(TASK_THREAD, offsetof(struct task_struct, thread));
|
|
+ DEFINE(TASK_THREAD_INFO, offsetof(struct task_struct, stack));
|
|
+ DEFINE(TASK_MM, offsetof(struct task_struct, mm));
|
|
+ DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm));
|
|
+
|
|
+ /* offsets into the kernel_stat struct */
|
|
+ DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
|
|
+
|
|
+ /* offsets into the irq_cpustat_t struct */
|
|
+ DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending));
|
|
+
|
|
+ /* offsets into the thread struct */
|
|
+ DEFINE(THREAD_D10, offsetof(struct thread_struct, d10));
|
|
+ DEFINE(THREAD_D11, offsetof(struct thread_struct, d11));
|
|
+ DEFINE(THREAD_D12, offsetof(struct thread_struct, d12));
|
|
+ DEFINE(THREAD_D13, offsetof(struct thread_struct, d13));
|
|
+ DEFINE(THREAD_A1, offsetof(struct thread_struct, a1));
|
|
+ DEFINE(THREAD_A2, offsetof(struct thread_struct, a2));
|
|
+ DEFINE(THREAD_A5, offsetof(struct thread_struct, a5));
|
|
+ DEFINE(THREAD_A6, offsetof(struct thread_struct, a6));
|
|
+ DEFINE(THREAD_SP, offsetof(struct thread_struct, sp));
|
|
+
|
|
+ /* offsets into the pt_regs */
|
|
+ DEFINE(PT_D0, offsetof(struct pt_regs, dn[0]));
|
|
+ DEFINE(PT_D1, offsetof(struct pt_regs, dn[1]));
|
|
+ DEFINE(PT_D2, offsetof(struct pt_regs, dn[2]));
|
|
+ DEFINE(PT_D3, offsetof(struct pt_regs, dn[3]));
|
|
+ DEFINE(PT_D4, offsetof(struct pt_regs, dn[4]));
|
|
+ DEFINE(PT_D5, offsetof(struct pt_regs, dn[5]));
|
|
+ DEFINE(PT_D6, offsetof(struct pt_regs, dn[6]));
|
|
+ DEFINE(PT_D7, offsetof(struct pt_regs, dn[7]));
|
|
+ DEFINE(PT_D8, offsetof(struct pt_regs, dn[8]));
|
|
+ DEFINE(PT_D9, offsetof(struct pt_regs, dn[9]));
|
|
+ DEFINE(PT_D10, offsetof(struct pt_regs, dn[10]));
|
|
+ DEFINE(PT_D11, offsetof(struct pt_regs, dn[11]));
|
|
+ DEFINE(PT_D12, offsetof(struct pt_regs, dn[12]));
|
|
+ DEFINE(PT_D13, offsetof(struct pt_regs, dn[13]));
|
|
+ DEFINE(PT_D14, offsetof(struct pt_regs, dn[14]));
|
|
+ DEFINE(PT_D15, offsetof(struct pt_regs, dn[15]));
|
|
+ DEFINE(PT_A0, offsetof(struct pt_regs, an[0]));
|
|
+ DEFINE(PT_A1, offsetof(struct pt_regs, an[1]));
|
|
+ DEFINE(PT_A2, offsetof(struct pt_regs, an[2]));
|
|
+ DEFINE(PT_A3, offsetof(struct pt_regs, an[3]));
|
|
+ DEFINE(PT_A4, offsetof(struct pt_regs, an[4]));
|
|
+ DEFINE(PT_A5, offsetof(struct pt_regs, an[5]));
|
|
+ DEFINE(PT_A6, offsetof(struct pt_regs, an[6]));
|
|
+ DEFINE(PT_A7, offsetof(struct pt_regs, an[7]));
|
|
+ DEFINE(PT_SP, offsetof(struct pt_regs, an[7]));
|
|
+
|
|
+ DEFINE(PT_ACC0HI, offsetof(struct pt_regs, acc0[0]));
|
|
+ DEFINE(PT_ACC0LO, offsetof(struct pt_regs, acc0[1]));
|
|
+ DEFINE(PT_MAC_RC16, offsetof(struct pt_regs, mac_rc16));
|
|
+
|
|
+ DEFINE(PT_ACC1HI, offsetof(struct pt_regs, acc1[0]));
|
|
+ DEFINE(PT_ACC1LO, offsetof(struct pt_regs, acc1[1]));
|
|
+
|
|
+ DEFINE(PT_SOURCE3, offsetof(struct pt_regs, source3));
|
|
+ DEFINE(PT_INST_CNT, offsetof(struct pt_regs, inst_cnt));
|
|
+ DEFINE(PT_CSR, offsetof(struct pt_regs, csr));
|
|
+ DEFINE(PT_DUMMY_UNUSED, offsetof(struct pt_regs, dummy_unused));
|
|
+
|
|
+ DEFINE(PT_INT_MASK0, offsetof(struct pt_regs, int_mask0));
|
|
+ DEFINE(PT_INT_MASK1, offsetof(struct pt_regs, int_mask1));
|
|
+
|
|
+ DEFINE(PT_PC, offsetof(struct pt_regs, pc));
|
|
+
|
|
+ DEFINE(PT_TRAP_CAUSE, offsetof(struct pt_regs, trap_cause));
|
|
+
|
|
+ DEFINE(PT_SIZE, sizeof(struct pt_regs));
|
|
+
|
|
+ DEFINE(PT_FRAME_TYPE, offsetof(struct pt_regs, frame_type));
|
|
+
|
|
+ DEFINE(PT_ORIGINAL_D0, offsetof(struct pt_regs, original_dn_0));
|
|
+ DEFINE(PT_PREVIOUS_PC, offsetof(struct pt_regs, previous_pc));
|
|
+
|
|
+ /* offsets into the kernel_stat struct */
|
|
+ DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
|
|
+
|
|
+ /* signal defines */
|
|
+ DEFINE(SIGSEGV, SIGSEGV);
|
|
+ //DEFINE(SEGV_MAPERR, SEGV_MAPERR);
|
|
+ DEFINE(SIGTRAP, SIGTRAP);
|
|
+ //DEFINE(TRAP_TRACE, TRAP_TRACE);
|
|
+
|
|
+ DEFINE(PT_PTRACED, PT_PTRACED);
|
|
+ DEFINE(PT_DTRACE, PT_DTRACE);
|
|
+
|
|
+ DEFINE(ASM_THREAD_SIZE, THREAD_SIZE);
|
|
+
|
|
+ /* Offsets in thread_info structure */
|
|
+ DEFINE(TI_TASK, offsetof(struct thread_info, task));
|
|
+ DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain));
|
|
+ DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
|
|
+ DEFINE(TI_PREEMPTCOUNT, offsetof(struct thread_info, preempt_count));
|
|
+ DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
|
|
+ DEFINE(TI_INTR_NESTING, offsetof(struct thread_info, interrupt_nesting));
|
|
+ DEFINE(ASM_TIF_NEED_RESCHED, TIF_NEED_RESCHED);
|
|
+ DEFINE(ASM_TIF_SYSCALL_TRACE, TIF_SYSCALL_TRACE);
|
|
+ DEFINE(ASM_TIF_SIGPENDING, TIF_SIGPENDING);
|
|
+
|
|
+ DEFINE(ASM_RAM_END, (CONFIG_RAMBASE + CONFIG_RAMSIZE));
|
|
+ return 0;
|
|
+}
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/kernel/Makefile
|
|
@@ -0,0 +1,64 @@
|
|
+#
|
|
+# arch/ubicom32/kernel/Makefile
|
|
+# Main Makefile for the Ubicom32 arch directory.
|
|
+#
|
|
+# (C) Copyright 2009, Ubicom, Inc.
|
|
+#
|
|
+# This file is part of the Ubicom32 Linux Kernel Port.
|
|
+#
|
|
+# The Ubicom32 Linux Kernel Port is free software: you can redistribute
|
|
+# it and/or modify it under the terms of the GNU General Public License
|
|
+# as published by the Free Software Foundation, either version 2 of the
|
|
+# License, or (at your option) any later version.
|
|
+#
|
|
+# The Ubicom32 Linux Kernel Port is distributed in the hope that it
|
|
+# will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
+# the GNU General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with the Ubicom32 Linux Kernel Port. If not,
|
|
+# see <http://www.gnu.org/licenses/>.
|
|
+#
|
|
+# Ubicom32 implementation derived from (with many thanks):
|
|
+# arch/m68knommu
|
|
+# arch/blackfin
|
|
+# arch/parisc
|
|
+#
|
|
+
|
|
+extra-y := head.o vmlinux.lds
|
|
+
|
|
+obj-y += \
|
|
+ devtree.o \
|
|
+ dma.o \
|
|
+ flat.o \
|
|
+ init_task.o \
|
|
+ irq.o \
|
|
+ ldsr.o \
|
|
+ os_node.o \
|
|
+ process.o \
|
|
+ processor.o \
|
|
+ ptrace.o \
|
|
+ setup.o \
|
|
+ signal.o \
|
|
+ stacktrace.o \
|
|
+ sys_ubicom32.o \
|
|
+ syscalltable.o \
|
|
+ thread.o \
|
|
+ time.o \
|
|
+ traps.o \
|
|
+ ubicom32_context_switch.o \
|
|
+ ubicom32_ksyms.o \
|
|
+ ubicom32_syscall.o \
|
|
+ unaligned_trap.o
|
|
+
|
|
+obj-$(CONFIG_MODULES) += module.o
|
|
+obj-$(CONFIG_COMEMPCI) += comempci.o
|
|
+obj-$(CONFIG_SMP) += smp.o topology.o
|
|
+obj-$(CONFIG_ACCESS_OK_CHECKS_ENABLED) += uaccess.o
|
|
+obj-$(CONFIG_GENERIC_CLOCKEVENTS) += timer_device.o
|
|
+obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += timer_broadcast.o
|
|
+
|
|
+ifndef CONFIG_GENERIC_CLOCKEVENTS
|
|
+obj-y += timer_tick.o
|
|
+endif
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/mach-ip5k/Kconfig
|
|
@@ -0,0 +1,32 @@
|
|
+
|
|
+config IP5170DPF
|
|
+ bool "IP5170DPF"
|
|
+ select UBICOM32_V3
|
|
+ select I2C
|
|
+ select I2C_GPIO
|
|
+ select FB
|
|
+ select FB_UBICOM32
|
|
+ select BACKLIGHT_LCD_SUPPORT
|
|
+ select BACKLIGHT_CLASS_DEVICE
|
|
+ select UBICOM_HID
|
|
+ select NEW_LEDS
|
|
+ select LEDS_CLASS
|
|
+ select LEDS_GPIO
|
|
+ select BRD_64MB
|
|
+ help
|
|
+ IP5170 Digital Picture Frame board, 8005-1113, IP5K-BEV-0011-13 v1.3
|
|
+
|
|
+config IP5160DEV
|
|
+ bool "IP5160Dev_Ver1Dot1"
|
|
+ select UBICOM32_V3
|
|
+ select BRD_64MB
|
|
+ help
|
|
+ Ubicom StreamEngine 5000 Development Board, IP5K-BDV-0004-11 v1.1
|
|
+
|
|
+config IP5160EVAL
|
|
+ bool "IP5160RGWEval_Ver2Rev2"
|
|
+ select UBICOM32_V3
|
|
+ select BRD_32MB
|
|
+ help
|
|
+ Ubicom StreamEngine 5000 RGW Evaluation Board, IP5K-RGW-0004-11 v2.2
|
|
+
|
|
--- /dev/null
|
|
+++ b/arch/ubicom32/mach-ip7k/Kconfig
|
|
@@ -0,0 +1,132 @@
|
|
+config IP7145DPF
|
|
+ bool "IP7145DPF"
|
|
+ select UBICOM32_V4
|
|
+ select UBICOM_INPUT
|
|
+ select UBICOM_INPUT_I2C
|
|
+ select RTC_CLASS
|
|
+ select RTC_DRV_S35390A
|
|
+ select I2C
|
|
+ select I2C_GPIO
|
|
+ select GPIO_PCA953X
|
|
+ select FB
|
|
+ select FB_UBICOM32
|
|
+ select BACKLIGHT_LCD_SUPPORT
|
|
+ select LCD_CLASS_DEVICE
|
|
+ select LCD_UBICOM32
|
|
+ select BACKLIGHT_CLASS_DEVICE
|
|
+ select BACKLIGHT_UBICOM32
|
|
+ select SND_UBI32
|
|
+ select MMC_UBICOM32
|
|
+ select MMC
|
|
+ select MMC_BLOCK
|
|
+ select BRD_64MB
|
|
+ help
|
|
+ IP7145 Digital Picture Frame reference design, supports:
|
|
+ 8007-0410 v1.0
|
|
+
|
|
+config IP7160RGW
|
|
+ bool "IP7160RGW"
|
|
+ select UBICOM32_V4
|
|
+ select UBICOM_INPUT
|
|
+ select NEW_LEDS
|
|
+ select LEDS_CLASS
|
|
+ select LEDS_GPIO
|
|
+ select BRD_64MB
|
|
+ select SPI
|
|
+ select SPI_UBICOM32_GPIO
|
|
+ select VLAN_8021Q
|
|
+ select UBICOM_SWITCH
|
|
+ select UBICOM_SWITCH_BCM539X
|
|
+ help
|
|
+ Ubicom IP7160 RGW Eval, supports:
|
|
+ 8007-0110 v1.0
|
|
+ 8007-0111 v1.1
|
|
+ 8007-0112 v1.2
|
|
+
|
|
+config IP7160BRINGUP
|
|
+ bool "IP7160BRINGUP"
|
|
+ select UBICOM32_V4
|
|
+ select NEW_LEDS
|
|
+ select LEDS_CLASS
|
|
+ select LEDS_GPIO
|
|
+ select BRD_64MB
|
|
+ help
|
|
+ Ubicom IP7160 Bringup, supports:
|
|
+ 8007-0010 v1.0
|
|
+
|
|
+config IP7160DPF
|
|
+ bool "IP7160DPF"
|
|
+ select UBICOM32_V4
|
|
+ select I2C
|
|
+ select I2C_GPIO
|
|
+ select FB
|
|
+ select FB_UBICOM32
|
|
+ select BACKLIGHT_LCD_SUPPORT
|
|
+ select BACKLIGHT_CLASS_DEVICE
|
|
+ select SND_UBI32
|
|
+ select SND_UBI32_AUDIO_CS4350
|
|
+ select UBICOM_HID
|
|
+ select BRD_64MB
|
|
+ help
|
|
+ IP7160 Digital Picture Frame board, supports:
|
|
+ 8007-0211 Rev 1.1
|
|
+
|
|
+config IP7500MODULE
|
|
+ bool "IP7500MODULE"
|
|
+ select UBICOM32_V4
|
|
+ select BRD_128MB
|
|
+ help
|
|
+ Ubicom IP7500 CPU Module board, supports:
|
|
+ 8007-0510 v1.0
|
|
+ 8007-0510A v1.0
|
|
+
|
|
+ Please see ip7500module.c for more details.
|
|
+
|
|
+config IP7500AV
|
|
+ bool "IP7500AV"
|
|
+ select UBICOM32_V4
|
|
+ select BRD_128MB
|
|
+ select I2C
|
|
+ select I2C_GPIO
|
|
+ select SND_UBI32
|
|
+ select SND_UBI32_AUDIO_CS4384
|
|
+ select FB
|
|
+ select FB_UBICOM32
|
|
+ help
|
|
+ Ubicom IP7500 Audio Video board, supports:
|
|
+ 8007-0810 v1.0
|
|
+
|
|
+ With Ubicom IP7500 CPU Module board:
|
|
+ 8007-0510 v1.0 -or-
|
|
+ 8007-0510A v1.0
|
|
+
|
|
+ Please see ip7500av.c for more details.
|
|
+
|
|
+config IP7500MEDIA
|
|
+ bool "IP7500MEDIA"
|
|
+ select UBICOM32_V4
|
|
+ select UBICOM_INPUT_I2C
|
|
+ select RTC_CLASS
|
|
+ select RTC_DRV_S35390A
|
|
+ select I2C
|
|
+ select I2C_GPIO
|
|
+ select GPIO_PCA953X
|
|
+ select FB
|
|
+ select FB_UBICOM32
|
|
+ select BACKLIGHT_LCD_SUPPORT
|
|
+ select LCD_CLASS_DEVICE
|
|
+ select LCD_UBICOM32
|
|
+ select BACKLIGHT_CLASS_DEVICE
|
|
+ select BACKLIGHT_UBICOM32
|
|
+ select SND_UBI32
|
|
+ select SND_UBI32_AUDIO_CS4350
|
|
+ select MMC_UBICOM32
|
|
+ select MMC
|
|
+ select MMC_BLOCK
|
|
+ select BRD_128MB
|
|
+ help
|
|
+ IP7500 Media Board w/ IP7500 CPU Module board, supports:
|
|
+ 8007-0610 v1.0 w/ 8007-0510 v1.0
|
|
+
|
|
+ Please see ip7500media.c for more details.
|
|
+
|
|
--- a/fs/Kconfig.binfmt
|
|
+++ b/fs/Kconfig.binfmt
|
|
@@ -30,7 +30,7 @@ config COMPAT_BINFMT_ELF
|
|
config BINFMT_ELF_FDPIC
|
|
bool "Kernel support for FDPIC ELF binaries"
|
|
default y
|
|
- depends on (FRV || BLACKFIN || (SUPERH32 && !MMU))
|
|
+ depends on (FRV || BLACKFIN || (SUPERH32 && !MMU) || UBICOM32)
|
|
help
|
|
ELF FDPIC binaries are based on ELF, but allow the individual load
|
|
segments of a binary to be located in memory independently of each
|
|
|