Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze
* 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze: (60 commits) microblaze_v8: Add MAINTAINERS fragment microblaze_v8: Uartlite for Microblaze microblaze_v8: Makefiles for Microblaze cpu microblaze_v8: Kconfig patches microblaze_v8: Interrupt handling and timer support microblaze_v8: syscalls.h microblaze_v8: pci headers microblaze_v8: Kbuild file microblaze_v8: string.h thread_info.h microblaze_v8: unistd.h microblaze_v8: fcntl.h sockios.h ucontext.h microblaze_v8: pool.h socket.h microblaze_v8: device.h param.h topology.h microblaze_v8: headers files entry.h current.h mman.h registers.h sembuf.h microblaze_v8: namei.h microblaze_v8: gpio.h, serial.h microblaze_v8: headers simple files - empty or redirect to asm-generic microblaze_v8: sigcontext.h siginfo.h microblaze_v8: termbits.h termios.h microblaze_v8: stats headers ...
This commit is contained in:
Коммит
cec5455e45
|
@ -2992,6 +2992,14 @@ L: linux-mtd@lists.infradead.org
|
||||||
T: git git://git.infradead.org/mtd-2.6.git
|
T: git git://git.infradead.org/mtd-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
MICROBLAZE ARCHITECTURE
|
||||||
|
P: Michal Simek
|
||||||
|
M: monstr@monstr.eu
|
||||||
|
L: microblaze-uclinux@itee.uq.edu.au
|
||||||
|
W: http://www.monstr.eu/fdt/
|
||||||
|
T: git git://git.monstr.eu/linux-2.6-microblaze.git
|
||||||
|
S: Supported
|
||||||
|
|
||||||
MICROTEK X6 SCANNER
|
MICROTEK X6 SCANNER
|
||||||
P: Oliver Neukum
|
P: Oliver Neukum
|
||||||
M: oliver@neukum.name
|
M: oliver@neukum.name
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
# For a description of the syntax of this configuration file,
|
||||||
|
# see Documentation/kbuild/kconfig-language.txt.
|
||||||
|
|
||||||
|
mainmenu "Linux/Microblaze Kernel Configuration"
|
||||||
|
|
||||||
|
config MICROBLAZE
|
||||||
|
def_bool y
|
||||||
|
select HAVE_LMB
|
||||||
|
|
||||||
|
config SWAP
|
||||||
|
def_bool n
|
||||||
|
|
||||||
|
config RWSEM_GENERIC_SPINLOCK
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config RWSEM_XCHGADD_ALGORITHM
|
||||||
|
bool
|
||||||
|
|
||||||
|
config ARCH_HAS_ILOG2_U32
|
||||||
|
def_bool n
|
||||||
|
|
||||||
|
config ARCH_HAS_ILOG2_U64
|
||||||
|
def_bool n
|
||||||
|
|
||||||
|
config GENERIC_FIND_NEXT_BIT
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_HWEIGHT
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_HARDIRQS
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_IRQ_PROBE
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_CALIBRATE_DELAY
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_TIME
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_TIME_VSYSCALL
|
||||||
|
def_bool n
|
||||||
|
|
||||||
|
config GENERIC_CLOCKEVENTS
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_HARDIRQS_NO__DO_IRQ
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config PCI
|
||||||
|
depends on !MMU
|
||||||
|
def_bool n
|
||||||
|
|
||||||
|
config NO_DMA
|
||||||
|
depends on !MMU
|
||||||
|
def_bool n
|
||||||
|
|
||||||
|
source "init/Kconfig"
|
||||||
|
|
||||||
|
source "kernel/Kconfig.freezer"
|
||||||
|
|
||||||
|
source "arch/microblaze/platform/Kconfig.platform"
|
||||||
|
|
||||||
|
menu "Processor type and features"
|
||||||
|
|
||||||
|
source kernel/time/Kconfig
|
||||||
|
|
||||||
|
source "kernel/Kconfig.preempt"
|
||||||
|
|
||||||
|
source "kernel/Kconfig.hz"
|
||||||
|
|
||||||
|
config MMU
|
||||||
|
def_bool n
|
||||||
|
|
||||||
|
config NO_MMU
|
||||||
|
bool
|
||||||
|
depends on !MMU
|
||||||
|
default y
|
||||||
|
|
||||||
|
comment "Boot options"
|
||||||
|
|
||||||
|
config CMDLINE_BOOL
|
||||||
|
bool "Default bootloader kernel arguments"
|
||||||
|
|
||||||
|
config CMDLINE
|
||||||
|
string "Default kernel command string"
|
||||||
|
depends on CMDLINE_BOOL
|
||||||
|
default "console=ttyUL0,115200"
|
||||||
|
help
|
||||||
|
On some architectures there is currently no way for the boot loader
|
||||||
|
to pass arguments to the kernel. For these architectures, you should
|
||||||
|
supply some command-line options at build time by entering them
|
||||||
|
here.
|
||||||
|
|
||||||
|
config CMDLINE_FORCE
|
||||||
|
bool "Force default kernel command string"
|
||||||
|
depends on CMDLINE_BOOL
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Set this to have arguments from the default kernel command string
|
||||||
|
override those passed by the boot loader.
|
||||||
|
|
||||||
|
config OF
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config OF_DEVICE
|
||||||
|
def_bool y
|
||||||
|
|
||||||
|
config PROC_DEVICETREE
|
||||||
|
bool "Support for device tree in /proc"
|
||||||
|
depends on PROC_FS
|
||||||
|
help
|
||||||
|
This option adds a device-tree directory under /proc which contains
|
||||||
|
an image of the device tree that the kernel copies from Open
|
||||||
|
Firmware or other boot firmware. If unsure, say Y here.
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
source "mm/Kconfig"
|
||||||
|
|
||||||
|
menu "Exectuable file formats"
|
||||||
|
|
||||||
|
source "fs/Kconfig.binfmt"
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
|
source "fs/Kconfig"
|
||||||
|
|
||||||
|
source "arch/microblaze/Kconfig.debug"
|
||||||
|
|
||||||
|
source "security/Kconfig"
|
||||||
|
|
||||||
|
source "crypto/Kconfig"
|
||||||
|
|
||||||
|
source "lib/Kconfig"
|
|
@ -0,0 +1,26 @@
|
||||||
|
# For a description of the syntax of this configuration file,
|
||||||
|
# see Documentation/kbuild/kconfig-language.txt.
|
||||||
|
|
||||||
|
menu "Kernel hacking"
|
||||||
|
|
||||||
|
source "lib/Kconfig.debug"
|
||||||
|
|
||||||
|
config EARLY_PRINTK
|
||||||
|
bool "Early printk function for kernel"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This option turns on/off early printk messages to console.
|
||||||
|
First Uartlite node is taken.
|
||||||
|
|
||||||
|
config HEART_BEAT
|
||||||
|
bool "Heart beat function for kernel"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This option turns on/off heart beat kernel functionality.
|
||||||
|
First GPIO node is taken.
|
||||||
|
|
||||||
|
config DEBUG_BOOTMEM
|
||||||
|
depends on DEBUG_KERNEL
|
||||||
|
bool "Debug BOOTMEM initialization"
|
||||||
|
|
||||||
|
endmenu
|
|
@ -0,0 +1,69 @@
|
||||||
|
UTS_SYSNAME = -DUTS_SYSNAME=\"uClinux\"
|
||||||
|
|
||||||
|
# What CPU vesion are we building for, and crack it open
|
||||||
|
# as major.minor.rev
|
||||||
|
CPU_VER=$(subst ",,$(CONFIG_XILINX_MICROBLAZE0_HW_VER) )
|
||||||
|
CPU_MAJOR=$(shell echo $(CPU_VER) | cut -d '.' -f 1)
|
||||||
|
CPU_MINOR=$(shell echo $(CPU_VER) | cut -d '.' -f 2)
|
||||||
|
CPU_REV=$(shell echo $(CPU_VER) | cut -d '.' -f 3)
|
||||||
|
|
||||||
|
export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
|
||||||
|
|
||||||
|
# Use cpu-related CONFIG_ vars to set compile options.
|
||||||
|
|
||||||
|
# Work out HW multipler support. This is icky.
|
||||||
|
# 1. Spartan2 has no HW multiplers.
|
||||||
|
# 2. MicroBlaze v3.x always uses them, except in Spartan 2
|
||||||
|
# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
|
||||||
|
ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
|
||||||
|
ifeq ($(CPU_MAJOR),3)
|
||||||
|
CPUFLAGS-1 += -mno-xl-soft-mul
|
||||||
|
else
|
||||||
|
# USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul support.
|
||||||
|
CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += -mxl-multiply-high
|
||||||
|
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
|
||||||
|
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
|
||||||
|
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP) += -mxl-pattern-compare
|
||||||
|
|
||||||
|
CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
|
||||||
|
|
||||||
|
# The various CONFIG_XILINX cpu features options are integers 0/1/2...
|
||||||
|
# rather than bools y/n
|
||||||
|
CFLAGS += $(CPUFLAGS-1)
|
||||||
|
CFLAGS += $(CPUFLAGS-2)
|
||||||
|
|
||||||
|
# r31 holds current when in kernel mode
|
||||||
|
CFLAGS += -ffixed-r31
|
||||||
|
|
||||||
|
LDFLAGS_BLOB := --format binary --oformat elf32-microblaze
|
||||||
|
|
||||||
|
LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
|
||||||
|
|
||||||
|
head-y := arch/microblaze/kernel/head.o
|
||||||
|
libs-y += arch/microblaze/lib/ $(LIBGCC)
|
||||||
|
core-y += arch/microblaze/kernel/ arch/microblaze/mm/ \
|
||||||
|
arch/microblaze/platform/
|
||||||
|
|
||||||
|
boot := arch/$(ARCH)/boot
|
||||||
|
|
||||||
|
# defines filename extension depending memory management type
|
||||||
|
ifeq ($(CONFIG_MMU),)
|
||||||
|
MMUEXT := -nommu
|
||||||
|
endif
|
||||||
|
export MMUEXT
|
||||||
|
|
||||||
|
all: linux.bin
|
||||||
|
|
||||||
|
archclean:
|
||||||
|
$(Q)$(MAKE) $(clean)=$(boot)
|
||||||
|
|
||||||
|
linux.bin linux.bin.gz: vmlinux
|
||||||
|
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
||||||
|
|
||||||
|
define archhelp
|
||||||
|
echo '* linux.bin - Create raw binary'
|
||||||
|
echo ' linux.bin.gz - Create compressed raw binary'
|
||||||
|
endef
|
|
@ -0,0 +1,17 @@
|
||||||
|
#
|
||||||
|
# arch/microblaze/boot/Makefile
|
||||||
|
#
|
||||||
|
|
||||||
|
targets := linux.bin linux.bin.gz
|
||||||
|
|
||||||
|
OBJCOPYFLAGS_linux.bin := -O binary
|
||||||
|
|
||||||
|
$(obj)/linux.bin: vmlinux FORCE
|
||||||
|
$(call if_changed,objcopy)
|
||||||
|
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
|
||||||
|
|
||||||
|
$(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
|
||||||
|
$(call if_changed,gzip)
|
||||||
|
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
|
||||||
|
|
||||||
|
clean-kernel += linux.bin linux.bin.gz
|
|
@ -0,0 +1,804 @@
|
||||||
|
#
|
||||||
|
# Automatically generated make config: don't edit
|
||||||
|
# Linux kernel version: 2.6.29
|
||||||
|
# Tue Mar 24 10:23:20 2009
|
||||||
|
#
|
||||||
|
CONFIG_MICROBLAZE=y
|
||||||
|
# CONFIG_SWAP is not set
|
||||||
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
|
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||||
|
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||||
|
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||||
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
|
CONFIG_GENERIC_TIME=y
|
||||||
|
# CONFIG_GENERIC_TIME_VSYSCALL is not set
|
||||||
|
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||||
|
# CONFIG_PCI is not set
|
||||||
|
# CONFIG_NO_DMA is not set
|
||||||
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
|
||||||
|
#
|
||||||
|
# General setup
|
||||||
|
#
|
||||||
|
CONFIG_EXPERIMENTAL=y
|
||||||
|
CONFIG_BROKEN_ON_SMP=y
|
||||||
|
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
|
CONFIG_LOCALVERSION=""
|
||||||
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_SYSVIPC_SYSCTL=y
|
||||||
|
CONFIG_POSIX_MQUEUE=y
|
||||||
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
|
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||||
|
# CONFIG_TASKSTATS is not set
|
||||||
|
# CONFIG_AUDIT is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# RCU Subsystem
|
||||||
|
#
|
||||||
|
CONFIG_CLASSIC_RCU=y
|
||||||
|
# CONFIG_TREE_RCU is not set
|
||||||
|
# CONFIG_PREEMPT_RCU is not set
|
||||||
|
# CONFIG_TREE_RCU_TRACE is not set
|
||||||
|
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||||
|
CONFIG_IKCONFIG=y
|
||||||
|
CONFIG_IKCONFIG_PROC=y
|
||||||
|
CONFIG_LOG_BUF_SHIFT=17
|
||||||
|
# CONFIG_GROUP_SCHED is not set
|
||||||
|
# CONFIG_CGROUPS is not set
|
||||||
|
CONFIG_SYSFS_DEPRECATED=y
|
||||||
|
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||||
|
# CONFIG_RELAY is not set
|
||||||
|
# CONFIG_NAMESPACES is not set
|
||||||
|
# CONFIG_BLK_DEV_INITRD is not set
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
CONFIG_SYSCTL=y
|
||||||
|
CONFIG_ANON_INODES=y
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
|
CONFIG_SYSCTL_SYSCALL=y
|
||||||
|
CONFIG_KALLSYMS=y
|
||||||
|
CONFIG_KALLSYMS_ALL=y
|
||||||
|
CONFIG_KALLSYMS_EXTRA_PASS=y
|
||||||
|
# CONFIG_HOTPLUG is not set
|
||||||
|
CONFIG_PRINTK=y
|
||||||
|
CONFIG_BUG=y
|
||||||
|
CONFIG_ELF_CORE=y
|
||||||
|
# CONFIG_BASE_FULL is not set
|
||||||
|
CONFIG_FUTEX=y
|
||||||
|
CONFIG_EPOLL=y
|
||||||
|
CONFIG_SIGNALFD=y
|
||||||
|
CONFIG_TIMERFD=y
|
||||||
|
CONFIG_EVENTFD=y
|
||||||
|
CONFIG_AIO=y
|
||||||
|
CONFIG_VM_EVENT_COUNTERS=y
|
||||||
|
CONFIG_COMPAT_BRK=y
|
||||||
|
CONFIG_SLAB=y
|
||||||
|
# CONFIG_SLUB is not set
|
||||||
|
# CONFIG_SLOB is not set
|
||||||
|
# CONFIG_PROFILING is not set
|
||||||
|
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||||
|
CONFIG_SLABINFO=y
|
||||||
|
CONFIG_RT_MUTEXES=y
|
||||||
|
CONFIG_BASE_SMALL=1
|
||||||
|
CONFIG_MODULES=y
|
||||||
|
# CONFIG_MODULE_FORCE_LOAD is not set
|
||||||
|
CONFIG_MODULE_UNLOAD=y
|
||||||
|
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||||
|
# CONFIG_MODVERSIONS is not set
|
||||||
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
|
CONFIG_BLOCK=y
|
||||||
|
# CONFIG_LBD is not set
|
||||||
|
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||||
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
# CONFIG_DEFAULT_AS is not set
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
CONFIG_DEFAULT_CFQ=y
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||||
|
# CONFIG_FREEZER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Platform options
|
||||||
|
#
|
||||||
|
CONFIG_PLATFORM_GENERIC=y
|
||||||
|
# CONFIG_SELFMOD is not set
|
||||||
|
# CONFIG_OPT_LIB_FUNCTION is not set
|
||||||
|
# CONFIG_ALLOW_EDIT_AUTO is not set
|
||||||
|
CONFIG_KERNEL_BASE_ADDR=0x90000000
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_FAMILY="virtex5"
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_USE_DIV=1
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_USE_FPU=2
|
||||||
|
CONFIG_XILINX_MICROBLAZE0_HW_VER="7.10.d"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Processor type and features
|
||||||
|
#
|
||||||
|
CONFIG_TICK_ONESHOT=y
|
||||||
|
# CONFIG_NO_HZ is not set
|
||||||
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||||
|
CONFIG_PREEMPT_NONE=y
|
||||||
|
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||||
|
# CONFIG_PREEMPT is not set
|
||||||
|
CONFIG_HZ_100=y
|
||||||
|
# CONFIG_HZ_250 is not set
|
||||||
|
# CONFIG_HZ_300 is not set
|
||||||
|
# CONFIG_HZ_1000 is not set
|
||||||
|
CONFIG_HZ=100
|
||||||
|
CONFIG_SCHED_HRTICK=y
|
||||||
|
# CONFIG_MMU is not set
|
||||||
|
CONFIG_NO_MMU=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Boot options
|
||||||
|
#
|
||||||
|
CONFIG_CMDLINE_BOOL=y
|
||||||
|
CONFIG_CMDLINE="console=ttyUL0,115200"
|
||||||
|
# CONFIG_CMDLINE_FORCE is not set
|
||||||
|
CONFIG_OF=y
|
||||||
|
CONFIG_OF_DEVICE=y
|
||||||
|
CONFIG_PROC_DEVICETREE=y
|
||||||
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
|
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||||
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
|
CONFIG_FLATMEM=y
|
||||||
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
|
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||||
|
CONFIG_ZONE_DMA_FLAG=0
|
||||||
|
CONFIG_VIRT_TO_BUS=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Exectuable file formats
|
||||||
|
#
|
||||||
|
CONFIG_BINFMT_FLAT=y
|
||||||
|
# CONFIG_BINFMT_ZFLAT is not set
|
||||||
|
# CONFIG_BINFMT_SHARED_FLAT is not set
|
||||||
|
# CONFIG_HAVE_AOUT is not set
|
||||||
|
# CONFIG_BINFMT_MISC is not set
|
||||||
|
CONFIG_NET=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Networking options
|
||||||
|
#
|
||||||
|
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
# CONFIG_PACKET_MMAP is not set
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_XFRM=y
|
||||||
|
# CONFIG_XFRM_USER is not set
|
||||||
|
# CONFIG_XFRM_SUB_POLICY is not set
|
||||||
|
# CONFIG_XFRM_MIGRATE is not set
|
||||||
|
# CONFIG_XFRM_STATISTICS is not set
|
||||||
|
# CONFIG_NET_KEY is not set
|
||||||
|
CONFIG_INET=y
|
||||||
|
# CONFIG_IP_MULTICAST is not set
|
||||||
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
|
# CONFIG_IP_PNP is not set
|
||||||
|
# CONFIG_NET_IPIP is not set
|
||||||
|
# CONFIG_NET_IPGRE is not set
|
||||||
|
# CONFIG_ARPD is not set
|
||||||
|
# CONFIG_SYN_COOKIES is not set
|
||||||
|
# CONFIG_INET_AH is not set
|
||||||
|
# CONFIG_INET_ESP is not set
|
||||||
|
# CONFIG_INET_IPCOMP is not set
|
||||||
|
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||||
|
# CONFIG_INET_TUNNEL is not set
|
||||||
|
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||||
|
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||||
|
CONFIG_INET_XFRM_MODE_BEET=y
|
||||||
|
# CONFIG_INET_LRO is not set
|
||||||
|
CONFIG_INET_DIAG=y
|
||||||
|
CONFIG_INET_TCP_DIAG=y
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
CONFIG_TCP_CONG_CUBIC=y
|
||||||
|
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||||
|
# CONFIG_TCP_MD5SIG is not set
|
||||||
|
# CONFIG_IPV6 is not set
|
||||||
|
# CONFIG_NETWORK_SECMARK is not set
|
||||||
|
# CONFIG_NETFILTER is not set
|
||||||
|
# CONFIG_IP_DCCP is not set
|
||||||
|
# CONFIG_IP_SCTP is not set
|
||||||
|
# CONFIG_TIPC is not set
|
||||||
|
# CONFIG_ATM is not set
|
||||||
|
# CONFIG_BRIDGE is not set
|
||||||
|
# CONFIG_NET_DSA is not set
|
||||||
|
# CONFIG_VLAN_8021Q is not set
|
||||||
|
# CONFIG_DECNET is not set
|
||||||
|
# CONFIG_LLC2 is not set
|
||||||
|
# CONFIG_IPX is not set
|
||||||
|
# CONFIG_ATALK is not set
|
||||||
|
# CONFIG_X25 is not set
|
||||||
|
# CONFIG_LAPB is not set
|
||||||
|
# CONFIG_ECONET is not set
|
||||||
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
# CONFIG_NET_SCHED is not set
|
||||||
|
# CONFIG_DCB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Network testing
|
||||||
|
#
|
||||||
|
# CONFIG_NET_PKTGEN is not set
|
||||||
|
# CONFIG_HAMRADIO is not set
|
||||||
|
# CONFIG_CAN is not set
|
||||||
|
# CONFIG_IRDA is not set
|
||||||
|
# CONFIG_BT is not set
|
||||||
|
# CONFIG_AF_RXRPC is not set
|
||||||
|
# CONFIG_PHONET is not set
|
||||||
|
CONFIG_WIRELESS=y
|
||||||
|
# CONFIG_CFG80211 is not set
|
||||||
|
CONFIG_WIRELESS_OLD_REGULATORY=y
|
||||||
|
# CONFIG_WIRELESS_EXT is not set
|
||||||
|
# CONFIG_LIB80211 is not set
|
||||||
|
# CONFIG_MAC80211 is not set
|
||||||
|
# CONFIG_WIMAX is not set
|
||||||
|
# CONFIG_RFKILL is not set
|
||||||
|
# CONFIG_NET_9P is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Device Drivers
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generic Driver Options
|
||||||
|
#
|
||||||
|
CONFIG_STANDALONE=y
|
||||||
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
# CONFIG_DEBUG_DEVRES is not set
|
||||||
|
# CONFIG_SYS_HYPERVISOR is not set
|
||||||
|
# CONFIG_CONNECTOR is not set
|
||||||
|
CONFIG_MTD=y
|
||||||
|
# CONFIG_MTD_DEBUG is not set
|
||||||
|
CONFIG_MTD_CONCAT=y
|
||||||
|
CONFIG_MTD_PARTITIONS=y
|
||||||
|
# CONFIG_MTD_TESTS is not set
|
||||||
|
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||||
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
|
# CONFIG_MTD_AR7_PARTS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# User Modules And Translation Layers
|
||||||
|
#
|
||||||
|
CONFIG_MTD_CHAR=y
|
||||||
|
CONFIG_MTD_BLKDEVS=y
|
||||||
|
CONFIG_MTD_BLOCK=y
|
||||||
|
# CONFIG_FTL is not set
|
||||||
|
# CONFIG_NFTL is not set
|
||||||
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
# CONFIG_SSFDC is not set
|
||||||
|
# CONFIG_MTD_OOPS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# RAM/ROM/Flash chip drivers
|
||||||
|
#
|
||||||
|
CONFIG_MTD_CFI=y
|
||||||
|
# CONFIG_MTD_JEDECPROBE is not set
|
||||||
|
CONFIG_MTD_GEN_PROBE=y
|
||||||
|
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
||||||
|
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||||
|
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||||
|
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||||
|
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||||
|
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||||
|
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||||
|
CONFIG_MTD_CFI_I1=y
|
||||||
|
CONFIG_MTD_CFI_I2=y
|
||||||
|
# CONFIG_MTD_CFI_I4 is not set
|
||||||
|
# CONFIG_MTD_CFI_I8 is not set
|
||||||
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
|
# CONFIG_MTD_CFI_STAA is not set
|
||||||
|
CONFIG_MTD_CFI_UTIL=y
|
||||||
|
CONFIG_MTD_RAM=y
|
||||||
|
# CONFIG_MTD_ROM is not set
|
||||||
|
# CONFIG_MTD_ABSENT is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Mapping drivers for chip access
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||||
|
# CONFIG_MTD_PHYSMAP is not set
|
||||||
|
CONFIG_MTD_UCLINUX=y
|
||||||
|
# CONFIG_MTD_PLATRAM is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Self-contained MTD device drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_SLRAM is not set
|
||||||
|
# CONFIG_MTD_PHRAM is not set
|
||||||
|
# CONFIG_MTD_MTDRAM is not set
|
||||||
|
# CONFIG_MTD_BLOCK2MTD is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Disk-On-Chip Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_DOC2000 is not set
|
||||||
|
# CONFIG_MTD_DOC2001 is not set
|
||||||
|
# CONFIG_MTD_DOC2001PLUS is not set
|
||||||
|
# CONFIG_MTD_NAND is not set
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# LPDDR flash memory drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_LPDDR is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# UBI - Unsorted block images
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_UBI is not set
|
||||||
|
# CONFIG_PARPORT is not set
|
||||||
|
CONFIG_BLK_DEV=y
|
||||||
|
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||||
|
# CONFIG_BLK_DEV_LOOP is not set
|
||||||
|
CONFIG_BLK_DEV_NBD=y
|
||||||
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
|
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||||
|
# CONFIG_BLK_DEV_XIP is not set
|
||||||
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
CONFIG_MISC_DEVICES=y
|
||||||
|
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||||
|
# CONFIG_C2PORT is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# EEPROM support
|
||||||
|
#
|
||||||
|
# CONFIG_EEPROM_93CX6 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# SCSI device support
|
||||||
|
#
|
||||||
|
# CONFIG_RAID_ATTRS is not set
|
||||||
|
# CONFIG_SCSI is not set
|
||||||
|
# CONFIG_SCSI_DMA is not set
|
||||||
|
# CONFIG_SCSI_NETLINK is not set
|
||||||
|
# CONFIG_ATA is not set
|
||||||
|
# CONFIG_MD is not set
|
||||||
|
CONFIG_NETDEVICES=y
|
||||||
|
# CONFIG_DUMMY is not set
|
||||||
|
# CONFIG_BONDING is not set
|
||||||
|
# CONFIG_MACVLAN is not set
|
||||||
|
# CONFIG_EQUALIZER is not set
|
||||||
|
# CONFIG_TUN is not set
|
||||||
|
# CONFIG_VETH is not set
|
||||||
|
# CONFIG_PHYLIB is not set
|
||||||
|
CONFIG_NET_ETHERNET=y
|
||||||
|
# CONFIG_MII is not set
|
||||||
|
# CONFIG_DNET is not set
|
||||||
|
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||||
|
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||||
|
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||||
|
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||||
|
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
|
||||||
|
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
|
||||||
|
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
|
||||||
|
# CONFIG_B44 is not set
|
||||||
|
CONFIG_NETDEV_1000=y
|
||||||
|
CONFIG_NETDEV_10000=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Wireless LAN
|
||||||
|
#
|
||||||
|
# CONFIG_WLAN_PRE80211 is not set
|
||||||
|
# CONFIG_WLAN_80211 is not set
|
||||||
|
# CONFIG_IWLWIFI_LEDS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||||
|
#
|
||||||
|
# CONFIG_WAN is not set
|
||||||
|
# CONFIG_PPP is not set
|
||||||
|
# CONFIG_SLIP is not set
|
||||||
|
# CONFIG_NETCONSOLE is not set
|
||||||
|
# CONFIG_NETPOLL is not set
|
||||||
|
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||||
|
# CONFIG_ISDN is not set
|
||||||
|
# CONFIG_PHONE is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Input device support
|
||||||
|
#
|
||||||
|
# CONFIG_INPUT is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hardware I/O ports
|
||||||
|
#
|
||||||
|
# CONFIG_SERIO is not set
|
||||||
|
# CONFIG_GAMEPORT is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Character devices
|
||||||
|
#
|
||||||
|
# CONFIG_VT is not set
|
||||||
|
CONFIG_DEVKMEM=y
|
||||||
|
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Serial drivers
|
||||||
|
#
|
||||||
|
# CONFIG_SERIAL_8250 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Non-8250 serial port support
|
||||||
|
#
|
||||||
|
CONFIG_SERIAL_UARTLITE=y
|
||||||
|
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_CORE=y
|
||||||
|
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||||
|
CONFIG_UNIX98_PTYS=y
|
||||||
|
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||||
|
CONFIG_LEGACY_PTYS=y
|
||||||
|
CONFIG_LEGACY_PTY_COUNT=256
|
||||||
|
# CONFIG_IPMI_HANDLER is not set
|
||||||
|
CONFIG_HW_RANDOM=y
|
||||||
|
# CONFIG_RTC is not set
|
||||||
|
# CONFIG_GEN_RTC is not set
|
||||||
|
# CONFIG_R3964 is not set
|
||||||
|
# CONFIG_RAW_DRIVER is not set
|
||||||
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_I2C is not set
|
||||||
|
# CONFIG_SPI is not set
|
||||||
|
# CONFIG_W1 is not set
|
||||||
|
# CONFIG_POWER_SUPPLY is not set
|
||||||
|
# CONFIG_HWMON is not set
|
||||||
|
# CONFIG_THERMAL is not set
|
||||||
|
# CONFIG_THERMAL_HWMON is not set
|
||||||
|
# CONFIG_WATCHDOG is not set
|
||||||
|
CONFIG_SSB_POSSIBLE=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sonics Silicon Backplane
|
||||||
|
#
|
||||||
|
# CONFIG_SSB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multifunction device drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MFD_CORE is not set
|
||||||
|
# CONFIG_MFD_SM501 is not set
|
||||||
|
# CONFIG_HTC_PASIC3 is not set
|
||||||
|
# CONFIG_MFD_TMIO is not set
|
||||||
|
# CONFIG_REGULATOR is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia devices
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia core support
|
||||||
|
#
|
||||||
|
# CONFIG_VIDEO_DEV is not set
|
||||||
|
# CONFIG_DVB_CORE is not set
|
||||||
|
# CONFIG_VIDEO_MEDIA is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia drivers
|
||||||
|
#
|
||||||
|
CONFIG_DAB=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Graphics support
|
||||||
|
#
|
||||||
|
# CONFIG_VGASTATE is not set
|
||||||
|
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||||
|
# CONFIG_FB is not set
|
||||||
|
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Display device support
|
||||||
|
#
|
||||||
|
# CONFIG_DISPLAY_SUPPORT is not set
|
||||||
|
# CONFIG_SOUND is not set
|
||||||
|
CONFIG_USB_SUPPORT=y
|
||||||
|
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||||
|
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||||
|
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||||
|
# CONFIG_USB_OTG_WHITELIST is not set
|
||||||
|
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable Host or Gadget support to see Inventra options
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||||
|
#
|
||||||
|
# CONFIG_USB_GADGET is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OTG and related infrastructure
|
||||||
|
#
|
||||||
|
# CONFIG_MMC is not set
|
||||||
|
# CONFIG_MEMSTICK is not set
|
||||||
|
# CONFIG_NEW_LEDS is not set
|
||||||
|
# CONFIG_ACCESSIBILITY is not set
|
||||||
|
# CONFIG_RTC_CLASS is not set
|
||||||
|
# CONFIG_DMADEVICES is not set
|
||||||
|
# CONFIG_UIO is not set
|
||||||
|
# CONFIG_STAGING is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# File systems
|
||||||
|
#
|
||||||
|
CONFIG_EXT2_FS=y
|
||||||
|
# CONFIG_EXT2_FS_XATTR is not set
|
||||||
|
# CONFIG_EXT3_FS is not set
|
||||||
|
# CONFIG_EXT4_FS is not set
|
||||||
|
# CONFIG_REISERFS_FS is not set
|
||||||
|
# CONFIG_JFS_FS is not set
|
||||||
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
CONFIG_FILE_LOCKING=y
|
||||||
|
# CONFIG_XFS_FS is not set
|
||||||
|
# CONFIG_OCFS2_FS is not set
|
||||||
|
# CONFIG_BTRFS_FS is not set
|
||||||
|
# CONFIG_DNOTIFY is not set
|
||||||
|
# CONFIG_INOTIFY is not set
|
||||||
|
# CONFIG_QUOTA is not set
|
||||||
|
# CONFIG_AUTOFS_FS is not set
|
||||||
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
# CONFIG_FUSE_FS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# CD-ROM/DVD Filesystems
|
||||||
|
#
|
||||||
|
# CONFIG_ISO9660_FS is not set
|
||||||
|
# CONFIG_UDF_FS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DOS/FAT/NT Filesystems
|
||||||
|
#
|
||||||
|
# CONFIG_MSDOS_FS is not set
|
||||||
|
# CONFIG_VFAT_FS is not set
|
||||||
|
# CONFIG_NTFS_FS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Pseudo filesystems
|
||||||
|
#
|
||||||
|
CONFIG_PROC_FS=y
|
||||||
|
CONFIG_PROC_SYSCTL=y
|
||||||
|
CONFIG_SYSFS=y
|
||||||
|
# CONFIG_TMPFS is not set
|
||||||
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
|
# CONFIG_CONFIGFS_FS is not set
|
||||||
|
CONFIG_MISC_FILESYSTEMS=y
|
||||||
|
# CONFIG_ADFS_FS is not set
|
||||||
|
# CONFIG_AFFS_FS is not set
|
||||||
|
# CONFIG_HFS_FS is not set
|
||||||
|
# CONFIG_HFSPLUS_FS is not set
|
||||||
|
# CONFIG_BEFS_FS is not set
|
||||||
|
# CONFIG_BFS_FS is not set
|
||||||
|
# CONFIG_EFS_FS is not set
|
||||||
|
# CONFIG_JFFS2_FS is not set
|
||||||
|
CONFIG_CRAMFS=y
|
||||||
|
# CONFIG_SQUASHFS is not set
|
||||||
|
# CONFIG_VXFS_FS is not set
|
||||||
|
# CONFIG_MINIX_FS is not set
|
||||||
|
# CONFIG_OMFS_FS is not set
|
||||||
|
# CONFIG_HPFS_FS is not set
|
||||||
|
# CONFIG_QNX4FS_FS is not set
|
||||||
|
CONFIG_ROMFS_FS=y
|
||||||
|
# CONFIG_SYSV_FS is not set
|
||||||
|
# CONFIG_UFS_FS is not set
|
||||||
|
CONFIG_NETWORK_FILESYSTEMS=y
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
|
# CONFIG_NFS_V4 is not set
|
||||||
|
# CONFIG_NFSD is not set
|
||||||
|
CONFIG_LOCKD=y
|
||||||
|
CONFIG_LOCKD_V4=y
|
||||||
|
CONFIG_NFS_ACL_SUPPORT=y
|
||||||
|
CONFIG_NFS_COMMON=y
|
||||||
|
CONFIG_SUNRPC=y
|
||||||
|
# CONFIG_SUNRPC_REGISTER_V4 is not set
|
||||||
|
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||||
|
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||||
|
# CONFIG_SMB_FS is not set
|
||||||
|
# CONFIG_CIFS is not set
|
||||||
|
# CONFIG_NCP_FS is not set
|
||||||
|
# CONFIG_CODA_FS is not set
|
||||||
|
# CONFIG_AFS_FS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Partition Types
|
||||||
|
#
|
||||||
|
# CONFIG_PARTITION_ADVANCED is not set
|
||||||
|
CONFIG_MSDOS_PARTITION=y
|
||||||
|
# CONFIG_NLS is not set
|
||||||
|
# CONFIG_DLM is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Kernel hacking
|
||||||
|
#
|
||||||
|
# CONFIG_PRINTK_TIME is not set
|
||||||
|
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||||
|
CONFIG_ENABLE_MUST_CHECK=y
|
||||||
|
CONFIG_FRAME_WARN=1024
|
||||||
|
# CONFIG_MAGIC_SYSRQ is not set
|
||||||
|
CONFIG_UNUSED_SYMBOLS=y
|
||||||
|
CONFIG_DEBUG_FS=y
|
||||||
|
# CONFIG_HEADERS_CHECK is not set
|
||||||
|
CONFIG_DEBUG_KERNEL=y
|
||||||
|
CONFIG_DEBUG_SHIRQ=y
|
||||||
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
|
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
|
||||||
|
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
|
||||||
|
CONFIG_SCHED_DEBUG=y
|
||||||
|
CONFIG_SCHEDSTATS=y
|
||||||
|
CONFIG_TIMER_STATS=y
|
||||||
|
CONFIG_DEBUG_OBJECTS=y
|
||||||
|
CONFIG_DEBUG_OBJECTS_SELFTEST=y
|
||||||
|
CONFIG_DEBUG_OBJECTS_FREE=y
|
||||||
|
CONFIG_DEBUG_OBJECTS_TIMERS=y
|
||||||
|
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
||||||
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
|
# CONFIG_RT_MUTEX_TESTER is not set
|
||||||
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
# CONFIG_DEBUG_MUTEXES is not set
|
||||||
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
|
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||||
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
|
CONFIG_DEBUG_INFO=y
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
|
# CONFIG_DEBUG_NOMMU_REGIONS is not set
|
||||||
|
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||||
|
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||||
|
CONFIG_DEBUG_LIST=y
|
||||||
|
CONFIG_DEBUG_SG=y
|
||||||
|
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||||
|
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
|
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||||
|
# CONFIG_BACKTRACE_SELF_TEST is not set
|
||||||
|
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||||
|
# CONFIG_FAULT_INJECTION is not set
|
||||||
|
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Tracers
|
||||||
|
#
|
||||||
|
# CONFIG_SCHED_TRACER is not set
|
||||||
|
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||||
|
# CONFIG_BOOT_TRACER is not set
|
||||||
|
# CONFIG_TRACE_BRANCH_PROFILING is not set
|
||||||
|
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||||
|
# CONFIG_SAMPLES is not set
|
||||||
|
CONFIG_EARLY_PRINTK=y
|
||||||
|
CONFIG_HEART_BEAT=y
|
||||||
|
# CONFIG_DEBUG_BOOTMEM is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Security options
|
||||||
|
#
|
||||||
|
# CONFIG_KEYS is not set
|
||||||
|
# CONFIG_SECURITY is not set
|
||||||
|
# CONFIG_SECURITYFS is not set
|
||||||
|
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||||
|
CONFIG_CRYPTO=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Crypto core or helper
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_FIPS is not set
|
||||||
|
# CONFIG_CRYPTO_MANAGER is not set
|
||||||
|
# CONFIG_CRYPTO_MANAGER2 is not set
|
||||||
|
# CONFIG_CRYPTO_GF128MUL is not set
|
||||||
|
# CONFIG_CRYPTO_NULL is not set
|
||||||
|
# CONFIG_CRYPTO_CRYPTD is not set
|
||||||
|
# CONFIG_CRYPTO_AUTHENC is not set
|
||||||
|
# CONFIG_CRYPTO_TEST is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Authenticated Encryption with Associated Data
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_CCM is not set
|
||||||
|
# CONFIG_CRYPTO_GCM is not set
|
||||||
|
# CONFIG_CRYPTO_SEQIV is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block modes
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_CBC is not set
|
||||||
|
# CONFIG_CRYPTO_CTR is not set
|
||||||
|
# CONFIG_CRYPTO_CTS is not set
|
||||||
|
# CONFIG_CRYPTO_ECB is not set
|
||||||
|
# CONFIG_CRYPTO_LRW is not set
|
||||||
|
# CONFIG_CRYPTO_PCBC is not set
|
||||||
|
# CONFIG_CRYPTO_XTS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hash modes
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_HMAC is not set
|
||||||
|
# CONFIG_CRYPTO_XCBC is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Digest
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_CRC32C is not set
|
||||||
|
# CONFIG_CRYPTO_MD4 is not set
|
||||||
|
# CONFIG_CRYPTO_MD5 is not set
|
||||||
|
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||||
|
# CONFIG_CRYPTO_RMD128 is not set
|
||||||
|
# CONFIG_CRYPTO_RMD160 is not set
|
||||||
|
# CONFIG_CRYPTO_RMD256 is not set
|
||||||
|
# CONFIG_CRYPTO_RMD320 is not set
|
||||||
|
# CONFIG_CRYPTO_SHA1 is not set
|
||||||
|
# CONFIG_CRYPTO_SHA256 is not set
|
||||||
|
# CONFIG_CRYPTO_SHA512 is not set
|
||||||
|
# CONFIG_CRYPTO_TGR192 is not set
|
||||||
|
# CONFIG_CRYPTO_WP512 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ciphers
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_AES is not set
|
||||||
|
# CONFIG_CRYPTO_ANUBIS is not set
|
||||||
|
# CONFIG_CRYPTO_ARC4 is not set
|
||||||
|
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||||
|
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||||
|
# CONFIG_CRYPTO_CAST5 is not set
|
||||||
|
# CONFIG_CRYPTO_CAST6 is not set
|
||||||
|
# CONFIG_CRYPTO_DES is not set
|
||||||
|
# CONFIG_CRYPTO_FCRYPT is not set
|
||||||
|
# CONFIG_CRYPTO_KHAZAD is not set
|
||||||
|
# CONFIG_CRYPTO_SALSA20 is not set
|
||||||
|
# CONFIG_CRYPTO_SEED is not set
|
||||||
|
# CONFIG_CRYPTO_SERPENT is not set
|
||||||
|
# CONFIG_CRYPTO_TEA is not set
|
||||||
|
# CONFIG_CRYPTO_TWOFISH is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compression
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_DEFLATE is not set
|
||||||
|
# CONFIG_CRYPTO_LZO is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Random Number Generation
|
||||||
|
#
|
||||||
|
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||||
|
CONFIG_CRYPTO_HW=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Library routines
|
||||||
|
#
|
||||||
|
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||||
|
# CONFIG_CRC_CCITT is not set
|
||||||
|
# CONFIG_CRC16 is not set
|
||||||
|
# CONFIG_CRC_T10DIF is not set
|
||||||
|
# CONFIG_CRC_ITU_T is not set
|
||||||
|
# CONFIG_CRC32 is not set
|
||||||
|
# CONFIG_CRC7 is not set
|
||||||
|
# CONFIG_LIBCRC32C is not set
|
||||||
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
CONFIG_PLIST=y
|
||||||
|
CONFIG_HAS_IOMEM=y
|
||||||
|
CONFIG_HAS_IOPORT=y
|
||||||
|
CONFIG_HAS_DMA=y
|
||||||
|
CONFIG_HAVE_LMB=y
|
|
@ -0,0 +1,26 @@
|
||||||
|
include include/asm-generic/Kbuild.asm
|
||||||
|
|
||||||
|
header-y += auxvec.h
|
||||||
|
header-y += errno.h
|
||||||
|
header-y += fcntl.h
|
||||||
|
header-y += ioctl.h
|
||||||
|
header-y += ioctls.h
|
||||||
|
header-y += ipcbuf.h
|
||||||
|
header-y += linkage.h
|
||||||
|
header-y += msgbuf.h
|
||||||
|
header-y += poll.h
|
||||||
|
header-y += resource.h
|
||||||
|
header-y += sembuf.h
|
||||||
|
header-y += shmbuf.h
|
||||||
|
header-y += sigcontext.h
|
||||||
|
header-y += siginfo.h
|
||||||
|
header-y += socket.h
|
||||||
|
header-y += sockios.h
|
||||||
|
header-y += statfs.h
|
||||||
|
header-y += stat.h
|
||||||
|
header-y += termbits.h
|
||||||
|
header-y += ucontext.h
|
||||||
|
|
||||||
|
unifdef-y += cputable.h
|
||||||
|
unifdef-y += elf.h
|
||||||
|
unifdef-y += termios.h
|
|
@ -0,0 +1,123 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_ATOMIC_H
|
||||||
|
#define _ASM_MICROBLAZE_ATOMIC_H
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/compiler.h> /* likely */
|
||||||
|
#include <asm/system.h> /* local_irq_XXX and friends */
|
||||||
|
|
||||||
|
#define ATOMIC_INIT(i) { (i) }
|
||||||
|
#define atomic_read(v) ((v)->counter)
|
||||||
|
#define atomic_set(v, i) (((v)->counter) = (i))
|
||||||
|
|
||||||
|
#define atomic_inc(v) (atomic_add_return(1, (v)))
|
||||||
|
#define atomic_dec(v) (atomic_sub_return(1, (v)))
|
||||||
|
|
||||||
|
#define atomic_add(i, v) (atomic_add_return(i, (v)))
|
||||||
|
#define atomic_sub(i, v) (atomic_sub_return(i, (v)))
|
||||||
|
|
||||||
|
#define atomic_inc_return(v) (atomic_add_return(1, (v)))
|
||||||
|
#define atomic_dec_return(v) (atomic_sub_return(1, (v)))
|
||||||
|
|
||||||
|
#define atomic_inc_and_test(v) (atomic_add_return(1, (v)) == 0)
|
||||||
|
#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0)
|
||||||
|
|
||||||
|
#define atomic_inc_not_zero(v) (atomic_add_unless((v), 1, 0))
|
||||||
|
|
||||||
|
#define atomic_sub_and_test(i, v) (atomic_sub_return((i), (v)) == 0)
|
||||||
|
|
||||||
|
static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
local_irq_save(flags);
|
||||||
|
ret = v->counter;
|
||||||
|
if (likely(ret == old))
|
||||||
|
v->counter = new;
|
||||||
|
local_irq_restore(flags);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int atomic_add_unless(atomic_t *v, int a, int u)
|
||||||
|
{
|
||||||
|
int c, old;
|
||||||
|
|
||||||
|
c = atomic_read(v);
|
||||||
|
while (c != u && (old = atomic_cmpxchg((v), c, c + a)) != c)
|
||||||
|
c = old;
|
||||||
|
return c != u;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
local_irq_save(flags);
|
||||||
|
*addr &= ~mask;
|
||||||
|
local_irq_restore(flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* atomic_add_return - add and return
|
||||||
|
* @i: integer value to add
|
||||||
|
* @v: pointer of type atomic_t
|
||||||
|
*
|
||||||
|
* Atomically adds @i to @v and returns @i + @v
|
||||||
|
*/
|
||||||
|
static inline int atomic_add_return(int i, atomic_t *v)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
int val;
|
||||||
|
|
||||||
|
local_irq_save(flags);
|
||||||
|
val = v->counter;
|
||||||
|
v->counter = val += i;
|
||||||
|
local_irq_restore(flags);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int atomic_sub_return(int i, atomic_t *v)
|
||||||
|
{
|
||||||
|
return atomic_add_return(-i, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Atomically test *v and decrement if it is greater than 0.
|
||||||
|
* The function returns the old value of *v minus 1.
|
||||||
|
*/
|
||||||
|
static inline int atomic_dec_if_positive(atomic_t *v)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
local_irq_save(flags);
|
||||||
|
res = v->counter - 1;
|
||||||
|
if (res >= 0)
|
||||||
|
v->counter = res;
|
||||||
|
local_irq_restore(flags);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
|
||||||
|
#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
|
||||||
|
|
||||||
|
/* Atomic operations are already serializing */
|
||||||
|
#define smp_mb__before_atomic_dec() barrier()
|
||||||
|
#define smp_mb__after_atomic_dec() barrier()
|
||||||
|
#define smp_mb__before_atomic_inc() barrier()
|
||||||
|
#define smp_mb__after_atomic_inc() barrier()
|
||||||
|
|
||||||
|
#include <asm-generic/atomic.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_ATOMIC_H */
|
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_BITOPS_H
|
||||||
|
#define _ASM_MICROBLAZE_BITOPS_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 1992, Linus Torvalds.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <asm/byteorder.h> /* swab32 */
|
||||||
|
#include <asm/system.h> /* save_flags */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* clear_bit() doesn't provide any barrier for the compiler.
|
||||||
|
*/
|
||||||
|
#define smp_mb__before_clear_bit() barrier()
|
||||||
|
#define smp_mb__after_clear_bit() barrier()
|
||||||
|
#include <asm-generic/bitops.h>
|
||||||
|
#include <asm-generic/bitops/__fls.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_BITOPS_H */
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_BUG_H
|
||||||
|
#define _ASM_MICROBLAZE_BUG_H
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <asm-generic/bug.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_BUG_H */
|
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_BUGS_H
|
||||||
|
#define _ASM_MICROBLAZE_BUGS_H
|
||||||
|
|
||||||
|
static inline void check_bugs(void)
|
||||||
|
{
|
||||||
|
/* nothing to do */
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_BUGS_H */
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef _ASM_MICROBLAZE_BYTEORDER_H
|
||||||
|
#define _ASM_MICROBLAZE_BYTEORDER_H
|
||||||
|
|
||||||
|
#include <linux/byteorder/big_endian.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_BYTEORDER_H */
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Cache operations
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
|
||||||
|
* Copyright (C) 2007-2009 PetaLogix
|
||||||
|
* Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_CACHE_H
|
||||||
|
#define _ASM_MICROBLAZE_CACHE_H
|
||||||
|
|
||||||
|
#include <asm/registers.h>
|
||||||
|
|
||||||
|
#define L1_CACHE_SHIFT 2
|
||||||
|
/* word-granular cache in microblaze */
|
||||||
|
#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
|
||||||
|
|
||||||
|
#define SMP_CACHE_BYTES L1_CACHE_BYTES
|
||||||
|
|
||||||
|
void _enable_icache(void);
|
||||||
|
void _disable_icache(void);
|
||||||
|
void _invalidate_icache(unsigned int addr);
|
||||||
|
|
||||||
|
#define __enable_icache() _enable_icache()
|
||||||
|
#define __disable_icache() _disable_icache()
|
||||||
|
#define __invalidate_icache(addr) _invalidate_icache(addr)
|
||||||
|
|
||||||
|
void _enable_dcache(void);
|
||||||
|
void _disable_dcache(void);
|
||||||
|
void _invalidate_dcache(unsigned int addr);
|
||||||
|
|
||||||
|
#define __enable_dcache() _enable_dcache()
|
||||||
|
#define __disable_dcache() _disable_dcache()
|
||||||
|
#define __invalidate_dcache(addr) _invalidate_dcache(addr)
|
||||||
|
|
||||||
|
/* FIXME - I don't think this is right */
|
||||||
|
#ifdef CONFIG_XILINX_UNCACHED_SHADOW
|
||||||
|
#define UNCACHED_SHADOW_MASK (CONFIG_XILINX_ERAM_SIZE)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_CACHE_H */
|
|
@ -0,0 +1,85 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007 PetaLogix
|
||||||
|
* Copyright (C) 2007 John Williams <john.williams@petalogix.com>
|
||||||
|
* based on v850 version which was
|
||||||
|
* Copyright (C) 2001,02,03 NEC Electronics Corporation
|
||||||
|
* Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_CACHEFLUSH_H
|
||||||
|
#define _ASM_MICROBLAZE_CACHEFLUSH_H
|
||||||
|
|
||||||
|
/* Somebody depends on this; sigh... */
|
||||||
|
#include <linux/mm.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Cache handling functions.
|
||||||
|
* Microblaze has a write-through data cache, meaning that the data cache
|
||||||
|
* never needs to be flushed. The only flushing operations that are
|
||||||
|
* implemented are to invalidate the instruction cache. These are called
|
||||||
|
* after loading a user application into memory, we must invalidate the
|
||||||
|
* instruction cache to make sure we don't fetch old, bad code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* FIXME for LL-temac driver */
|
||||||
|
#define invalidate_dcache_range(start, end) \
|
||||||
|
__invalidate_dcache_range(start, end)
|
||||||
|
|
||||||
|
#define flush_cache_all() __invalidate_cache_all()
|
||||||
|
#define flush_cache_mm(mm) do { } while (0)
|
||||||
|
#define flush_cache_range(vma, start, end) __invalidate_cache_all()
|
||||||
|
#define flush_cache_page(vma, vmaddr, pfn) do { } while (0)
|
||||||
|
|
||||||
|
#define flush_dcache_range(start, end) __invalidate_dcache_range(start, end)
|
||||||
|
#define flush_dcache_page(page) do { } while (0)
|
||||||
|
#define flush_dcache_mmap_lock(mapping) do { } while (0)
|
||||||
|
#define flush_dcache_mmap_unlock(mapping) do { } while (0)
|
||||||
|
|
||||||
|
#define flush_icache_range(start, len) __invalidate_icache_range(start, len)
|
||||||
|
#define flush_icache_page(vma, pg) do { } while (0)
|
||||||
|
|
||||||
|
#define flush_cache_vmap(start, end) do { } while (0)
|
||||||
|
#define flush_cache_vunmap(start, end) do { } while (0)
|
||||||
|
|
||||||
|
struct page;
|
||||||
|
struct mm_struct;
|
||||||
|
struct vm_area_struct;
|
||||||
|
|
||||||
|
/* see arch/microblaze/kernel/cache.c */
|
||||||
|
extern void __invalidate_icache_all(void);
|
||||||
|
extern void __invalidate_icache_range(unsigned long start, unsigned long end);
|
||||||
|
extern void __invalidate_icache_page(struct vm_area_struct *vma,
|
||||||
|
struct page *page);
|
||||||
|
extern void __invalidate_icache_user_range(struct vm_area_struct *vma,
|
||||||
|
struct page *page,
|
||||||
|
unsigned long adr, int len);
|
||||||
|
extern void __invalidate_cache_sigtramp(unsigned long addr);
|
||||||
|
|
||||||
|
extern void __invalidate_dcache_all(void);
|
||||||
|
extern void __invalidate_dcache_range(unsigned long start, unsigned long end);
|
||||||
|
extern void __invalidate_dcache_page(struct vm_area_struct *vma,
|
||||||
|
struct page *page);
|
||||||
|
extern void __invalidate_dcache_user_range(struct vm_area_struct *vma,
|
||||||
|
struct page *page,
|
||||||
|
unsigned long adr, int len);
|
||||||
|
|
||||||
|
extern inline void __invalidate_cache_all(void)
|
||||||
|
{
|
||||||
|
__invalidate_icache_all();
|
||||||
|
__invalidate_dcache_all();
|
||||||
|
}
|
||||||
|
|
||||||
|
#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
|
||||||
|
do { memcpy((dst), (src), (len)); \
|
||||||
|
flush_icache_range((unsigned) (dst), (unsigned) (dst) + (len)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
|
||||||
|
memcpy((dst), (src), (len))
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_CACHEFLUSH_H */
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_CHECKSUM_H
|
||||||
|
#define _ASM_MICROBLAZE_CHECKSUM_H
|
||||||
|
|
||||||
|
#include <linux/in6.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* computes the checksum of the TCP/UDP pseudo-header
|
||||||
|
* returns a 16-bit checksum, already complemented
|
||||||
|
*/
|
||||||
|
static inline __wsum
|
||||||
|
csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
|
||||||
|
unsigned short proto, __wsum sum)
|
||||||
|
{
|
||||||
|
__asm__("add %0, %0, %1\n\t"
|
||||||
|
"addc %0, %0, %2\n\t"
|
||||||
|
"addc %0, %0, %3\n\t"
|
||||||
|
"addc %0, %0, r0\n\t"
|
||||||
|
: "+&d" (sum)
|
||||||
|
: "d" (saddr), "d" (daddr), "d" (len + proto));
|
||||||
|
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* computes the checksum of a memory block at buff, length len,
|
||||||
|
* and adds in "sum" (32-bit)
|
||||||
|
*
|
||||||
|
* returns a 32-bit number suitable for feeding into itself
|
||||||
|
* or csum_tcpudp_magic
|
||||||
|
*
|
||||||
|
* this function must be called with even lengths, except
|
||||||
|
* for the last fragment, which may be odd
|
||||||
|
*
|
||||||
|
* it's best to have buff aligned on a 32-bit boundary
|
||||||
|
*/
|
||||||
|
extern __wsum csum_partial(const void *buff, int len, __wsum sum);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the same as csum_partial, but copies from src while it
|
||||||
|
* checksums
|
||||||
|
*
|
||||||
|
* here even more important to align src and dst on a 32-bit (or even
|
||||||
|
* better 64-bit) boundary
|
||||||
|
*/
|
||||||
|
extern __wsum csum_partial_copy(const char *src, char *dst, int len, int sum);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the same as csum_partial_copy, but copies from user space.
|
||||||
|
*
|
||||||
|
* here even more important to align src and dst on a 32-bit (or even
|
||||||
|
* better 64-bit) boundary
|
||||||
|
*/
|
||||||
|
extern __wsum csum_partial_copy_from_user(const char *src, char *dst,
|
||||||
|
int len, int sum, int *csum_err);
|
||||||
|
|
||||||
|
#define csum_partial_copy_nocheck(src, dst, len, sum) \
|
||||||
|
csum_partial_copy((src), (dst), (len), (sum))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is a version of ip_compute_csum() optimized for IP headers,
|
||||||
|
* which always checksum on 4 octet boundaries.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fold a partial checksum
|
||||||
|
*/
|
||||||
|
static inline __sum16 csum_fold(unsigned int sum)
|
||||||
|
{
|
||||||
|
sum = (sum & 0xffff) + (sum >> 16);
|
||||||
|
sum = (sum & 0xffff) + (sum >> 16);
|
||||||
|
return ~sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline __sum16
|
||||||
|
csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len,
|
||||||
|
unsigned short proto, __wsum sum)
|
||||||
|
{
|
||||||
|
return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this routine is used for miscellaneous IP-like checksums, mainly
|
||||||
|
* in icmp.c
|
||||||
|
*/
|
||||||
|
extern __sum16 ip_compute_csum(const unsigned char *buff, int len);
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_CHECKSUM_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <linux/linkage.h>
|
|
@ -0,0 +1,102 @@
|
||||||
|
/*
|
||||||
|
* Generic support for queying CPU info
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
|
||||||
|
* Copyright (C) 2007-2009 PetaLogix
|
||||||
|
* Copyright (C) 2007 John Williams <jwilliams@itee.uq.edu.au>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_CPUINFO_H
|
||||||
|
#define _ASM_MICROBLAZE_CPUINFO_H
|
||||||
|
|
||||||
|
#include <asm/prom.h>
|
||||||
|
|
||||||
|
/* CPU Version and FPGA Family code conversion table type */
|
||||||
|
struct cpu_ver_key {
|
||||||
|
const char *s;
|
||||||
|
const unsigned k;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const struct cpu_ver_key cpu_ver_lookup[];
|
||||||
|
|
||||||
|
struct family_string_key {
|
||||||
|
const char *s;
|
||||||
|
const unsigned k;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const struct family_string_key family_string_lookup[];
|
||||||
|
|
||||||
|
struct cpuinfo {
|
||||||
|
/* Core CPU configuration */
|
||||||
|
u32 use_instr;
|
||||||
|
u32 use_mult;
|
||||||
|
u32 use_fpu;
|
||||||
|
u32 use_exc;
|
||||||
|
u32 ver_code;
|
||||||
|
u32 mmu;
|
||||||
|
|
||||||
|
/* CPU caches */
|
||||||
|
u32 use_icache;
|
||||||
|
u32 icache_tagbits;
|
||||||
|
u32 icache_write;
|
||||||
|
u32 icache_line;
|
||||||
|
u32 icache_size;
|
||||||
|
unsigned long icache_base;
|
||||||
|
unsigned long icache_high;
|
||||||
|
|
||||||
|
u32 use_dcache;
|
||||||
|
u32 dcache_tagbits;
|
||||||
|
u32 dcache_write;
|
||||||
|
u32 dcache_line;
|
||||||
|
u32 dcache_size;
|
||||||
|
unsigned long dcache_base;
|
||||||
|
unsigned long dcache_high;
|
||||||
|
|
||||||
|
/* Bus connections */
|
||||||
|
u32 use_dopb;
|
||||||
|
u32 use_iopb;
|
||||||
|
u32 use_dlmb;
|
||||||
|
u32 use_ilmb;
|
||||||
|
u32 num_fsl;
|
||||||
|
|
||||||
|
/* CPU interrupt line info */
|
||||||
|
u32 irq_edge;
|
||||||
|
u32 irq_positive;
|
||||||
|
|
||||||
|
u32 area_optimised;
|
||||||
|
|
||||||
|
/* HW debug support */
|
||||||
|
u32 hw_debug;
|
||||||
|
u32 num_pc_brk;
|
||||||
|
u32 num_rd_brk;
|
||||||
|
u32 num_wr_brk;
|
||||||
|
u32 cpu_clock_freq; /* store real freq of cpu */
|
||||||
|
u32 freq_div_hz; /* store freq/HZ */
|
||||||
|
|
||||||
|
/* FPGA family */
|
||||||
|
u32 fpga_family_code;
|
||||||
|
|
||||||
|
/* User define */
|
||||||
|
u32 pvr_user1;
|
||||||
|
u32 pvr_user2;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct cpuinfo cpuinfo;
|
||||||
|
|
||||||
|
/* fwd declarations of the various CPUinfo populators */
|
||||||
|
void setup_cpuinfo(void);
|
||||||
|
|
||||||
|
void set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu);
|
||||||
|
void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu);
|
||||||
|
|
||||||
|
static inline unsigned int fcpu(struct device_node *cpu, char *n)
|
||||||
|
{
|
||||||
|
int *val;
|
||||||
|
return (val = (int *) of_get_property(cpu, n, NULL)) ? *val : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_CPUINFO_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/cputime.h>
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_CURRENT_H
|
||||||
|
#define _ASM_MICROBLAZE_CURRENT_H
|
||||||
|
|
||||||
|
# ifndef __ASSEMBLY__
|
||||||
|
/*
|
||||||
|
* Dedicate r31 to keeping the current task pointer
|
||||||
|
*/
|
||||||
|
register struct task_struct *current asm("r31");
|
||||||
|
|
||||||
|
# define get_current() current
|
||||||
|
# endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_CURRENT_H */
|
|
@ -0,0 +1,72 @@
|
||||||
|
/*
|
||||||
|
* include/asm-microblaze/delay.h
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Michal Simek
|
||||||
|
* Copyright (C) 2007 John Williams
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_DELAY_H
|
||||||
|
#define _ASM_MICROBLAZE_DELAY_H
|
||||||
|
|
||||||
|
extern inline void __delay(unsigned long loops)
|
||||||
|
{
|
||||||
|
asm volatile ("# __delay \n\t" \
|
||||||
|
"1: addi %0, %0, -1\t\n" \
|
||||||
|
"bneid %0, 1b \t\n" \
|
||||||
|
"nop \t\n"
|
||||||
|
: "=r" (loops)
|
||||||
|
: "0" (loops));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note that 19 * 226 == 4294 ==~ 2^32 / 10^6, so
|
||||||
|
* loops = (4294 * usecs * loops_per_jiffy * HZ) / 2^32.
|
||||||
|
*
|
||||||
|
* The mul instruction gives us loops = (a * b) / 2^32.
|
||||||
|
* We choose a = usecs * 19 * HZ and b = loops_per_jiffy * 226
|
||||||
|
* because this lets us support a wide range of HZ and
|
||||||
|
* loops_per_jiffy values without either a or b overflowing 2^32.
|
||||||
|
* Thus we need usecs * HZ <= (2^32 - 1) / 19 = 226050910 and
|
||||||
|
* loops_per_jiffy <= (2^32 - 1) / 226 = 19004280
|
||||||
|
* (which corresponds to ~3800 bogomips at HZ = 100).
|
||||||
|
* -- paulus
|
||||||
|
*/
|
||||||
|
#define __MAX_UDELAY (226050910UL/HZ) /* maximum udelay argument */
|
||||||
|
#define __MAX_NDELAY (4294967295UL/HZ) /* maximum ndelay argument */
|
||||||
|
|
||||||
|
extern unsigned long loops_per_jiffy;
|
||||||
|
|
||||||
|
extern inline void __udelay(unsigned int x)
|
||||||
|
{
|
||||||
|
|
||||||
|
unsigned long long tmp =
|
||||||
|
(unsigned long long)x * (unsigned long long)loops_per_jiffy \
|
||||||
|
* 226LL;
|
||||||
|
unsigned loops = tmp >> 32;
|
||||||
|
|
||||||
|
/*
|
||||||
|
__asm__("mulxuu %0,%1,%2" : "=r" (loops) :
|
||||||
|
"r" (x), "r" (loops_per_jiffy * 226));
|
||||||
|
*/
|
||||||
|
__delay(loops);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void __bad_udelay(void); /* deliberately undefined */
|
||||||
|
extern void __bad_ndelay(void); /* deliberately undefined */
|
||||||
|
|
||||||
|
#define udelay(n) (__builtin_constant_p(n) ? \
|
||||||
|
((n) > __MAX_UDELAY ? __bad_udelay() : __udelay((n) * (19 * HZ))) : \
|
||||||
|
__udelay((n) * (19 * HZ)))
|
||||||
|
|
||||||
|
#define ndelay(n) (__builtin_constant_p(n) ? \
|
||||||
|
((n) > __MAX_NDELAY ? __bad_ndelay() : __udelay((n) * HZ)) : \
|
||||||
|
__udelay((n) * HZ))
|
||||||
|
|
||||||
|
#define muldiv(a, b, c) (((a)*(b))/(c))
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_DELAY_H */
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Arch specific extensions to struct device
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License v2. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_DEVICE_H
|
||||||
|
#define _ASM_MICROBLAZE_DEVICE_H
|
||||||
|
|
||||||
|
struct device_node;
|
||||||
|
|
||||||
|
struct dev_archdata {
|
||||||
|
/* Optional pointer to an OF device node */
|
||||||
|
struct device_node *of_node;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_DEVICE_H */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/div64.h>
|
|
@ -0,0 +1,129 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_DMA_MAPPING_H
|
||||||
|
#define _ASM_MICROBLAZE_DMA_MAPPING_H
|
||||||
|
|
||||||
|
#include <asm/cacheflush.h>
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/bug.h>
|
||||||
|
|
||||||
|
struct scatterlist;
|
||||||
|
|
||||||
|
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
|
||||||
|
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
|
||||||
|
|
||||||
|
/* FIXME */
|
||||||
|
static inline int
|
||||||
|
dma_supported(struct device *dev, u64 mask)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline dma_addr_t
|
||||||
|
dma_map_page(struct device *dev, struct page *page,
|
||||||
|
unsigned long offset, size_t size,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
|
||||||
|
size_t size, enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *dma_alloc_coherent(struct device *dev, size_t size,
|
||||||
|
dma_addr_t *dma_handle, int flag)
|
||||||
|
{
|
||||||
|
return NULL; /* consistent_alloc(flag, size, dma_handle); */
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void dma_free_coherent(struct device *dev, size_t size,
|
||||||
|
void *vaddr, dma_addr_t dma_handle)
|
||||||
|
{
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline dma_addr_t
|
||||||
|
dma_map_single(struct device *dev, void *ptr, size_t size,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
BUG_ON(direction == DMA_NONE);
|
||||||
|
|
||||||
|
return virt_to_bus(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void dma_unmap_single(struct device *dev, dma_addr_t dma_addr,
|
||||||
|
size_t size,
|
||||||
|
enum dma_data_direction direction)
|
||||||
|
{
|
||||||
|
switch (direction) {
|
||||||
|
case DMA_FROM_DEVICE:
|
||||||
|
flush_dcache_range((unsigned)dma_addr,
|
||||||
|
(unsigned)dma_addr + size);
|
||||||
|
/* Fall through */
|
||||||
|
case DMA_TO_DEVICE:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_DMA_MAPPING_H */
|
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_DMA_H
|
||||||
|
#define _ASM_MICROBLAZE_DMA_H
|
||||||
|
|
||||||
|
/* we don't have dma address limit. define it as zero to be
|
||||||
|
* unlimited. */
|
||||||
|
#define MAX_DMA_ADDRESS (0)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_DMA_H */
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_ELF_H
|
||||||
|
#define _ASM_MICROBLAZE_ELF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note there is no "official" ELF designation for Microblaze.
|
||||||
|
* I've snaffled the value from the microblaze binutils source code
|
||||||
|
* /binutils/microblaze/include/elf/microblaze.h
|
||||||
|
*/
|
||||||
|
#define EM_XILINX_MICROBLAZE 0xbaab
|
||||||
|
#define ELF_ARCH EM_XILINX_MICROBLAZE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is used to ensure we don't load something for the wrong architecture.
|
||||||
|
*/
|
||||||
|
#define elf_check_arch(x) ((x)->e_machine == EM_XILINX_MICROBLAZE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are used to set parameters in the core dumps.
|
||||||
|
*/
|
||||||
|
#define ELF_CLASS ELFCLASS32
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_ELF_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/emergency-restart.h>
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Definitions used by low-level trap handlers
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Michal Simek
|
||||||
|
* Copyright (C) 2007 - 2008 PetaLogix
|
||||||
|
* Copyright (C) 2007 John Williams <john.williams@petalogix.com>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_ENTRY_H
|
||||||
|
#define _ASM_MICROBLAZE_ENTRY_H
|
||||||
|
|
||||||
|
#include <asm/percpu.h>
|
||||||
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are per-cpu variables required in entry.S, among other
|
||||||
|
* places
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define PER_CPU(var) per_cpu__##var
|
||||||
|
|
||||||
|
# ifndef __ASSEMBLY__
|
||||||
|
DECLARE_PER_CPU(unsigned int, KSP); /* Saved kernel stack pointer */
|
||||||
|
DECLARE_PER_CPU(unsigned int, KM); /* Kernel/user mode */
|
||||||
|
DECLARE_PER_CPU(unsigned int, ENTRY_SP); /* Saved SP on kernel entry */
|
||||||
|
DECLARE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
|
||||||
|
DECLARE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
|
||||||
|
DECLARE_PER_CPU(unsigned int, SYSCALL_SAVE); /* Saved syscall number */
|
||||||
|
# endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_ENTRY_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/errno.h>
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
* Preliminary support for HW exception handing for Microblaze
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Michal Simek
|
||||||
|
* Copyright (C) 2008 PetaLogix
|
||||||
|
* Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_EXCEPTIONS_H
|
||||||
|
#define _ASM_MICROBLAZE_EXCEPTIONS_H
|
||||||
|
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
/* Macros to enable and disable HW exceptions in the MSR */
|
||||||
|
/* Define MSR enable bit for HW exceptions */
|
||||||
|
#define HWEX_MSR_BIT (1 << 8)
|
||||||
|
|
||||||
|
#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
|
||||||
|
#define __enable_hw_exceptions() \
|
||||||
|
__asm__ __volatile__ (" msrset r0, %0; \
|
||||||
|
nop;" \
|
||||||
|
: \
|
||||||
|
: "i" (HWEX_MSR_BIT) \
|
||||||
|
: "memory")
|
||||||
|
|
||||||
|
#define __disable_hw_exceptions() \
|
||||||
|
__asm__ __volatile__ (" msrclr r0, %0; \
|
||||||
|
nop;" \
|
||||||
|
: \
|
||||||
|
: "i" (HWEX_MSR_BIT) \
|
||||||
|
: "memory")
|
||||||
|
#else /* !CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
|
||||||
|
#define __enable_hw_exceptions() \
|
||||||
|
__asm__ __volatile__ (" \
|
||||||
|
mfs r12, rmsr; \
|
||||||
|
nop; \
|
||||||
|
ori r12, r12, %0; \
|
||||||
|
mts rmsr, r12; \
|
||||||
|
nop;" \
|
||||||
|
: \
|
||||||
|
: "i" (HWEX_MSR_BIT) \
|
||||||
|
: "memory", "r12")
|
||||||
|
|
||||||
|
#define __disable_hw_exceptions() \
|
||||||
|
__asm__ __volatile__ (" \
|
||||||
|
mfs r12, rmsr; \
|
||||||
|
nop; \
|
||||||
|
andi r12, r12, ~%0; \
|
||||||
|
mts rmsr, r12; \
|
||||||
|
nop;" \
|
||||||
|
: \
|
||||||
|
: "i" (HWEX_MSR_BIT) \
|
||||||
|
: "memory", "r12")
|
||||||
|
#endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
|
||||||
|
|
||||||
|
asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
|
||||||
|
int fsr, int addr);
|
||||||
|
|
||||||
|
#if defined(CONFIG_XMON)
|
||||||
|
extern void xmon(struct pt_regs *regs);
|
||||||
|
extern int xmon_bpt(struct pt_regs *regs);
|
||||||
|
extern int xmon_sstep(struct pt_regs *regs);
|
||||||
|
extern int xmon_iabr_match(struct pt_regs *regs);
|
||||||
|
extern int xmon_dabr_match(struct pt_regs *regs);
|
||||||
|
extern void (*xmon_fault_handler)(struct pt_regs *regs);
|
||||||
|
|
||||||
|
void (*debugger)(struct pt_regs *regs) = xmon;
|
||||||
|
int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt;
|
||||||
|
int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep;
|
||||||
|
int (*debugger_iabr_match)(struct pt_regs *regs) = xmon_iabr_match;
|
||||||
|
int (*debugger_dabr_match)(struct pt_regs *regs) = xmon_dabr_match;
|
||||||
|
void (*debugger_fault_handler)(struct pt_regs *regs);
|
||||||
|
#elif defined(CONFIG_KGDB)
|
||||||
|
void (*debugger)(struct pt_regs *regs);
|
||||||
|
int (*debugger_bpt)(struct pt_regs *regs);
|
||||||
|
int (*debugger_sstep)(struct pt_regs *regs);
|
||||||
|
int (*debugger_iabr_match)(struct pt_regs *regs);
|
||||||
|
int (*debugger_dabr_match)(struct pt_regs *regs);
|
||||||
|
void (*debugger_fault_handler)(struct pt_regs *regs);
|
||||||
|
#else
|
||||||
|
#define debugger(regs) do { } while (0)
|
||||||
|
#define debugger_bpt(regs) 0
|
||||||
|
#define debugger_sstep(regs) 0
|
||||||
|
#define debugger_iabr_match(regs) 0
|
||||||
|
#define debugger_dabr_match(regs) 0
|
||||||
|
#define debugger_fault_handler ((void (*)(struct pt_regs *))0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /*__ASSEMBLY__ */
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_EXCEPTIONS_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/fcntl.h>
|
|
@ -0,0 +1,90 @@
|
||||||
|
/*
|
||||||
|
* uClinux flat-format executables
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_FLAT_H
|
||||||
|
#define _ASM_MICROBLAZE_FLAT_H
|
||||||
|
|
||||||
|
#include <asm/unaligned.h>
|
||||||
|
|
||||||
|
#define flat_stack_align(sp) /* nothing needed */
|
||||||
|
#define flat_argvp_envp_on_stack() 0
|
||||||
|
#define flat_old_ram_flag(flags) (flags)
|
||||||
|
#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
|
||||||
|
#define flat_set_persistent(relval, p) 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Microblaze works a little differently from other arches, because
|
||||||
|
* of the MICROBLAZE_64 reloc type. Here, a 32 bit address is split
|
||||||
|
* over two instructions, an 'imm' instruction which provides the top
|
||||||
|
* 16 bits, then the instruction "proper" which provides the low 16
|
||||||
|
* bits.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Crack open a symbol reference and extract the address to be
|
||||||
|
* relocated. rp is a potentially unaligned pointer to the
|
||||||
|
* reference
|
||||||
|
*/
|
||||||
|
|
||||||
|
static inline unsigned long
|
||||||
|
flat_get_addr_from_rp(unsigned long *rp, unsigned long relval,
|
||||||
|
unsigned long flags, unsigned long *persistent)
|
||||||
|
{
|
||||||
|
unsigned long addr;
|
||||||
|
(void)flags;
|
||||||
|
|
||||||
|
/* Is it a split 64/32 reference? */
|
||||||
|
if (relval & 0x80000000) {
|
||||||
|
/* Grab the two halves of the reference */
|
||||||
|
unsigned long val_hi, val_lo;
|
||||||
|
|
||||||
|
val_hi = get_unaligned(rp);
|
||||||
|
val_lo = get_unaligned(rp+1);
|
||||||
|
|
||||||
|
/* Crack the address out */
|
||||||
|
addr = ((val_hi & 0xffff) << 16) + (val_lo & 0xffff);
|
||||||
|
} else {
|
||||||
|
/* Get the address straight out */
|
||||||
|
addr = get_unaligned(rp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Insert an address into the symbol reference at rp. rp is potentially
|
||||||
|
* unaligned.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
flat_put_addr_at_rp(unsigned long *rp, unsigned long addr, unsigned long relval)
|
||||||
|
{
|
||||||
|
/* Is this a split 64/32 reloc? */
|
||||||
|
if (relval & 0x80000000) {
|
||||||
|
/* Get the two "halves" */
|
||||||
|
unsigned long val_hi = get_unaligned(rp);
|
||||||
|
unsigned long val_lo = get_unaligned(rp + 1);
|
||||||
|
|
||||||
|
/* insert the address */
|
||||||
|
val_hi = (val_hi & 0xffff0000) | addr >> 16;
|
||||||
|
val_lo = (val_lo & 0xffff0000) | (addr & 0xffff);
|
||||||
|
|
||||||
|
/* store the two halves back into memory */
|
||||||
|
put_unaligned(val_hi, rp);
|
||||||
|
put_unaligned(val_lo, rp+1);
|
||||||
|
} else {
|
||||||
|
/* Put it straight in, no messing around */
|
||||||
|
put_unaligned(addr, rp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define flat_get_relocate_addr(rel) (rel & 0x7fffffff)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_FLAT_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/futex.h>
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* Generic GPIO API implementation for PowerPC.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2007-2008 MontaVista Software, Inc.
|
||||||
|
*
|
||||||
|
* Author: Anton Vorontsov <avorontsov@ru.mvista.com>
|
||||||
|
*
|
||||||
|
* This program 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_POWERPC_GPIO_H
|
||||||
|
#define __ASM_POWERPC_GPIO_H
|
||||||
|
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <asm-generic/gpio.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_GPIOLIB
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We don't (yet) implement inlined/rapid versions for on-chip gpios.
|
||||||
|
* Just call gpiolib.
|
||||||
|
*/
|
||||||
|
static inline int gpio_get_value(unsigned int gpio)
|
||||||
|
{
|
||||||
|
return __gpio_get_value(gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void gpio_set_value(unsigned int gpio, int value)
|
||||||
|
{
|
||||||
|
__gpio_set_value(gpio, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int gpio_cansleep(unsigned int gpio)
|
||||||
|
{
|
||||||
|
return __gpio_cansleep(gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Not implemented, yet.
|
||||||
|
*/
|
||||||
|
static inline int gpio_to_irq(unsigned int gpio)
|
||||||
|
{
|
||||||
|
return -ENOSYS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int irq_to_gpio(unsigned int irq)
|
||||||
|
{
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_GPIOLIB */
|
||||||
|
|
||||||
|
#endif /* __ASM_POWERPC_GPIO_H */
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_HARDIRQ_H
|
||||||
|
#define _ASM_MICROBLAZE_HARDIRQ_H
|
||||||
|
|
||||||
|
#include <linux/cache.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
|
#include <asm/irq.h>
|
||||||
|
#include <asm/current.h>
|
||||||
|
#include <linux/ptrace.h>
|
||||||
|
|
||||||
|
/* should be defined in each interrupt controller driver */
|
||||||
|
extern unsigned int get_irq(struct pt_regs *regs);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned int __softirq_pending;
|
||||||
|
} ____cacheline_aligned irq_cpustat_t;
|
||||||
|
|
||||||
|
void ack_bad_irq(unsigned int irq);
|
||||||
|
|
||||||
|
#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_HARDIRQ_H */
|
|
@ -0,0 +1,209 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_IO_H
|
||||||
|
#define _ASM_MICROBLAZE_IO_H
|
||||||
|
|
||||||
|
#include <asm/byteorder.h>
|
||||||
|
#include <asm/page.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <asm/page.h>
|
||||||
|
|
||||||
|
#define IO_SPACE_LIMIT (0xFFFFFFFF)
|
||||||
|
|
||||||
|
static inline unsigned char __raw_readb(const volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
return *(volatile unsigned char __force *)addr;
|
||||||
|
}
|
||||||
|
static inline unsigned short __raw_readw(const volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
return *(volatile unsigned short __force *)addr;
|
||||||
|
}
|
||||||
|
static inline unsigned int __raw_readl(const volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
return *(volatile unsigned int __force *)addr;
|
||||||
|
}
|
||||||
|
static inline unsigned long __raw_readq(const volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
return *(volatile unsigned long __force *)addr;
|
||||||
|
}
|
||||||
|
static inline void __raw_writeb(unsigned char v, volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
*(volatile unsigned char __force *)addr = v;
|
||||||
|
}
|
||||||
|
static inline void __raw_writew(unsigned short v, volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
*(volatile unsigned short __force *)addr = v;
|
||||||
|
}
|
||||||
|
static inline void __raw_writel(unsigned int v, volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
*(volatile unsigned int __force *)addr = v;
|
||||||
|
}
|
||||||
|
static inline void __raw_writeq(unsigned long v, volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
*(volatile unsigned long __force *)addr = v;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* read (readb, readw, readl, readq) and write (writeb, writew,
|
||||||
|
* writel, writeq) accessors are for PCI and thus littel endian.
|
||||||
|
* Linux 2.4 for Microblaze had this wrong.
|
||||||
|
*/
|
||||||
|
static inline unsigned char readb(const volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
return *(volatile unsigned char __force *)addr;
|
||||||
|
}
|
||||||
|
static inline unsigned short readw(const volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
return le16_to_cpu(*(volatile unsigned short __force *)addr);
|
||||||
|
}
|
||||||
|
static inline unsigned int readl(const volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
return le32_to_cpu(*(volatile unsigned int __force *)addr);
|
||||||
|
}
|
||||||
|
static inline void writeb(unsigned char v, volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
*(volatile unsigned char __force *)addr = v;
|
||||||
|
}
|
||||||
|
static inline void writew(unsigned short v, volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
*(volatile unsigned short __force *)addr = cpu_to_le16(v);
|
||||||
|
}
|
||||||
|
static inline void writel(unsigned int v, volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
*(volatile unsigned int __force *)addr = cpu_to_le32(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ioread and iowrite variants. thease are for now same as __raw_
|
||||||
|
* variants of accessors. we might check for endianess in the feature
|
||||||
|
*/
|
||||||
|
#define ioread8(addr) __raw_readb((u8 *)(addr))
|
||||||
|
#define ioread16(addr) __raw_readw((u16 *)(addr))
|
||||||
|
#define ioread32(addr) __raw_readl((u32 *)(addr))
|
||||||
|
#define iowrite8(v, addr) __raw_writeb((u8)(v), (u8 *)(addr))
|
||||||
|
#define iowrite16(v, addr) __raw_writew((u16)(v), (u16 *)(addr))
|
||||||
|
#define iowrite32(v, addr) __raw_writel((u32)(v), (u32 *)(addr))
|
||||||
|
|
||||||
|
/* These are the definitions for the x86 IO instructions
|
||||||
|
* inb/inw/inl/outb/outw/outl, the "string" versions
|
||||||
|
* insb/insw/insl/outsb/outsw/outsl, and the "pausing" versions
|
||||||
|
* inb_p/inw_p/...
|
||||||
|
* The macros don't do byte-swapping.
|
||||||
|
*/
|
||||||
|
#define inb(port) readb((u8 *)((port)))
|
||||||
|
#define outb(val, port) writeb((val), (u8 *)((unsigned long)(port)))
|
||||||
|
#define inw(port) readw((u16 *)((port)))
|
||||||
|
#define outw(val, port) writew((val), (u16 *)((unsigned long)(port)))
|
||||||
|
#define inl(port) readl((u32 *)((port)))
|
||||||
|
#define outl(val, port) writel((val), (u32 *)((unsigned long)(port)))
|
||||||
|
|
||||||
|
#define inb_p(port) inb((port))
|
||||||
|
#define outb_p(val, port) outb((val), (port))
|
||||||
|
#define inw_p(port) inw((port))
|
||||||
|
#define outw_p(val, port) outw((val), (port))
|
||||||
|
#define inl_p(port) inl((port))
|
||||||
|
#define outl_p(val, port) outl((val), (port))
|
||||||
|
|
||||||
|
#define memset_io(a, b, c) memset((void *)(a), (b), (c))
|
||||||
|
#define memcpy_fromio(a, b, c) memcpy((a), (void *)(b), (c))
|
||||||
|
#define memcpy_toio(a, b, c) memcpy((void *)(a), (b), (c))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virt_to_phys - map virtual addresses to physical
|
||||||
|
* @address: address to remap
|
||||||
|
*
|
||||||
|
* The returned physical address is the physical (CPU) mapping for
|
||||||
|
* the memory address given. It is only valid to use this function on
|
||||||
|
* addresses directly mapped or allocated via kmalloc.
|
||||||
|
*
|
||||||
|
* This function does not give bus mappings for DMA transfers. In
|
||||||
|
* almost all conceivable cases a device driver should not be using
|
||||||
|
* this function
|
||||||
|
*/
|
||||||
|
static inline unsigned long __iomem virt_to_phys(volatile void *address)
|
||||||
|
{
|
||||||
|
return __pa((unsigned long)address);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define virt_to_bus virt_to_phys
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phys_to_virt - map physical address to virtual
|
||||||
|
* @address: address to remap
|
||||||
|
*
|
||||||
|
* The returned virtual address is a current CPU mapping for
|
||||||
|
* the memory address given. It is only valid to use this function on
|
||||||
|
* addresses that have a kernel mapping
|
||||||
|
*
|
||||||
|
* This function does not handle bus mappings for DMA transfers. In
|
||||||
|
* almost all conceivable cases a device driver should not be using
|
||||||
|
* this function
|
||||||
|
*/
|
||||||
|
static inline void *phys_to_virt(unsigned long address)
|
||||||
|
{
|
||||||
|
return (void *)__va(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define bus_to_virt(a) phys_to_virt(a)
|
||||||
|
|
||||||
|
static inline void __iomem *__ioremap(phys_addr_t address, unsigned long size,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
return (void *)address;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ioremap(physaddr, size) ((void __iomem *)(unsigned long)(physaddr))
|
||||||
|
#define iounmap(addr) ((void)0)
|
||||||
|
#define ioremap_nocache(physaddr, size) ioremap(physaddr, size)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||||
|
* access
|
||||||
|
*/
|
||||||
|
#define xlate_dev_mem_ptr(p) __va(p)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert a virtual cached pointer to an uncached pointer
|
||||||
|
*/
|
||||||
|
#define xlate_dev_kmem_ptr(p) p
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Big Endian
|
||||||
|
*/
|
||||||
|
#define out_be32(a, v) __raw_writel((v), (void __iomem __force *)(a))
|
||||||
|
#define out_be16(a, v) __raw_writew((v), (a))
|
||||||
|
|
||||||
|
#define in_be32(a) __raw_readl((const void __iomem __force *)(a))
|
||||||
|
#define in_be16(a) __raw_readw(a)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Little endian
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define out_le32(a, v) __raw_writel(__cpu_to_le32(v), (a));
|
||||||
|
#define out_le16(a, v) __raw_writew(__cpu_to_le16(v), (a))
|
||||||
|
|
||||||
|
#define in_le32(a) __le32_to_cpu(__raw_readl(a))
|
||||||
|
#define in_le16(a) __le16_to_cpu(__raw_readw(a))
|
||||||
|
|
||||||
|
/* Byte ops */
|
||||||
|
#define out_8(a, v) __raw_writeb((v), (a))
|
||||||
|
#define in_8(a) __raw_readb(a)
|
||||||
|
|
||||||
|
/* FIXME */
|
||||||
|
static inline void __iomem *ioport_map(unsigned long port, unsigned int len)
|
||||||
|
{
|
||||||
|
return (void __iomem *) (port);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void ioport_unmap(void __iomem *addr)
|
||||||
|
{
|
||||||
|
/* Nothing to do */
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_IO_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/ioctl.h>
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_IOCTLS_H
|
||||||
|
#define _ASM_MICROBLAZE_IOCTLS_H
|
||||||
|
|
||||||
|
#include <linux/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 TIOCTTYGSTRUCT 0x5426 /* For debugging only */
|
||||||
|
#define TIOCSBRK 0x5427 /* BSD compatibility */
|
||||||
|
#define TIOCCBRK 0x5428 /* BSD compatibility */
|
||||||
|
#define TIOCGSID 0x5429 /* Return the session ID of FD */
|
||||||
|
/* Get Pty Number (of pty-mux device) */
|
||||||
|
#define TIOCGPTN _IOR('T', 0x30, unsigned int)
|
||||||
|
#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_MICROBLAZE_IOCTLS_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/ipc.h>
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_IPCBUF_H
|
||||||
|
#define _ASM_MICROBLAZE_IPCBUF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The user_ipc_perm structure for microblaze 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_MICROBLAZE_IPCBUF_H */
|
|
@ -0,0 +1,47 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_IRQ_H
|
||||||
|
#define _ASM_MICROBLAZE_IRQ_H
|
||||||
|
|
||||||
|
#define NR_IRQS 32
|
||||||
|
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
|
||||||
|
extern unsigned int nr_irq;
|
||||||
|
|
||||||
|
#define NO_IRQ (-1)
|
||||||
|
|
||||||
|
static inline int irq_canonicalize(int irq)
|
||||||
|
{
|
||||||
|
return irq;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct pt_regs;
|
||||||
|
extern void do_IRQ(struct pt_regs *regs);
|
||||||
|
|
||||||
|
/* irq_of_parse_and_map - Parse and Map an interrupt into linux virq space
|
||||||
|
* @device: Device node of the device whose interrupt is to be mapped
|
||||||
|
* @index: Index of the interrupt to map
|
||||||
|
*
|
||||||
|
* This function is a wrapper that chains of_irq_map_one() and
|
||||||
|
* irq_create_of_mapping() to make things easier to callers
|
||||||
|
*/
|
||||||
|
struct device_node;
|
||||||
|
extern unsigned int irq_of_parse_and_map(struct device_node *dev, int index);
|
||||||
|
|
||||||
|
/** FIXME - not implement
|
||||||
|
* irq_dispose_mapping - Unmap an interrupt
|
||||||
|
* @virq: linux virq number of the interrupt to unmap
|
||||||
|
*/
|
||||||
|
static inline void irq_dispose_mapping(unsigned int virq)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_IRQ_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/irq_regs.h>
|
|
@ -0,0 +1,123 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_IRQFLAGS_H
|
||||||
|
#define _ASM_MICROBLAZE_IRQFLAGS_H
|
||||||
|
|
||||||
|
#include <linux/irqflags.h>
|
||||||
|
|
||||||
|
# if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
|
||||||
|
|
||||||
|
# define local_irq_save(flags) \
|
||||||
|
do { \
|
||||||
|
asm volatile ("# local_irq_save \n\t" \
|
||||||
|
"msrclr %0, %1 \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: "=r"(flags) \
|
||||||
|
: "i"(MSR_IE) \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
# define local_irq_disable() \
|
||||||
|
do { \
|
||||||
|
asm volatile ("# local_irq_disable \n\t" \
|
||||||
|
"msrclr r0, %0 \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: \
|
||||||
|
: "i"(MSR_IE) \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
# define local_irq_enable() \
|
||||||
|
do { \
|
||||||
|
asm volatile ("# local_irq_enable \n\t" \
|
||||||
|
"msrset r0, %0 \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: \
|
||||||
|
: "i"(MSR_IE) \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
# else /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR == 0 */
|
||||||
|
|
||||||
|
# define local_irq_save(flags) \
|
||||||
|
do { \
|
||||||
|
register unsigned tmp; \
|
||||||
|
asm volatile ("# local_irq_save \n\t" \
|
||||||
|
"mfs %0, rmsr \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
"andi %1, %0, %2 \n\t" \
|
||||||
|
"mts rmsr, %1 \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: "=r"(flags), "=r" (tmp) \
|
||||||
|
: "i"(~MSR_IE) \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
# define local_irq_disable() \
|
||||||
|
do { \
|
||||||
|
register unsigned tmp; \
|
||||||
|
asm volatile ("# local_irq_disable \n\t" \
|
||||||
|
"mfs %0, rmsr \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
"andi %0, %0, %1 \n\t" \
|
||||||
|
"mts rmsr, %0 \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: "=r"(tmp) \
|
||||||
|
: "i"(~MSR_IE) \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
# define local_irq_enable() \
|
||||||
|
do { \
|
||||||
|
register unsigned tmp; \
|
||||||
|
asm volatile ("# local_irq_enable \n\t" \
|
||||||
|
"mfs %0, rmsr \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
"ori %0, %0, %1 \n\t" \
|
||||||
|
"mts rmsr, %0 \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: "=r"(tmp) \
|
||||||
|
: "i"(MSR_IE) \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
# endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
|
||||||
|
|
||||||
|
#define local_save_flags(flags) \
|
||||||
|
do { \
|
||||||
|
asm volatile ("# local_save_flags \n\t" \
|
||||||
|
"mfs %0, rmsr \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: "=r"(flags) \
|
||||||
|
: \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define local_irq_restore(flags) \
|
||||||
|
do { \
|
||||||
|
asm volatile ("# local_irq_restore \n\t"\
|
||||||
|
"mts rmsr, %0 \n\t" \
|
||||||
|
"nop \n\t" \
|
||||||
|
: \
|
||||||
|
: "r"(flags) \
|
||||||
|
: "memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
static inline int irqs_disabled(void)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
local_save_flags(flags);
|
||||||
|
return ((flags & MSR_IE) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define raw_irqs_disabled irqs_disabled
|
||||||
|
#define raw_irqs_disabled_flags(flags) ((flags) == 0)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_IRQFLAGS_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/kdebug.h>
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_KMAP_TYPES_H
|
||||||
|
#define _ASM_MICROBLAZE_KMAP_TYPES_H
|
||||||
|
|
||||||
|
enum km_type {
|
||||||
|
KM_BOUNCE_READ,
|
||||||
|
KM_SKB_SUNRPC_DATA,
|
||||||
|
KM_SKB_DATA_SOFTIRQ,
|
||||||
|
KM_USER0,
|
||||||
|
KM_USER1,
|
||||||
|
KM_BIO_SRC_IRQ,
|
||||||
|
KM_BIO_DST_IRQ,
|
||||||
|
KM_PTE0,
|
||||||
|
KM_PTE1,
|
||||||
|
KM_IRQ0,
|
||||||
|
KM_IRQ1,
|
||||||
|
KM_SOFTIRQ0,
|
||||||
|
KM_SOFTIRQ1,
|
||||||
|
KM_TYPE_NR,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_KMAP_TYPES_H */
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_LINKAGE_H
|
||||||
|
#define _ASM_MICROBLAZE_LINKAGE_H
|
||||||
|
|
||||||
|
#define __ALIGN .align 4
|
||||||
|
#define __ALIGN_STR ".align 4"
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_LINKAGE_H */
|
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_LMB_H
|
||||||
|
#define _ASM_MICROBLAZE_LMB_H
|
||||||
|
|
||||||
|
/* LMB limit is OFF */
|
||||||
|
#define LMB_REAL_LIMIT 0xFFFFFFFF
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_LMB_H */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/local.h>
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_MMAN_H
|
||||||
|
#define _ASM_MICROBLAZE_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_MICROBLAZE_MMAN_H */
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_MMU_H
|
||||||
|
#define _ASM_MICROBLAZE_MMU_H
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
typedef struct {
|
||||||
|
struct vm_list_struct *vmlist;
|
||||||
|
unsigned long end_brk;
|
||||||
|
} mm_context_t;
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_MMU_H */
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_MMU_CONTEXT_H
|
||||||
|
#define _ASM_MICROBLAZE_MMU_CONTEXT_H
|
||||||
|
|
||||||
|
# define init_new_context(tsk, mm) ({ 0; })
|
||||||
|
|
||||||
|
# define enter_lazy_tlb(mm, tsk) do {} while (0)
|
||||||
|
# define change_mm_context(old, ctx, _pml4) do {} while (0)
|
||||||
|
# define destroy_context(mm) do {} while (0)
|
||||||
|
# define deactivate_mm(tsk, mm) do {} while (0)
|
||||||
|
# define switch_mm(prev, next, tsk) do {} while (0)
|
||||||
|
# define activate_mm(prev, next) do {} while (0)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_MMU_CONTEXT_H */
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_MODULE_H
|
||||||
|
#define _ASM_MICROBLAZE_MODULE_H
|
||||||
|
|
||||||
|
/* Microblaze Relocations */
|
||||||
|
#define R_MICROBLAZE_NONE 0
|
||||||
|
#define R_MICROBLAZE_32 1
|
||||||
|
#define R_MICROBLAZE_32_PCREL 2
|
||||||
|
#define R_MICROBLAZE_64_PCREL 3
|
||||||
|
#define R_MICROBLAZE_32_PCREL_LO 4
|
||||||
|
#define R_MICROBLAZE_64 5
|
||||||
|
#define R_MICROBLAZE_32_LO 6
|
||||||
|
#define R_MICROBLAZE_SRO32 7
|
||||||
|
#define R_MICROBLAZE_SRW32 8
|
||||||
|
#define R_MICROBLAZE_64_NONE 9
|
||||||
|
#define R_MICROBLAZE_32_SYM_OP_SYM 10
|
||||||
|
/* Keep this the last entry. */
|
||||||
|
#define R_MICROBLAZE_NUM 11
|
||||||
|
|
||||||
|
struct mod_arch_specific {
|
||||||
|
int foo;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define Elf_Shdr Elf32_Shdr
|
||||||
|
#define Elf_Sym Elf32_Sym
|
||||||
|
#define Elf_Ehdr Elf32_Ehdr
|
||||||
|
|
||||||
|
typedef struct { volatile int counter; } module_t;
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_MODULE_H */
|
|
@ -0,0 +1,31 @@
|
||||||
|
#ifndef _ASM_MICROBLAZE_MSGBUF_H
|
||||||
|
#define _ASM_MICROBLAZE_MSGBUF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The msqid64_ds structure for microblaze 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_MICROBLAZE_MSGBUF_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/mutex-dec.h>
|
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_NAMEI_H
|
||||||
|
#define _ASM_MICROBLAZE_NAMEI_H
|
||||||
|
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
/* 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 /* __KERNEL__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_NAMEI_H */
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
|
||||||
|
*
|
||||||
|
* based on PowerPC of_device.h
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_OF_DEVICE_H
|
||||||
|
#define _ASM_MICROBLAZE_OF_DEVICE_H
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The of_device is a kind of "base class" that is a superset of
|
||||||
|
* struct device for use by devices attached to an OF node and
|
||||||
|
* probed using OF properties.
|
||||||
|
*/
|
||||||
|
struct of_device {
|
||||||
|
struct device_node *node; /* to be obsoleted */
|
||||||
|
u64 dma_mask; /* DMA mask */
|
||||||
|
struct device dev; /* Generic device interface */
|
||||||
|
};
|
||||||
|
|
||||||
|
extern ssize_t of_device_get_modalias(struct of_device *ofdev,
|
||||||
|
char *str, ssize_t len);
|
||||||
|
|
||||||
|
extern struct of_device *of_device_alloc(struct device_node *np,
|
||||||
|
const char *bus_id,
|
||||||
|
struct device *parent);
|
||||||
|
|
||||||
|
extern int of_device_uevent(struct device *dev,
|
||||||
|
struct kobj_uevent_env *env);
|
||||||
|
|
||||||
|
extern void of_device_make_bus_id(struct of_device *dev);
|
||||||
|
|
||||||
|
/* This is just here during the transition */
|
||||||
|
#include <linux/of_device.h>
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_OF_DEVICE_H */
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
|
||||||
|
* <benh@kernel.crashing.org>
|
||||||
|
*
|
||||||
|
* This program 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_OF_PLATFORM_H
|
||||||
|
#define _ASM_MICROBLAZE_OF_PLATFORM_H
|
||||||
|
|
||||||
|
/* This is just here during the transition */
|
||||||
|
#include <linux/of_platform.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The list of OF IDs below is used for matching bus types in the
|
||||||
|
* system whose devices are to be exposed as of_platform_devices.
|
||||||
|
*
|
||||||
|
* This is the default list valid for most platforms. This file provides
|
||||||
|
* functions who can take an explicit list if necessary though
|
||||||
|
*
|
||||||
|
* The search is always performed recursively looking for children of
|
||||||
|
* the provided device_node and recursively if such a children matches
|
||||||
|
* a bus type in the list
|
||||||
|
*/
|
||||||
|
|
||||||
|
static const struct of_device_id of_default_bus_ids[] = {
|
||||||
|
{ .type = "soc", },
|
||||||
|
{ .compatible = "soc", },
|
||||||
|
{ .type = "plb5", },
|
||||||
|
{ .type = "plb4", },
|
||||||
|
{ .type = "opb", },
|
||||||
|
{ .type = "simple", },
|
||||||
|
{},
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Platform drivers register/unregister */
|
||||||
|
static inline int of_register_platform_driver(struct of_platform_driver *drv)
|
||||||
|
{
|
||||||
|
return of_register_driver(drv, &of_platform_bus_type);
|
||||||
|
}
|
||||||
|
static inline void of_unregister_platform_driver(struct of_platform_driver *drv)
|
||||||
|
{
|
||||||
|
of_unregister_driver(drv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Platform devices and busses creation */
|
||||||
|
extern struct of_device *of_platform_device_create(struct device_node *np,
|
||||||
|
const char *bus_id,
|
||||||
|
struct device *parent);
|
||||||
|
/* pseudo "matches" value to not do deep probe */
|
||||||
|
#define OF_NO_DEEP_PROBE ((struct of_device_id *)-1)
|
||||||
|
|
||||||
|
extern int of_platform_bus_probe(struct device_node *root,
|
||||||
|
const struct of_device_id *matches,
|
||||||
|
struct device *parent);
|
||||||
|
|
||||||
|
extern struct of_device *of_find_device_by_phandle(phandle ph);
|
||||||
|
|
||||||
|
extern void of_instantiate_rtc(void);
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_OF_PLATFORM_H */
|
|
@ -0,0 +1,140 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Michal Simek
|
||||||
|
* Copyright (C) 2008 PetaLogix
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
* Changes for MMU support:
|
||||||
|
* Copyright (C) 2007 Xilinx, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PAGE_H
|
||||||
|
#define _ASM_MICROBLAZE_PAGE_H
|
||||||
|
|
||||||
|
#include <linux/pfn.h>
|
||||||
|
#include <asm/setup.h>
|
||||||
|
|
||||||
|
/* PAGE_SHIFT determines the page size */
|
||||||
|
#define PAGE_SHIFT (12)
|
||||||
|
#define PAGE_SIZE (1UL << PAGE_SHIFT)
|
||||||
|
#define PAGE_MASK (~(PAGE_SIZE-1))
|
||||||
|
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
#define PAGE_UP(addr) (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
|
||||||
|
#define PAGE_DOWN(addr) ((addr)&(~((PAGE_SIZE)-1)))
|
||||||
|
|
||||||
|
/* align addr on a size boundary - adjust address up/down if needed */
|
||||||
|
#define _ALIGN_UP(addr, size) (((addr)+((size)-1))&(~((size)-1)))
|
||||||
|
#define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1)))
|
||||||
|
|
||||||
|
/* align addr on a size boundary - adjust address up if needed */
|
||||||
|
#define _ALIGN(addr, size) _ALIGN_UP(addr, size)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PAGE_OFFSET -- the first address of the first page of memory. When not
|
||||||
|
* using MMU this corresponds to the first free page in physical memory (aligned
|
||||||
|
* on a page boundary).
|
||||||
|
*/
|
||||||
|
extern unsigned int __page_offset;
|
||||||
|
#define PAGE_OFFSET __page_offset
|
||||||
|
|
||||||
|
#define copy_page(to, from) memcpy((to), (from), PAGE_SIZE)
|
||||||
|
#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
|
||||||
|
#define free_user_page(page, addr) free_page(addr)
|
||||||
|
|
||||||
|
#define clear_page(pgaddr) memset((pgaddr), 0, PAGE_SIZE)
|
||||||
|
|
||||||
|
|
||||||
|
#define clear_user_page(pgaddr, vaddr, page) memset((pgaddr), 0, PAGE_SIZE)
|
||||||
|
#define copy_user_page(vto, vfrom, vaddr, topg) \
|
||||||
|
memcpy((vto), (vfrom), PAGE_SIZE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are used to make use of C type-checking..
|
||||||
|
*/
|
||||||
|
typedef struct page *pgtable_t;
|
||||||
|
typedef struct { unsigned long pte; } pte_t;
|
||||||
|
typedef struct { unsigned long pgprot; } pgprot_t;
|
||||||
|
typedef struct { unsigned long ste[64]; } pmd_t;
|
||||||
|
typedef struct { pmd_t pue[1]; } pud_t;
|
||||||
|
typedef struct { pud_t pge[1]; } pgd_t;
|
||||||
|
|
||||||
|
|
||||||
|
#define pte_val(x) ((x).pte)
|
||||||
|
#define pgprot_val(x) ((x).pgprot)
|
||||||
|
#define pmd_val(x) ((x).ste[0])
|
||||||
|
#define pud_val(x) ((x).pue[0])
|
||||||
|
#define pgd_val(x) ((x).pge[0])
|
||||||
|
|
||||||
|
#define __pte(x) ((pte_t) { (x) })
|
||||||
|
#define __pmd(x) ((pmd_t) { (x) })
|
||||||
|
#define __pgd(x) ((pgd_t) { (x) })
|
||||||
|
#define __pgprot(x) ((pgprot_t) { (x) })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conversions for virtual address, physical address, pfn, and struct
|
||||||
|
* page are defined in the following files.
|
||||||
|
*
|
||||||
|
* virt -+
|
||||||
|
* | asm-microblaze/page.h
|
||||||
|
* phys -+
|
||||||
|
* | linux/pfn.h
|
||||||
|
* pfn -+
|
||||||
|
* | asm-generic/memory_model.h
|
||||||
|
* page -+
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern unsigned long max_low_pfn;
|
||||||
|
extern unsigned long min_low_pfn;
|
||||||
|
extern unsigned long max_pfn;
|
||||||
|
|
||||||
|
#define __pa(vaddr) ((unsigned long) (vaddr))
|
||||||
|
#define __va(paddr) ((void *) (paddr))
|
||||||
|
|
||||||
|
#define phys_to_pfn(phys) (PFN_DOWN(phys))
|
||||||
|
#define pfn_to_phys(pfn) (PFN_PHYS(pfn))
|
||||||
|
|
||||||
|
#define virt_to_pfn(vaddr) (phys_to_pfn((__pa(vaddr))))
|
||||||
|
#define pfn_to_virt(pfn) __va(pfn_to_phys((pfn)))
|
||||||
|
|
||||||
|
#define virt_to_page(vaddr) (pfn_to_page(virt_to_pfn(vaddr)))
|
||||||
|
#define page_to_virt(page) (pfn_to_virt(page_to_pfn(page)))
|
||||||
|
|
||||||
|
#define page_to_phys(page) (pfn_to_phys(page_to_pfn(page)))
|
||||||
|
#define page_to_bus(page) (page_to_phys(page))
|
||||||
|
#define phys_to_page(paddr) (pfn_to_page(phys_to_pfn(paddr)))
|
||||||
|
|
||||||
|
extern unsigned int memory_start;
|
||||||
|
extern unsigned int memory_end;
|
||||||
|
extern unsigned int memory_size;
|
||||||
|
|
||||||
|
#define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_mapnr)
|
||||||
|
|
||||||
|
#define ARCH_PFN_OFFSET (PAGE_OFFSET >> PAGE_SHIFT)
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define tophys(rd, rs) (addik rd, rs, 0)
|
||||||
|
#define tovirt(rd, rs) (addik rd, rs, 0)
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#define virt_addr_valid(vaddr) (pfn_valid(virt_to_pfn(vaddr)))
|
||||||
|
|
||||||
|
/* Convert between virtual and physical address for MMU. */
|
||||||
|
/* Handle MicroBlaze processor with virtual memory. */
|
||||||
|
#define __virt_to_phys(addr) addr
|
||||||
|
#define __phys_to_virt(addr) addr
|
||||||
|
|
||||||
|
#define TOPHYS(addr) __virt_to_phys(addr)
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
|
#include <asm-generic/memory_model.h>
|
||||||
|
#include <asm-generic/page.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_PAGE_H */
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PARAM_H
|
||||||
|
#define _ASM_MICROBLAZE_PARAM_H
|
||||||
|
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
#define HZ CONFIG_HZ /* internal kernel timer frequency */
|
||||||
|
#define USER_HZ 100 /* for user interfaces in "ticks" */
|
||||||
|
#define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
|
#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_MICROBLAZE_PARAM_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <linux/pci.h>
|
|
@ -0,0 +1 @@
|
||||||
|
#include <linux/io.h>
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/percpu.h>
|
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PGALLOC_H
|
||||||
|
#define _ASM_MICROBLAZE_PGALLOC_H
|
||||||
|
|
||||||
|
#define check_pgt_cache() do {} while (0)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_PGALLOC_H */
|
|
@ -0,0 +1,54 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PGTABLE_H
|
||||||
|
#define _ASM_MICROBLAZE_PGTABLE_H
|
||||||
|
|
||||||
|
#include <asm/setup.h>
|
||||||
|
|
||||||
|
#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
|
||||||
|
remap_pfn_range(vma, vaddr, pfn, size, prot)
|
||||||
|
|
||||||
|
#define pgd_present(pgd) (1) /* pages are always present on non MMU */
|
||||||
|
#define pgd_none(pgd) (0)
|
||||||
|
#define pgd_bad(pgd) (0)
|
||||||
|
#define pgd_clear(pgdp)
|
||||||
|
#define kern_addr_valid(addr) (1)
|
||||||
|
#define pmd_offset(a, b) ((void *) 0)
|
||||||
|
|
||||||
|
#define PAGE_NONE __pgprot(0) /* these mean nothing to non MMU */
|
||||||
|
#define PAGE_SHARED __pgprot(0) /* these mean nothing to non MMU */
|
||||||
|
#define PAGE_COPY __pgprot(0) /* these mean nothing to non MMU */
|
||||||
|
#define PAGE_READONLY __pgprot(0) /* these mean nothing to non MMU */
|
||||||
|
#define PAGE_KERNEL __pgprot(0) /* these mean nothing to non MMU */
|
||||||
|
|
||||||
|
#define __swp_type(x) (0)
|
||||||
|
#define __swp_offset(x) (0)
|
||||||
|
#define __swp_entry(typ, off) ((swp_entry_t) { ((typ) | ((off) << 7)) })
|
||||||
|
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
|
||||||
|
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
static inline int pte_file(pte_t pte) { return 0; }
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#define ZERO_PAGE(vaddr) ({ BUG(); NULL; })
|
||||||
|
|
||||||
|
#define swapper_pg_dir ((pgd_t *) NULL)
|
||||||
|
|
||||||
|
#define pgtable_cache_init() do {} while (0)
|
||||||
|
|
||||||
|
#define arch_enter_lazy_cpu_mode() do {} while (0)
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
#include <asm-generic/pgtable.h>
|
||||||
|
|
||||||
|
void setup_memory(void);
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_PGTABLE_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/poll.h>
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_POSIX_TYPES_H
|
||||||
|
#define _ASM_MICROBLAZE_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 int __kernel_mode_t;
|
||||||
|
typedef unsigned int __kernel_nlink_t;
|
||||||
|
typedef long __kernel_off_t;
|
||||||
|
typedef int __kernel_pid_t;
|
||||||
|
typedef unsigned int __kernel_ipc_pid_t;
|
||||||
|
typedef unsigned int __kernel_uid_t;
|
||||||
|
typedef unsigned int __kernel_gid_t;
|
||||||
|
typedef unsigned long __kernel_size_t;
|
||||||
|
typedef long __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 int __kernel_old_uid_t;
|
||||||
|
typedef unsigned int __kernel_old_gid_t;
|
||||||
|
typedef unsigned int __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 /* _ASM_MICROBLAZE_POSIX_TYPES_H */
|
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Michal Simek
|
||||||
|
* Copyright (C) 2008 PetaLogix
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PROCESSOR_H
|
||||||
|
#define _ASM_MICROBLAZE_PROCESSOR_H
|
||||||
|
|
||||||
|
#include <asm/ptrace.h>
|
||||||
|
#include <asm/setup.h>
|
||||||
|
#include <asm/registers.h>
|
||||||
|
#include <asm/segment.h>
|
||||||
|
|
||||||
|
# ifndef __ASSEMBLY__
|
||||||
|
/* from kernel/cpu/mb.c */
|
||||||
|
extern const struct seq_operations cpuinfo_op;
|
||||||
|
|
||||||
|
# define cpu_relax() barrier()
|
||||||
|
# define cpu_sleep() do {} while (0)
|
||||||
|
# define prepare_to_copy(tsk) do {} while (0)
|
||||||
|
|
||||||
|
# endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* User space process size: memory size
|
||||||
|
*
|
||||||
|
* TASK_SIZE on MMU cpu is usually 1GB. However, on no-MMU arch, both
|
||||||
|
* user processes and the kernel is on the same memory region. They
|
||||||
|
* both share the memory space and that is limited by the amount of
|
||||||
|
* physical memory. thus, we set TASK_SIZE == amount of total memory.
|
||||||
|
*/
|
||||||
|
# define TASK_SIZE (0x81000000 - 0x80000000)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default implementation of macro that returns current
|
||||||
|
* instruction pointer ("program counter").
|
||||||
|
*/
|
||||||
|
# define current_text_addr() ({ __label__ _l; _l: &&_l; })
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This decides where the kernel will search for a free chunk of vm
|
||||||
|
* space during mmap's. We won't be using it
|
||||||
|
*/
|
||||||
|
# define TASK_UNMAPPED_BASE 0
|
||||||
|
|
||||||
|
/* definition in include/linux/sched.h */
|
||||||
|
struct task_struct;
|
||||||
|
|
||||||
|
/* thread_struct is gone. use thread_info instead. */
|
||||||
|
struct thread_struct { };
|
||||||
|
# define INIT_THREAD { }
|
||||||
|
|
||||||
|
/* Do necessary setup to start up a newly executed thread. */
|
||||||
|
static inline void start_thread(struct pt_regs *regs,
|
||||||
|
unsigned long pc,
|
||||||
|
unsigned long usp)
|
||||||
|
{
|
||||||
|
regs->pc = pc;
|
||||||
|
regs->r1 = usp;
|
||||||
|
regs->kernel_mode = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free all resources held by a thread. */
|
||||||
|
static inline void release_thread(struct task_struct *dead_task)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free all resources held by a thread. */
|
||||||
|
static inline void exit_thread(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
extern unsigned long thread_saved_pc(struct task_struct *t);
|
||||||
|
|
||||||
|
extern unsigned long get_wchan(struct task_struct *p);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* create a kernel thread without removing it from tasklists
|
||||||
|
*/
|
||||||
|
extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
|
||||||
|
|
||||||
|
# define task_pt_regs(tsk) \
|
||||||
|
(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
|
||||||
|
|
||||||
|
# define KSTK_EIP(tsk) (0)
|
||||||
|
# define KSTK_ESP(tsk) (0)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_PROCESSOR_H */
|
|
@ -0,0 +1,313 @@
|
||||||
|
/*
|
||||||
|
* Definitions for talking to the Open Firmware PROM on
|
||||||
|
* Power Macintosh computers.
|
||||||
|
*
|
||||||
|
* Copyright (C) 1996-2005 Paul Mackerras.
|
||||||
|
*
|
||||||
|
* Updates for PPC64 by Peter Bergner & David Engebretsen, IBM Corp.
|
||||||
|
*
|
||||||
|
* This program 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PROM_H
|
||||||
|
#define _ASM_MICROBLAZE_PROM_H
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/proc_fs.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <asm/irq.h>
|
||||||
|
#include <asm/atomic.h>
|
||||||
|
|
||||||
|
#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1
|
||||||
|
#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
|
||||||
|
|
||||||
|
#define of_compat_cmp(s1, s2, l) strncasecmp((s1), (s2), (l))
|
||||||
|
#define of_prop_cmp(s1, s2) strcmp((s1), (s2))
|
||||||
|
#define of_node_cmp(s1, s2) strcasecmp((s1), (s2))
|
||||||
|
|
||||||
|
/* Definitions used by the flattened device tree */
|
||||||
|
#define OF_DT_HEADER 0xd00dfeed /* marker */
|
||||||
|
#define OF_DT_BEGIN_NODE 0x1 /* Start of node, full name */
|
||||||
|
#define OF_DT_END_NODE 0x2 /* End node */
|
||||||
|
#define OF_DT_PROP 0x3 /* Property: name off, size, content */
|
||||||
|
#define OF_DT_NOP 0x4 /* nop */
|
||||||
|
#define OF_DT_END 0x9
|
||||||
|
|
||||||
|
#define OF_DT_VERSION 0x10
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is what gets passed to the kernel by prom_init or kexec
|
||||||
|
*
|
||||||
|
* The dt struct contains the device tree structure, full pathes and
|
||||||
|
* property contents. The dt strings contain a separate block with just
|
||||||
|
* the strings for the property names, and is fully page aligned and
|
||||||
|
* self contained in a page, so that it can be kept around by the kernel,
|
||||||
|
* each property name appears only once in this page (cheap compression)
|
||||||
|
*
|
||||||
|
* the mem_rsvmap contains a map of reserved ranges of physical memory,
|
||||||
|
* passing it here instead of in the device-tree itself greatly simplifies
|
||||||
|
* the job of everybody. It's just a list of u64 pairs (base/size) that
|
||||||
|
* ends when size is 0
|
||||||
|
*/
|
||||||
|
struct boot_param_header {
|
||||||
|
u32 magic; /* magic word OF_DT_HEADER */
|
||||||
|
u32 totalsize; /* total size of DT block */
|
||||||
|
u32 off_dt_struct; /* offset to structure */
|
||||||
|
u32 off_dt_strings; /* offset to strings */
|
||||||
|
u32 off_mem_rsvmap; /* offset to memory reserve map */
|
||||||
|
u32 version; /* format version */
|
||||||
|
u32 last_comp_version; /* last compatible version */
|
||||||
|
/* version 2 fields below */
|
||||||
|
u32 boot_cpuid_phys; /* Physical CPU id we're booting on */
|
||||||
|
/* version 3 fields below */
|
||||||
|
u32 dt_strings_size; /* size of the DT strings block */
|
||||||
|
/* version 17 fields below */
|
||||||
|
u32 dt_struct_size; /* size of the DT structure block */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef u32 phandle;
|
||||||
|
typedef u32 ihandle;
|
||||||
|
|
||||||
|
struct property {
|
||||||
|
char *name;
|
||||||
|
int length;
|
||||||
|
void *value;
|
||||||
|
struct property *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct device_node {
|
||||||
|
const char *name;
|
||||||
|
const char *type;
|
||||||
|
phandle node;
|
||||||
|
phandle linux_phandle;
|
||||||
|
char *full_name;
|
||||||
|
|
||||||
|
struct property *properties;
|
||||||
|
struct property *deadprops; /* removed properties */
|
||||||
|
struct device_node *parent;
|
||||||
|
struct device_node *child;
|
||||||
|
struct device_node *sibling;
|
||||||
|
struct device_node *next; /* next device of same type */
|
||||||
|
struct device_node *allnext; /* next in list of all nodes */
|
||||||
|
struct proc_dir_entry *pde; /* this node's proc directory */
|
||||||
|
struct kref kref;
|
||||||
|
unsigned long _flags;
|
||||||
|
void *data;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct device_node *of_chosen;
|
||||||
|
|
||||||
|
static inline int of_node_check_flag(struct device_node *n, unsigned long flag)
|
||||||
|
{
|
||||||
|
return test_bit(flag, &n->_flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void of_node_set_flag(struct device_node *n, unsigned long flag)
|
||||||
|
{
|
||||||
|
set_bit(flag, &n->_flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define HAVE_ARCH_DEVTREE_FIXUPS
|
||||||
|
|
||||||
|
static inline void set_node_proc_entry(struct device_node *dn,
|
||||||
|
struct proc_dir_entry *de)
|
||||||
|
{
|
||||||
|
dn->pde = de;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern struct device_node *allnodes; /* temporary while merging */
|
||||||
|
extern rwlock_t devtree_lock; /* temporary while merging */
|
||||||
|
|
||||||
|
extern struct device_node *of_find_all_nodes(struct device_node *prev);
|
||||||
|
extern struct device_node *of_node_get(struct device_node *node);
|
||||||
|
extern void of_node_put(struct device_node *node);
|
||||||
|
|
||||||
|
/* For scanning the flat device-tree at boot time */
|
||||||
|
extern int __init of_scan_flat_dt(int (*it)(unsigned long node,
|
||||||
|
const char *uname, int depth,
|
||||||
|
void *data),
|
||||||
|
void *data);
|
||||||
|
extern void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
|
||||||
|
unsigned long *size);
|
||||||
|
extern int __init
|
||||||
|
of_flat_dt_is_compatible(unsigned long node, const char *name);
|
||||||
|
extern unsigned long __init of_get_flat_dt_root(void);
|
||||||
|
|
||||||
|
/* For updating the device tree at runtime */
|
||||||
|
extern void of_attach_node(struct device_node *);
|
||||||
|
extern void of_detach_node(struct device_node *);
|
||||||
|
|
||||||
|
/* Other Prototypes */
|
||||||
|
extern void finish_device_tree(void);
|
||||||
|
extern void unflatten_device_tree(void);
|
||||||
|
extern int early_uartlite_console(void);
|
||||||
|
extern void early_init_devtree(void *);
|
||||||
|
extern int machine_is_compatible(const char *compat);
|
||||||
|
extern void print_properties(struct device_node *node);
|
||||||
|
extern int prom_n_intr_cells(struct device_node *np);
|
||||||
|
extern void prom_get_irq_senses(unsigned char *senses, int off, int max);
|
||||||
|
extern int prom_add_property(struct device_node *np, struct property *prop);
|
||||||
|
extern int prom_remove_property(struct device_node *np, struct property *prop);
|
||||||
|
extern int prom_update_property(struct device_node *np,
|
||||||
|
struct property *newprop,
|
||||||
|
struct property *oldprop);
|
||||||
|
|
||||||
|
extern struct resource *request_OF_resource(struct device_node *node,
|
||||||
|
int index, const char *name_postfix);
|
||||||
|
extern int release_OF_resource(struct device_node *node, int index);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* OF address retreival & translation
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Helper to read a big number; size is in cells (not bytes) */
|
||||||
|
static inline u64 of_read_number(const u32 *cell, int size)
|
||||||
|
{
|
||||||
|
u64 r = 0;
|
||||||
|
while (size--)
|
||||||
|
r = (r << 32) | *(cell++);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Like of_read_number, but we want an unsigned long result */
|
||||||
|
#define of_read_ulong(cell, size) of_read_number(cell, size)
|
||||||
|
|
||||||
|
/* Translate an OF address block into a CPU physical address
|
||||||
|
*/
|
||||||
|
extern u64 of_translate_address(struct device_node *np, const u32 *addr);
|
||||||
|
|
||||||
|
/* Extract an address from a device, returns the region size and
|
||||||
|
* the address space flags too. The PCI version uses a BAR number
|
||||||
|
* instead of an absolute index
|
||||||
|
*/
|
||||||
|
extern const u32 *of_get_address(struct device_node *dev, int index,
|
||||||
|
u64 *size, unsigned int *flags);
|
||||||
|
extern const u32 *of_get_pci_address(struct device_node *dev, int bar_no,
|
||||||
|
u64 *size, unsigned int *flags);
|
||||||
|
|
||||||
|
/* Get an address as a resource. Note that if your address is
|
||||||
|
* a PIO address, the conversion will fail if the physical address
|
||||||
|
* can't be internally converted to an IO token with
|
||||||
|
* pci_address_to_pio(), that is because it's either called to early
|
||||||
|
* or it can't be matched to any host bridge IO space
|
||||||
|
*/
|
||||||
|
extern int of_address_to_resource(struct device_node *dev, int index,
|
||||||
|
struct resource *r);
|
||||||
|
extern int of_pci_address_to_resource(struct device_node *dev, int bar,
|
||||||
|
struct resource *r);
|
||||||
|
|
||||||
|
/* Parse the ibm,dma-window property of an OF node into the busno, phys and
|
||||||
|
* size parameters.
|
||||||
|
*/
|
||||||
|
void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
|
||||||
|
unsigned long *busno, unsigned long *phys, unsigned long *size);
|
||||||
|
|
||||||
|
extern void kdump_move_device_tree(void);
|
||||||
|
|
||||||
|
/* CPU OF node matching */
|
||||||
|
struct device_node *of_get_cpu_node(int cpu, unsigned int *thread);
|
||||||
|
|
||||||
|
/* Get the MAC address */
|
||||||
|
extern const void *of_get_mac_address(struct device_node *np);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* OF interrupt mapping
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This structure is returned when an interrupt is mapped. The controller
|
||||||
|
* field needs to be put() after use
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define OF_MAX_IRQ_SPEC 4 /* We handle specifiers of at most 4 cells */
|
||||||
|
|
||||||
|
struct of_irq {
|
||||||
|
struct device_node *controller; /* Interrupt controller node */
|
||||||
|
u32 size; /* Specifier size */
|
||||||
|
u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_irq_map_init - Initialize the irq remapper
|
||||||
|
* @flags: flags defining workarounds to enable
|
||||||
|
*
|
||||||
|
* Some machines have bugs in the device-tree which require certain workarounds
|
||||||
|
* to be applied. Call this before any interrupt mapping attempts to enable
|
||||||
|
* those workarounds.
|
||||||
|
*/
|
||||||
|
#define OF_IMAP_OLDWORLD_MAC 0x00000001
|
||||||
|
#define OF_IMAP_NO_PHANDLE 0x00000002
|
||||||
|
|
||||||
|
extern void of_irq_map_init(unsigned int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_irq_map_raw - Low level interrupt tree parsing
|
||||||
|
* @parent: the device interrupt parent
|
||||||
|
* @intspec: interrupt specifier ("interrupts" property of the device)
|
||||||
|
* @ointsize: size of the passed in interrupt specifier
|
||||||
|
* @addr: address specifier (start of "reg" property of the device)
|
||||||
|
* @out_irq: structure of_irq filled by this function
|
||||||
|
*
|
||||||
|
* Returns 0 on success and a negative number on error
|
||||||
|
*
|
||||||
|
* This function is a low-level interrupt tree walking function. It
|
||||||
|
* can be used to do a partial walk with synthetized reg and interrupts
|
||||||
|
* properties, for example when resolving PCI interrupts when no device
|
||||||
|
* node exist for the parent.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int of_irq_map_raw(struct device_node *parent, const u32 *intspec,
|
||||||
|
u32 ointsize, const u32 *addr,
|
||||||
|
struct of_irq *out_irq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_irq_map_one - Resolve an interrupt for a device
|
||||||
|
* @device: the device whose interrupt is to be resolved
|
||||||
|
* @index: index of the interrupt to resolve
|
||||||
|
* @out_irq: structure of_irq filled by this function
|
||||||
|
*
|
||||||
|
* This function resolves an interrupt, walking the tree, for a given
|
||||||
|
* device-tree node. It's the high level pendant to of_irq_map_raw().
|
||||||
|
* It also implements the workarounds for OldWolrd Macs.
|
||||||
|
*/
|
||||||
|
extern int of_irq_map_one(struct device_node *device, int index,
|
||||||
|
struct of_irq *out_irq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_irq_map_pci - Resolve the interrupt for a PCI device
|
||||||
|
* @pdev: the device whose interrupt is to be resolved
|
||||||
|
* @out_irq: structure of_irq filled by this function
|
||||||
|
*
|
||||||
|
* This function resolves the PCI interrupt for a given PCI device. If a
|
||||||
|
* device-node exists for a given pci_dev, it will use normal OF tree
|
||||||
|
* walking. If not, it will implement standard swizzling and walk up the
|
||||||
|
* PCI tree until an device-node is found, at which point it will finish
|
||||||
|
* resolving using the OF tree walking.
|
||||||
|
*/
|
||||||
|
struct pci_dev;
|
||||||
|
extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
|
||||||
|
|
||||||
|
extern int of_irq_to_resource(struct device_node *dev, int index,
|
||||||
|
struct resource *r);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_iomap - Maps the memory mapped IO for a given device_node
|
||||||
|
* @device: the device whose io range will be mapped
|
||||||
|
* @index: index of the io range
|
||||||
|
*
|
||||||
|
* Returns a pointer to the mapped memory
|
||||||
|
*/
|
||||||
|
extern void __iomem *of_iomap(struct device_node *device, int index);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NB: This is here while we transition from using asm/prom.h
|
||||||
|
* to linux/of.h
|
||||||
|
*/
|
||||||
|
#include <linux/of.h>
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_PROM_H */
|
|
@ -0,0 +1,68 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PTRACE_H
|
||||||
|
#define _ASM_MICROBLAZE_PTRACE_H
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
typedef unsigned long microblaze_reg_t;
|
||||||
|
|
||||||
|
struct pt_regs {
|
||||||
|
microblaze_reg_t r0;
|
||||||
|
microblaze_reg_t r1;
|
||||||
|
microblaze_reg_t r2;
|
||||||
|
microblaze_reg_t r3;
|
||||||
|
microblaze_reg_t r4;
|
||||||
|
microblaze_reg_t r5;
|
||||||
|
microblaze_reg_t r6;
|
||||||
|
microblaze_reg_t r7;
|
||||||
|
microblaze_reg_t r8;
|
||||||
|
microblaze_reg_t r9;
|
||||||
|
microblaze_reg_t r10;
|
||||||
|
microblaze_reg_t r11;
|
||||||
|
microblaze_reg_t r12;
|
||||||
|
microblaze_reg_t r13;
|
||||||
|
microblaze_reg_t r14;
|
||||||
|
microblaze_reg_t r15;
|
||||||
|
microblaze_reg_t r16;
|
||||||
|
microblaze_reg_t r17;
|
||||||
|
microblaze_reg_t r18;
|
||||||
|
microblaze_reg_t r19;
|
||||||
|
microblaze_reg_t r20;
|
||||||
|
microblaze_reg_t r21;
|
||||||
|
microblaze_reg_t r22;
|
||||||
|
microblaze_reg_t r23;
|
||||||
|
microblaze_reg_t r24;
|
||||||
|
microblaze_reg_t r25;
|
||||||
|
microblaze_reg_t r26;
|
||||||
|
microblaze_reg_t r27;
|
||||||
|
microblaze_reg_t r28;
|
||||||
|
microblaze_reg_t r29;
|
||||||
|
microblaze_reg_t r30;
|
||||||
|
microblaze_reg_t r31;
|
||||||
|
microblaze_reg_t pc;
|
||||||
|
microblaze_reg_t msr;
|
||||||
|
microblaze_reg_t ear;
|
||||||
|
microblaze_reg_t esr;
|
||||||
|
microblaze_reg_t fsr;
|
||||||
|
int kernel_mode;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define kernel_mode(regs) ((regs)->kernel_mode)
|
||||||
|
#define user_mode(regs) (!kernel_mode(regs))
|
||||||
|
|
||||||
|
#define instruction_pointer(regs) ((regs)->pc)
|
||||||
|
#define profile_pc(regs) instruction_pointer(regs)
|
||||||
|
|
||||||
|
void show_regs(struct pt_regs *);
|
||||||
|
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_PTRACE_H */
|
|
@ -0,0 +1,209 @@
|
||||||
|
/*
|
||||||
|
* Support for the MicroBlaze PVR (Processor Version Register)
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
|
||||||
|
* Copyright (C) 2007 John Williams <john.williams@petalogix.com>
|
||||||
|
* Copyright (C) 2007 - 2009 PetaLogix
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_PVR_H
|
||||||
|
#define _ASM_MICROBLAZE_PVR_H
|
||||||
|
|
||||||
|
#define PVR_MSR_BIT 0x400
|
||||||
|
|
||||||
|
struct pvr_s {
|
||||||
|
unsigned pvr[16];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The following taken from Xilinx's standalone BSP pvr.h */
|
||||||
|
|
||||||
|
/* Basic PVR mask */
|
||||||
|
#define PVR0_PVR_FULL_MASK 0x80000000
|
||||||
|
#define PVR0_USE_BARREL_MASK 0x40000000
|
||||||
|
#define PVR0_USE_DIV_MASK 0x20000000
|
||||||
|
#define PVR0_USE_HW_MUL_MASK 0x10000000
|
||||||
|
#define PVR0_USE_FPU_MASK 0x08000000
|
||||||
|
#define PVR0_USE_EXC_MASK 0x04000000
|
||||||
|
#define PVR0_USE_ICACHE_MASK 0x02000000
|
||||||
|
#define PVR0_USE_DCACHE_MASK 0x01000000
|
||||||
|
#define PVR0_USE_MMU 0x00800000 /* new */
|
||||||
|
#define PVR0_VERSION_MASK 0x0000FF00
|
||||||
|
#define PVR0_USER1_MASK 0x000000FF
|
||||||
|
|
||||||
|
/* User 2 PVR mask */
|
||||||
|
#define PVR1_USER2_MASK 0xFFFFFFFF
|
||||||
|
|
||||||
|
/* Configuration PVR masks */
|
||||||
|
#define PVR2_D_OPB_MASK 0x80000000
|
||||||
|
#define PVR2_D_LMB_MASK 0x40000000
|
||||||
|
#define PVR2_I_OPB_MASK 0x20000000
|
||||||
|
#define PVR2_I_LMB_MASK 0x10000000
|
||||||
|
#define PVR2_INTERRUPT_IS_EDGE_MASK 0x08000000
|
||||||
|
#define PVR2_EDGE_IS_POSITIVE_MASK 0x04000000
|
||||||
|
#define PVR2_D_PLB_MASK 0x02000000 /* new */
|
||||||
|
#define PVR2_I_PLB_MASK 0x01000000 /* new */
|
||||||
|
#define PVR2_INTERCONNECT 0x00800000 /* new */
|
||||||
|
#define PVR2_USE_EXTEND_FSL 0x00080000 /* new */
|
||||||
|
#define PVR2_USE_FSL_EXC 0x00040000 /* new */
|
||||||
|
#define PVR2_USE_MSR_INSTR 0x00020000
|
||||||
|
#define PVR2_USE_PCMP_INSTR 0x00010000
|
||||||
|
#define PVR2_AREA_OPTIMISED 0x00008000
|
||||||
|
#define PVR2_USE_BARREL_MASK 0x00004000
|
||||||
|
#define PVR2_USE_DIV_MASK 0x00002000
|
||||||
|
#define PVR2_USE_HW_MUL_MASK 0x00001000
|
||||||
|
#define PVR2_USE_FPU_MASK 0x00000800
|
||||||
|
#define PVR2_USE_MUL64_MASK 0x00000400
|
||||||
|
#define PVR2_USE_FPU2_MASK 0x00000200 /* new */
|
||||||
|
#define PVR2_USE_IPLBEXC 0x00000100
|
||||||
|
#define PVR2_USE_DPLBEXC 0x00000080
|
||||||
|
#define PVR2_OPCODE_0x0_ILL_MASK 0x00000040
|
||||||
|
#define PVR2_UNALIGNED_EXC_MASK 0x00000020
|
||||||
|
#define PVR2_ILL_OPCODE_EXC_MASK 0x00000010
|
||||||
|
#define PVR2_IOPB_BUS_EXC_MASK 0x00000008
|
||||||
|
#define PVR2_DOPB_BUS_EXC_MASK 0x00000004
|
||||||
|
#define PVR2_DIV_ZERO_EXC_MASK 0x00000002
|
||||||
|
#define PVR2_FPU_EXC_MASK 0x00000001
|
||||||
|
|
||||||
|
/* Debug and exception PVR masks */
|
||||||
|
#define PVR3_DEBUG_ENABLED_MASK 0x80000000
|
||||||
|
#define PVR3_NUMBER_OF_PC_BRK_MASK 0x1E000000
|
||||||
|
#define PVR3_NUMBER_OF_RD_ADDR_BRK_MASK 0x00380000
|
||||||
|
#define PVR3_NUMBER_OF_WR_ADDR_BRK_MASK 0x0000E000
|
||||||
|
#define PVR3_FSL_LINKS_MASK 0x00000380
|
||||||
|
|
||||||
|
/* ICache config PVR masks */
|
||||||
|
#define PVR4_USE_ICACHE_MASK 0x80000000
|
||||||
|
#define PVR4_ICACHE_ADDR_TAG_BITS_MASK 0x7C000000
|
||||||
|
#define PVR4_ICACHE_USE_FSL_MASK 0x02000000
|
||||||
|
#define PVR4_ICACHE_ALLOW_WR_MASK 0x01000000
|
||||||
|
#define PVR4_ICACHE_LINE_LEN_MASK 0x00E00000
|
||||||
|
#define PVR4_ICACHE_BYTE_SIZE_MASK 0x001F0000
|
||||||
|
|
||||||
|
/* DCache config PVR masks */
|
||||||
|
#define PVR5_USE_DCACHE_MASK 0x80000000
|
||||||
|
#define PVR5_DCACHE_ADDR_TAG_BITS_MASK 0x7C000000
|
||||||
|
#define PVR5_DCACHE_USE_FSL_MASK 0x02000000
|
||||||
|
#define PVR5_DCACHE_ALLOW_WR_MASK 0x01000000
|
||||||
|
#define PVR5_DCACHE_LINE_LEN_MASK 0x00E00000
|
||||||
|
#define PVR5_DCACHE_BYTE_SIZE_MASK 0x001F0000
|
||||||
|
|
||||||
|
/* ICache base address PVR mask */
|
||||||
|
#define PVR6_ICACHE_BASEADDR_MASK 0xFFFFFFFF
|
||||||
|
|
||||||
|
/* ICache high address PVR mask */
|
||||||
|
#define PVR7_ICACHE_HIGHADDR_MASK 0xFFFFFFFF
|
||||||
|
|
||||||
|
/* DCache base address PVR mask */
|
||||||
|
#define PVR8_DCACHE_BASEADDR_MASK 0xFFFFFFFF
|
||||||
|
|
||||||
|
/* DCache high address PVR mask */
|
||||||
|
#define PVR9_DCACHE_HIGHADDR_MASK 0xFFFFFFFF
|
||||||
|
|
||||||
|
/* Target family PVR mask */
|
||||||
|
#define PVR10_TARGET_FAMILY_MASK 0xFF000000
|
||||||
|
|
||||||
|
/* MMU descrtiption */
|
||||||
|
#define PVR11_USE_MMU 0xC0000000
|
||||||
|
#define PVR11_MMU_ITLB_SIZE 0x38000000
|
||||||
|
#define PVR11_MMU_DTLB_SIZE 0x07000000
|
||||||
|
#define PVR11_MMU_TLB_ACCESS 0x00C00000
|
||||||
|
#define PVR11_MMU_ZONES 0x003C0000
|
||||||
|
/* MSR Reset value PVR mask */
|
||||||
|
#define PVR11_MSR_RESET_VALUE_MASK 0x000007FF
|
||||||
|
|
||||||
|
|
||||||
|
/* PVR access macros */
|
||||||
|
#define PVR_IS_FULL(pvr) (pvr.pvr[0] & PVR0_PVR_FULL_MASK)
|
||||||
|
#define PVR_USE_BARREL(pvr) (pvr.pvr[0] & PVR0_USE_BARREL_MASK)
|
||||||
|
#define PVR_USE_DIV(pvr) (pvr.pvr[0] & PVR0_USE_DIV_MASK)
|
||||||
|
#define PVR_USE_HW_MUL(pvr) (pvr.pvr[0] & PVR0_USE_HW_MUL_MASK)
|
||||||
|
#define PVR_USE_FPU(pvr) (pvr.pvr[0] & PVR0_USE_FPU_MASK)
|
||||||
|
#define PVR_USE_FPU2(pvr) (pvr.pvr[2] & PVR2_USE_FPU2_MASK)
|
||||||
|
#define PVR_USE_ICACHE(pvr) (pvr.pvr[0] & PVR0_USE_ICACHE_MASK)
|
||||||
|
#define PVR_USE_DCACHE(pvr) (pvr.pvr[0] & PVR0_USE_DCACHE_MASK)
|
||||||
|
#define PVR_VERSION(pvr) ((pvr.pvr[0] & PVR0_VERSION_MASK) >> 8)
|
||||||
|
#define PVR_USER1(pvr) (pvr.pvr[0] & PVR0_USER1_MASK)
|
||||||
|
#define PVR_USER2(pvr) (pvr.pvr[1] & PVR1_USER2_MASK)
|
||||||
|
|
||||||
|
#define PVR_D_OPB(pvr) (pvr.pvr[2] & PVR2_D_OPB_MASK)
|
||||||
|
#define PVR_D_LMB(pvr) (pvr.pvr[2] & PVR2_D_LMB_MASK)
|
||||||
|
#define PVR_I_OPB(pvr) (pvr.pvr[2] & PVR2_I_OPB_MASK)
|
||||||
|
#define PVR_I_LMB(pvr) (pvr.pvr[2] & PVR2_I_LMB_MASK)
|
||||||
|
#define PVR_INTERRUPT_IS_EDGE(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_INTERRUPT_IS_EDGE_MASK)
|
||||||
|
#define PVR_EDGE_IS_POSITIVE(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_EDGE_IS_POSITIVE_MASK)
|
||||||
|
#define PVR_USE_MSR_INSTR(pvr) (pvr.pvr[2] & PVR2_USE_MSR_INSTR)
|
||||||
|
#define PVR_USE_PCMP_INSTR(pvr) (pvr.pvr[2] & PVR2_USE_PCMP_INSTR)
|
||||||
|
#define PVR_AREA_OPTIMISED(pvr) (pvr.pvr[2] & PVR2_AREA_OPTIMISED)
|
||||||
|
#define PVR_USE_MUL64(pvr) (pvr.pvr[2] & PVR2_USE_MUL64_MASK)
|
||||||
|
#define PVR_OPCODE_0x0_ILLEGAL(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_OPCODE_0x0_ILL_MASK)
|
||||||
|
#define PVR_UNALIGNED_EXCEPTION(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_UNALIGNED_EXC_MASK)
|
||||||
|
#define PVR_ILL_OPCODE_EXCEPTION(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_ILL_OPCODE_EXC_MASK)
|
||||||
|
#define PVR_IOPB_BUS_EXCEPTION(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_IOPB_BUS_EXC_MASK)
|
||||||
|
#define PVR_DOPB_BUS_EXCEPTION(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_DOPB_BUS_EXC_MASK)
|
||||||
|
#define PVR_DIV_ZERO_EXCEPTION(pvr) \
|
||||||
|
(pvr.pvr[2] & PVR2_DIV_ZERO_EXC_MASK)
|
||||||
|
#define PVR_FPU_EXCEPTION(pvr) (pvr.pvr[2] & PVR2_FPU_EXC_MASK)
|
||||||
|
#define PVR_FSL_EXCEPTION(pvr) (pvr.pvr[2] & PVR2_USE_EXTEND_FSL)
|
||||||
|
|
||||||
|
#define PVR_DEBUG_ENABLED(pvr) (pvr.pvr[3] & PVR3_DEBUG_ENABLED_MASK)
|
||||||
|
#define PVR_NUMBER_OF_PC_BRK(pvr) \
|
||||||
|
((pvr.pvr[3] & PVR3_NUMBER_OF_PC_BRK_MASK) >> 25)
|
||||||
|
#define PVR_NUMBER_OF_RD_ADDR_BRK(pvr) \
|
||||||
|
((pvr.pvr[3] & PVR3_NUMBER_OF_RD_ADDR_BRK_MASK) >> 19)
|
||||||
|
#define PVR_NUMBER_OF_WR_ADDR_BRK(pvr) \
|
||||||
|
((pvr.pvr[3] & PVR3_NUMBER_OF_WR_ADDR_BRK_MASK) >> 13)
|
||||||
|
#define PVR_FSL_LINKS(pvr) ((pvr.pvr[3] & PVR3_FSL_LINKS_MASK) >> 7)
|
||||||
|
|
||||||
|
#define PVR_ICACHE_ADDR_TAG_BITS(pvr) \
|
||||||
|
((pvr.pvr[4] & PVR4_ICACHE_ADDR_TAG_BITS_MASK) >> 26)
|
||||||
|
#define PVR_ICACHE_USE_FSL(pvr) (pvr.pvr[4] & PVR4_ICACHE_USE_FSL_MASK)
|
||||||
|
#define PVR_ICACHE_ALLOW_WR(pvr) (pvr.pvr[4] & PVR4_ICACHE_ALLOW_WR_MASK)
|
||||||
|
#define PVR_ICACHE_LINE_LEN(pvr) \
|
||||||
|
(1 << ((pvr.pvr[4] & PVR4_ICACHE_LINE_LEN_MASK) >> 21))
|
||||||
|
#define PVR_ICACHE_BYTE_SIZE(pvr) \
|
||||||
|
(1 << ((pvr.pvr[4] & PVR4_ICACHE_BYTE_SIZE_MASK) >> 16))
|
||||||
|
|
||||||
|
#define PVR_DCACHE_ADDR_TAG_BITS(pvr) \
|
||||||
|
((pvr.pvr[5] & PVR5_DCACHE_ADDR_TAG_BITS_MASK) >> 26)
|
||||||
|
#define PVR_DCACHE_USE_FSL(pvr) (pvr.pvr[5] & PVR5_DCACHE_USE_FSL_MASK)
|
||||||
|
#define PVR_DCACHE_ALLOW_WR(pvr) (pvr.pvr[5] & PVR5_DCACHE_ALLOW_WR_MASK)
|
||||||
|
#define PVR_DCACHE_LINE_LEN(pvr) \
|
||||||
|
(1 << ((pvr.pvr[5] & PVR5_DCACHE_LINE_LEN_MASK) >> 21))
|
||||||
|
#define PVR_DCACHE_BYTE_SIZE(pvr) \
|
||||||
|
(1 << ((pvr.pvr[5] & PVR5_DCACHE_BYTE_SIZE_MASK) >> 16))
|
||||||
|
|
||||||
|
|
||||||
|
#define PVR_ICACHE_BASEADDR(pvr) (pvr.pvr[6] & PVR6_ICACHE_BASEADDR_MASK)
|
||||||
|
#define PVR_ICACHE_HIGHADDR(pvr) (pvr.pvr[7] & PVR7_ICACHE_HIGHADDR_MASK)
|
||||||
|
|
||||||
|
#define PVR_DCACHE_BASEADDR(pvr) (pvr.pvr[8] & PVR8_DCACHE_BASEADDR_MASK)
|
||||||
|
#define PVR_DCACHE_HIGHADDR(pvr) (pvr.pvr[9] & PVR9_DCACHE_HIGHADDR_MASK)
|
||||||
|
|
||||||
|
#define PVR_TARGET_FAMILY(pvr) ((pvr.pvr[10] & PVR10_TARGET_FAMILY_MASK) >> 24)
|
||||||
|
|
||||||
|
#define PVR_MSR_RESET_VALUE(pvr) \
|
||||||
|
(pvr.pvr[11] & PVR11_MSR_RESET_VALUE_MASK)
|
||||||
|
|
||||||
|
/* mmu */
|
||||||
|
#define PVR_USE_MMU(pvr) ((pvr.pvr[11] & PVR11_USE_MMU) >> 30)
|
||||||
|
#define PVR_MMU_ITLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_ITLB_SIZE)
|
||||||
|
#define PVR_MMU_DTLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_DTLB_SIZE)
|
||||||
|
#define PVR_MMU_TLB_ACCESS(pvr) (pvr.pvr[11] & PVR11_MMU_TLB_ACCESS)
|
||||||
|
#define PVR_MMU_ZONES(pvr) (pvr.pvr[11] & PVR11_MMU_ZONES)
|
||||||
|
|
||||||
|
|
||||||
|
int cpu_has_pvr(void);
|
||||||
|
void get_pvr(struct pvr_s *pvr);
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_PVR_H */
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Michal Simek
|
||||||
|
* Copyright (C) 2008 PetaLogix
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_REGISTERS_H
|
||||||
|
#define _ASM_MICROBLAZE_REGISTERS_H
|
||||||
|
|
||||||
|
#define MSR_BE (1<<0) /* 0x001 */
|
||||||
|
#define MSR_IE (1<<1) /* 0x002 */
|
||||||
|
#define MSR_C (1<<2) /* 0x004 */
|
||||||
|
#define MSR_BIP (1<<3) /* 0x008 */
|
||||||
|
#define MSR_FSL (1<<4) /* 0x010 */
|
||||||
|
#define MSR_ICE (1<<5) /* 0x020 */
|
||||||
|
#define MSR_DZ (1<<6) /* 0x040 */
|
||||||
|
#define MSR_DCE (1<<7) /* 0x080 */
|
||||||
|
#define MSR_EE (1<<8) /* 0x100 */
|
||||||
|
#define MSR_EIP (1<<9) /* 0x200 */
|
||||||
|
#define MSR_CC (1<<31)
|
||||||
|
|
||||||
|
/* Floating Point Status Register (FSR) Bits */
|
||||||
|
#define FSR_IO (1<<4) /* Invalid operation */
|
||||||
|
#define FSR_DZ (1<<3) /* Divide-by-zero */
|
||||||
|
#define FSR_OF (1<<2) /* Overflow */
|
||||||
|
#define FSR_UF (1<<1) /* Underflow */
|
||||||
|
#define FSR_DO (1<<0) /* Denormalized operand error */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_REGISTERS_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/resource.h>
|
|
@ -0,0 +1,28 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SCATTERLIST_H
|
||||||
|
#define _ASM_MICROBLAZE_SCATTERLIST_H
|
||||||
|
|
||||||
|
struct scatterlist {
|
||||||
|
#ifdef CONFIG_DEBUG_SG
|
||||||
|
unsigned long sg_magic;
|
||||||
|
#endif
|
||||||
|
unsigned long page_link;
|
||||||
|
dma_addr_t dma_address;
|
||||||
|
unsigned int offset;
|
||||||
|
unsigned int length;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define sg_dma_address(sg) ((sg)->dma_address)
|
||||||
|
#define sg_dma_len(sg) ((sg)->length)
|
||||||
|
|
||||||
|
#define ISA_DMA_THRESHOLD (~0UL)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SCATTERLIST_H */
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SECTIONS_H
|
||||||
|
#define _ASM_MICROBLAZE_SECTIONS_H
|
||||||
|
|
||||||
|
#include <asm-generic/sections.h>
|
||||||
|
|
||||||
|
# ifndef __ASSEMBLY__
|
||||||
|
extern char _ssbss[], _esbss[];
|
||||||
|
extern unsigned long __ivt_start[], __ivt_end[];
|
||||||
|
|
||||||
|
# ifdef CONFIG_MTD_UCLINUX
|
||||||
|
extern char *_ebss;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
extern u32 _fdt_start[], _fdt_end[];
|
||||||
|
|
||||||
|
# endif /* !__ASSEMBLY__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_SECTIONS_H */
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Michal Simek
|
||||||
|
* Copyright (C) 2008 PetaLogix
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SEGMENT_H
|
||||||
|
#define _ASM_MICROBLAZE_SEGMENT_H
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned long seg;
|
||||||
|
} mm_segment_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* On Microblaze the fs value is actually the top of the corresponding
|
||||||
|
* address space.
|
||||||
|
*
|
||||||
|
* The fs value determines whether argument validity checking should be
|
||||||
|
* performed or not. If get_fs() == USER_DS, checking is performed, with
|
||||||
|
* get_fs() == KERNEL_DS, checking is bypassed.
|
||||||
|
*
|
||||||
|
* For historical reasons, these macros are grossly misnamed.
|
||||||
|
*
|
||||||
|
* For non-MMU arch like Microblaze, KERNEL_DS and USER_DS is equal.
|
||||||
|
*/
|
||||||
|
# define KERNEL_DS ((mm_segment_t){0})
|
||||||
|
# define USER_DS KERNEL_DS
|
||||||
|
|
||||||
|
# define get_ds() (KERNEL_DS)
|
||||||
|
# define get_fs() (current_thread_info()->addr_limit)
|
||||||
|
# define set_fs(x) \
|
||||||
|
do { current_thread_info()->addr_limit = (x); } while (0)
|
||||||
|
|
||||||
|
# define segment_eq(a, b) ((a).seg == (b).seg)
|
||||||
|
|
||||||
|
# endif /* __ASSEMBLY__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_SEGMENT_H */
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SELFMOD_H
|
||||||
|
#define _ASM_MICROBLAZE_SELFMOD_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BARRIER_BASE_ADDR is constant address for selfmod function.
|
||||||
|
* do not change this value - selfmod function is in
|
||||||
|
* arch/microblaze/kernel/selfmod.c: selfmod_function()
|
||||||
|
*
|
||||||
|
* last 16 bits is used for storing register offset
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BARRIER_BASE_ADDR 0x1234ff00
|
||||||
|
|
||||||
|
void selfmod_function(const int *arr_fce, const unsigned int base);
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SELFMOD_H */
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SEMBUF_H
|
||||||
|
#define _ASM_MICROBLAZE_SEMBUF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The semid64_ds structure for microblaze 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_MICROBLAZE_SEMBUF_H */
|
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SERIAL_H
|
||||||
|
#define _ASM_MICROBLAZE_SERIAL_H
|
||||||
|
|
||||||
|
# define BASE_BAUD (1843200 / 16)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SERIAL_H */
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SETUP_H
|
||||||
|
#define _ASM_MICROBLAZE_SETUP_H
|
||||||
|
|
||||||
|
#define COMMAND_LINE_SIZE 256
|
||||||
|
|
||||||
|
# ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
# ifdef __KERNEL__
|
||||||
|
extern unsigned int boot_cpuid; /* move to smp.h */
|
||||||
|
|
||||||
|
extern char cmd_line[COMMAND_LINE_SIZE];
|
||||||
|
# endif/* __KERNEL__ */
|
||||||
|
|
||||||
|
void early_printk(const char *fmt, ...);
|
||||||
|
|
||||||
|
int setup_early_printk(char *opt);
|
||||||
|
void disable_early_printk(void);
|
||||||
|
|
||||||
|
void heartbeat(void);
|
||||||
|
void setup_heartbeat(void);
|
||||||
|
|
||||||
|
unsigned long long sched_clock(void);
|
||||||
|
|
||||||
|
void time_init(void);
|
||||||
|
void init_IRQ(void);
|
||||||
|
void machine_early_init(const char *cmdline, unsigned int ram,
|
||||||
|
unsigned int fdt);
|
||||||
|
|
||||||
|
void machine_restart(char *cmd);
|
||||||
|
void machine_shutdown(void);
|
||||||
|
void machine_halt(void);
|
||||||
|
void machine_power_off(void);
|
||||||
|
|
||||||
|
# endif /* __ASSEMBLY__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_SETUP_H */
|
|
@ -0,0 +1,42 @@
|
||||||
|
#ifndef _ASM_MICROBLAZE_SHMBUF_H
|
||||||
|
#define _ASM_MICROBLAZE_SHMBUF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The shmid64_ds structure for microblaze 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_MICROBLAZE_SHMBUF_H */
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef _ASM_MICROBLAZE_SHMPARAM_H
|
||||||
|
#define _ASM_MICROBLAZE_SHMPARAM_H
|
||||||
|
|
||||||
|
#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SHMPARAM_H */
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SIGCONTEXT_H
|
||||||
|
#define _ASM_MICROBLAZE_SIGCONTEXT_H
|
||||||
|
|
||||||
|
/* FIXME should be linux/ptrace.h */
|
||||||
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
|
struct sigcontext {
|
||||||
|
struct pt_regs regs;
|
||||||
|
unsigned long oldmask;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SIGCONTEXT_H */
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SIGINFO_H
|
||||||
|
#define _ASM_MICROBLAZE_SIGINFO_H
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <asm-generic/siginfo.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SIGINFO_H */
|
|
@ -0,0 +1,165 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||||
|
* Tetsuya OHKAWA <tetsuya@atmark-techno.com>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SIGNAL_H
|
||||||
|
#define _ASM_MICROBLAZE_SIGNAL_H
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
#define SA_RESTORER 0x04000000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* sigaltstack controls
|
||||||
|
*/
|
||||||
|
#define SS_ONSTACK 1
|
||||||
|
#define SS_DISABLE 2
|
||||||
|
|
||||||
|
#define MINSIGSTKSZ 2048
|
||||||
|
#define SIGSTKSZ 8192
|
||||||
|
|
||||||
|
# ifndef __ASSEMBLY__
|
||||||
|
# include <linux/types.h>
|
||||||
|
# include <asm-generic/signal.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;
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
# include <asm/sigcontext.h>
|
||||||
|
# undef __HAVE_ARCH_SIG_BITOPS
|
||||||
|
|
||||||
|
# define ptrace_signal_deliver(regs, cookie) do { } while (0)
|
||||||
|
|
||||||
|
# else /* !__KERNEL__ */
|
||||||
|
|
||||||
|
/* Here we must cater to libcs that poke about in kernel headers. */
|
||||||
|
|
||||||
|
# define NSIG 32
|
||||||
|
typedef unsigned long sigset_t;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
# endif /* __ASSEMBLY__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_SIGNAL_H */
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SOCKET_H
|
||||||
|
#define _ASM_MICROBLAZE_SOCKET_H
|
||||||
|
|
||||||
|
#include <asm/sockios.h>
|
||||||
|
|
||||||
|
/* For setsockoptions(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_MICROBLAZE_SOCKET_H */
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SOCKIOS_H
|
||||||
|
#define _ASM_MICROBLAZE_SOCKIOS_H
|
||||||
|
|
||||||
|
#include <linux/ioctl.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_MICROBLAZE_SOCKIOS_H */
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
* Microblaze stat structure
|
||||||
|
*
|
||||||
|
* Copyright (C) 2001,02,03 NEC Electronics Corporation
|
||||||
|
* Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General
|
||||||
|
* Public License. See the file COPYING in the main directory of this
|
||||||
|
* archive for more details.
|
||||||
|
*
|
||||||
|
* Written by Miles Bader <miles@gnu.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_STAT_H
|
||||||
|
#define _ASM_MICROBLAZE_STAT_H
|
||||||
|
|
||||||
|
#include <linux/posix_types.h>
|
||||||
|
|
||||||
|
struct stat {
|
||||||
|
unsigned int st_dev;
|
||||||
|
unsigned long st_ino;
|
||||||
|
unsigned int st_mode;
|
||||||
|
unsigned int st_nlink;
|
||||||
|
unsigned int st_uid;
|
||||||
|
unsigned int st_gid;
|
||||||
|
unsigned int st_rdev;
|
||||||
|
unsigned long st_size;
|
||||||
|
unsigned long st_blksize;
|
||||||
|
unsigned long st_blocks;
|
||||||
|
unsigned long st_atime;
|
||||||
|
unsigned long __unused1; /* unsigned long st_atime_nsec */
|
||||||
|
unsigned long st_mtime;
|
||||||
|
unsigned long __unused2; /* unsigned long st_mtime_nsec */
|
||||||
|
unsigned long st_ctime;
|
||||||
|
unsigned long __unused3; /* unsigned long st_ctime_nsec */
|
||||||
|
unsigned long __unused4;
|
||||||
|
unsigned long __unused5;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stat64 {
|
||||||
|
unsigned long long st_dev;
|
||||||
|
unsigned long __unused1;
|
||||||
|
|
||||||
|
unsigned long long st_ino;
|
||||||
|
|
||||||
|
unsigned int st_mode;
|
||||||
|
unsigned int st_nlink;
|
||||||
|
|
||||||
|
unsigned int st_uid;
|
||||||
|
unsigned int st_gid;
|
||||||
|
|
||||||
|
unsigned long long st_rdev;
|
||||||
|
unsigned long __unused3;
|
||||||
|
|
||||||
|
long long st_size;
|
||||||
|
unsigned long st_blksize;
|
||||||
|
|
||||||
|
unsigned long st_blocks; /* No. of 512-byte blocks allocated */
|
||||||
|
unsigned long __unused4; /* future possible st_blocks high bits */
|
||||||
|
|
||||||
|
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 __unused8;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_STAT_H */
|
|
@ -0,0 +1 @@
|
||||||
|
#include <asm-generic/statfs.h>
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_STRING_H
|
||||||
|
#define _ASM_MICROBLAZE_STRING_H
|
||||||
|
|
||||||
|
#ifndef __KERNEL__
|
||||||
|
|
||||||
|
#define __HAVE_ARCH_MEMSET
|
||||||
|
#define __HAVE_ARCH_MEMCPY
|
||||||
|
#define __HAVE_ARCH_MEMMOVE
|
||||||
|
|
||||||
|
extern void *memset(void *, int, __kernel_size_t);
|
||||||
|
extern void *memcpy(void *, const void *, __kernel_size_t);
|
||||||
|
extern void *memmove(void *, const void *, __kernel_size_t);
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_STRING_H */
|
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef _ASM_MICROBLAZE_SWAB_H
|
||||||
|
#define _ASM_MICROBLAZE_SWAB_H
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
|
||||||
|
#define __SWAB_64_THRU_32__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SWAB_H */
|
|
@ -0,0 +1,45 @@
|
||||||
|
#ifndef __ASM_MICROBLAZE_SYSCALLS_H
|
||||||
|
#define __ASM_MICROBLAZE_SYSCALLS_H
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/signal.h>
|
||||||
|
|
||||||
|
/* FIXME will be removed */
|
||||||
|
asmlinkage int sys_ipc(uint call, int first, int second,
|
||||||
|
int third, void *ptr, long fifth);
|
||||||
|
|
||||||
|
struct pt_regs;
|
||||||
|
asmlinkage int sys_vfork(struct pt_regs *regs);
|
||||||
|
asmlinkage int sys_clone(int flags, unsigned long stack, struct pt_regs *regs);
|
||||||
|
asmlinkage int sys_execve(char __user *filenamei, char __user *__user *argv,
|
||||||
|
char __user *__user *envp, struct pt_regs *regs);
|
||||||
|
|
||||||
|
asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len,
|
||||||
|
unsigned long prot, unsigned long flags,
|
||||||
|
unsigned long fd, unsigned long pgoff);
|
||||||
|
|
||||||
|
asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
|
||||||
|
unsigned long prot, unsigned long flags,
|
||||||
|
unsigned long fd, off_t offset);
|
||||||
|
|
||||||
|
/* from signal.c */
|
||||||
|
asmlinkage int sys_sigsuspend(old_sigset_t mask, struct pt_regs *regs);
|
||||||
|
|
||||||
|
asmlinkage int sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
|
||||||
|
struct pt_regs *regs);
|
||||||
|
|
||||||
|
asmlinkage int sys_sigaction(int sig, const struct old_sigaction *act,
|
||||||
|
struct old_sigaction *oact);
|
||||||
|
|
||||||
|
asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
|
||||||
|
struct pt_regs *regs);
|
||||||
|
|
||||||
|
asmlinkage int sys_sigreturn(struct pt_regs *regs);
|
||||||
|
|
||||||
|
asmlinkage int sys_rt_sigreturn(struct pt_regs *regs);
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
#endif /* __ASM_MICROBLAZE_SYSCALLS_H */
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_SYSTEM_H
|
||||||
|
#define _ASM_MICROBLAZE_SYSTEM_H
|
||||||
|
|
||||||
|
#include <asm/registers.h>
|
||||||
|
#include <asm/setup.h>
|
||||||
|
#include <asm/irqflags.h>
|
||||||
|
|
||||||
|
struct task_struct;
|
||||||
|
struct thread_info;
|
||||||
|
|
||||||
|
extern struct task_struct *_switch_to(struct thread_info *prev,
|
||||||
|
struct thread_info *next);
|
||||||
|
|
||||||
|
#define switch_to(prev, next, last) \
|
||||||
|
do { \
|
||||||
|
(last) = _switch_to(task_thread_info(prev), \
|
||||||
|
task_thread_info(next)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define smp_read_barrier_depends() do {} while (0)
|
||||||
|
#define read_barrier_depends() do {} while (0)
|
||||||
|
|
||||||
|
#define nop() asm volatile ("nop")
|
||||||
|
#define mb() barrier()
|
||||||
|
#define rmb() mb()
|
||||||
|
#define wmb() mb()
|
||||||
|
#define set_mb(var, value) do { var = value; mb(); } while (0)
|
||||||
|
#define set_wmb(var, value) do { var = value; wmb(); } while (0)
|
||||||
|
|
||||||
|
#define smp_mb() mb()
|
||||||
|
#define smp_rmb() rmb()
|
||||||
|
#define smp_wmb() wmb()
|
||||||
|
|
||||||
|
void show_trace(struct task_struct *task, unsigned long *stack);
|
||||||
|
void __bad_xchg(volatile void *ptr, int size);
|
||||||
|
|
||||||
|
static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
|
||||||
|
int size)
|
||||||
|
{
|
||||||
|
unsigned long ret;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
switch (size) {
|
||||||
|
case 1:
|
||||||
|
local_irq_save(flags);
|
||||||
|
ret = *(volatile unsigned char *)ptr;
|
||||||
|
*(volatile unsigned char *)ptr = x;
|
||||||
|
local_irq_restore(flags);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
local_irq_save(flags);
|
||||||
|
ret = *(volatile unsigned long *)ptr;
|
||||||
|
*(volatile unsigned long *)ptr = x;
|
||||||
|
local_irq_restore(flags);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
__bad_xchg(ptr, size), ret = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void disable_hlt(void);
|
||||||
|
void enable_hlt(void);
|
||||||
|
void default_idle(void);
|
||||||
|
|
||||||
|
#define xchg(ptr, x) \
|
||||||
|
((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr))))
|
||||||
|
|
||||||
|
void free_init_pages(char *what, unsigned long begin, unsigned long end);
|
||||||
|
void free_initmem(void);
|
||||||
|
extern char *klimit;
|
||||||
|
extern void ret_from_fork(void);
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_FS
|
||||||
|
extern struct dentry *of_debugfs_root;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define arch_align_stack(x) (x)
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_SYSTEM_H */
|
|
@ -0,0 +1,203 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_TERMBITS_H
|
||||||
|
#define _ASM_MICROBLAZE_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 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 B57600 0010001
|
||||||
|
#define B115200 0010002
|
||||||
|
#define B230400 0010003
|
||||||
|
#define B460800 0010004
|
||||||
|
#define B500000 0010005
|
||||||
|
#define B576000 0010006
|
||||||
|
#define B921600 0010007
|
||||||
|
#define BOTHER 0010000
|
||||||
|
#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 (not used) */
|
||||||
|
#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_MICROBLAZE_TERMBITS_H */
|
|
@ -0,0 +1,88 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_TERMIOS_H
|
||||||
|
#define _ASM_MICROBLAZE_TERMIOS_H
|
||||||
|
|
||||||
|
#include <linux/string.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 */
|
||||||
|
|
||||||
|
/* Line disciplines */
|
||||||
|
|
||||||
|
#define N_TTY 0
|
||||||
|
#define N_SLIP 1
|
||||||
|
#define N_MOUSE 2
|
||||||
|
#define N_PPP 3
|
||||||
|
#define N_STRIP 4
|
||||||
|
#define N_AX25 5
|
||||||
|
#define N_X25 6 /* X.25 async */
|
||||||
|
#define N_6PACK 7
|
||||||
|
#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
|
||||||
|
#define N_R3964 9 /* Reserved for Simatic R3964 module */
|
||||||
|
#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
|
||||||
|
#define N_IRDA 11 /* Linux IR - http://irda.sourceforge.net/ */
|
||||||
|
#define N_SMSBLOCK 12 /* SMS block mode - for talking to GSM data cards
|
||||||
|
about SMS messages */
|
||||||
|
#define N_HDLC 13 /* synchronous HDLC */
|
||||||
|
#define N_SYNC_PPP 14
|
||||||
|
#define N_HCI 15 /* Bluetooth HCI UART */
|
||||||
|
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
#include <asm-generic/termios.h>
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_TERMIOS_H */
|
|
@ -0,0 +1,159 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_THREAD_INFO_H
|
||||||
|
#define _ASM_MICROBLAZE_THREAD_INFO_H
|
||||||
|
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
/* we have 8k stack */
|
||||||
|
#define THREAD_SHIFT 13
|
||||||
|
#define THREAD_SIZE (1 << THREAD_SHIFT)
|
||||||
|
#define THREAD_SIZE_ORDER 1
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
# include <linux/types.h>
|
||||||
|
# include <asm/processor.h>
|
||||||
|
# include <asm/segment.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* low level task data that entry.S needs immediate access to
|
||||||
|
* - this struct should fit entirely inside of one cache line
|
||||||
|
* - this struct shares the supervisor stack pages
|
||||||
|
* - if the contents of this structure are changed, the assembly constants
|
||||||
|
* must also be changed
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct cpu_context {
|
||||||
|
__u32 r1; /* stack pointer */
|
||||||
|
__u32 r2;
|
||||||
|
/* dedicated registers */
|
||||||
|
__u32 r13;
|
||||||
|
__u32 r14;
|
||||||
|
__u32 r15;
|
||||||
|
__u32 r16;
|
||||||
|
__u32 r17;
|
||||||
|
__u32 r18;
|
||||||
|
/* non-volatile registers */
|
||||||
|
__u32 r19;
|
||||||
|
__u32 r20;
|
||||||
|
__u32 r21;
|
||||||
|
__u32 r22;
|
||||||
|
__u32 r23;
|
||||||
|
__u32 r24;
|
||||||
|
__u32 r25;
|
||||||
|
__u32 r26;
|
||||||
|
__u32 r27;
|
||||||
|
__u32 r28;
|
||||||
|
__u32 r29;
|
||||||
|
__u32 r30;
|
||||||
|
/* r31 is used as current task pointer */
|
||||||
|
/* special purpose registers */
|
||||||
|
__u32 msr;
|
||||||
|
__u32 ear;
|
||||||
|
__u32 esr;
|
||||||
|
__u32 fsr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct thread_info {
|
||||||
|
struct task_struct *task; /* main task structure */
|
||||||
|
struct exec_domain *exec_domain; /* execution domain */
|
||||||
|
unsigned long flags; /* low level flags */
|
||||||
|
unsigned long status; /* thread-synchronous flags */
|
||||||
|
__u32 cpu; /* current CPU */
|
||||||
|
__s32 preempt_count; /* 0 => preemptable,< 0 => BUG*/
|
||||||
|
mm_segment_t addr_limit; /* thread address space */
|
||||||
|
struct restart_block restart_block;
|
||||||
|
|
||||||
|
struct cpu_context cpu_context;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* macros/functions for gaining access to the thread information structure
|
||||||
|
*
|
||||||
|
* preempt_count needs to be 1 initially, until the scheduler is functional.
|
||||||
|
*/
|
||||||
|
#define INIT_THREAD_INFO(tsk) \
|
||||||
|
{ \
|
||||||
|
.task = &tsk, \
|
||||||
|
.exec_domain = &default_exec_domain, \
|
||||||
|
.flags = 0, \
|
||||||
|
.cpu = 0, \
|
||||||
|
.preempt_count = 1, \
|
||||||
|
.addr_limit = KERNEL_DS, \
|
||||||
|
.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)
|
||||||
|
{
|
||||||
|
register unsigned long sp asm("r1");
|
||||||
|
|
||||||
|
return (struct thread_info *)(sp & ~(THREAD_SIZE-1));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* thread information allocation */
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#define PREEMPT_ACTIVE 0x10000000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* thread information flags
|
||||||
|
* - these are process state flags that various assembly files may
|
||||||
|
* need to access
|
||||||
|
* - pending work-to-be-done flags are in LSW
|
||||||
|
* - other flags in MSW
|
||||||
|
*/
|
||||||
|
#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
|
||||||
|
#define TIF_NOTIFY_RESUME 1 /* resumption notification requested */
|
||||||
|
#define TIF_SIGPENDING 2 /* signal pending */
|
||||||
|
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
|
||||||
|
/* restore singlestep on return to user mode */
|
||||||
|
#define TIF_SINGLESTEP 4
|
||||||
|
#define TIF_IRET 5 /* return with iret */
|
||||||
|
#define TIF_MEMDIE 6
|
||||||
|
#define TIF_FREEZE 14 /* Freezing for suspend */
|
||||||
|
|
||||||
|
/* FIXME change in entry.S */
|
||||||
|
#define TIF_KERNEL_TRACE 8 /* kernel trace active */
|
||||||
|
|
||||||
|
/* true if poll_idle() is polling TIF_NEED_RESCHED */
|
||||||
|
#define TIF_POLLING_NRFLAG 16
|
||||||
|
|
||||||
|
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
||||||
|
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
|
||||||
|
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
|
||||||
|
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
|
||||||
|
#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)
|
||||||
|
#define _TIF_IRET (1<<TIF_IRET)
|
||||||
|
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
||||||
|
#define _TIF_FREEZE (1<<TIF_FREEZE)
|
||||||
|
#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)
|
||||||
|
|
||||||
|
/* work to do on interrupt/exception return */
|
||||||
|
#define _TIF_WORK_MASK 0x0000FFFE
|
||||||
|
/* work to do on any return to u-space */
|
||||||
|
#define _TIF_ALLWORK_MASK 0x0000FFFF
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Thread-synchronous status.
|
||||||
|
*
|
||||||
|
* This is different from the flags in that nobody else
|
||||||
|
* ever touches our thread-synchronous status, so we don't
|
||||||
|
* have to worry about atomic accesses.
|
||||||
|
*/
|
||||||
|
/* FPU was used by this task this quantum (SMP) */
|
||||||
|
#define TS_USEDFPU 0x0001
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
#endif /* _ASM_MICROBLAZE_THREAD_INFO_H */
|
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_TIMEX_H
|
||||||
|
#define _ASM_MICROBLAZE_TIMEX_H
|
||||||
|
|
||||||
|
#define CLOCK_TICK_RATE 1000 /* Timer input freq. */
|
||||||
|
|
||||||
|
typedef unsigned long cycles_t;
|
||||||
|
|
||||||
|
#define get_cycles() (0)
|
||||||
|
|
||||||
|
#endif /* _ASM_TIMEX_H */
|
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_TLB_H
|
||||||
|
#define _ASM_MICROBLAZE_TLB_H
|
||||||
|
|
||||||
|
#define tlb_flush(tlb) do {} while (0)
|
||||||
|
|
||||||
|
#include <asm-generic/tlb.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_TLB_H */
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Atmark Techno, Inc.
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_MICROBLAZE_TLBFLUSH_H
|
||||||
|
#define _ASM_MICROBLAZE_TLBFLUSH_H
|
||||||
|
|
||||||
|
#define flush_tlb() BUG()
|
||||||
|
#define flush_tlb_all() BUG()
|
||||||
|
#define flush_tlb_mm(mm) BUG()
|
||||||
|
#define flush_tlb_page(vma, addr) BUG()
|
||||||
|
#define flush_tlb_range(mm, start, end) BUG()
|
||||||
|
#define flush_tlb_pgtables(mm, start, end) BUG()
|
||||||
|
#define flush_tlb_kernel_range(start, end) BUG()
|
||||||
|
|
||||||
|
#endif /* _ASM_MICROBLAZE_TLBFLUSH_H */
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче