summaryrefslogtreecommitdiff
path: root/arch/microblaze/kernel
AgeCommit message (Collapse)Author
2010-10-21microblaze: Support timer on AXI liteMichal Simek
New microblaze systems uses two buses. One for memories and flashes and the second for low-speed peripherals which can run on different CLK. This is the reason why the kernel is trying to read clock-frequency directly from node. If there is then the kernel will work with it. If not then cpu CLK is used. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Add support for little-endian MicroblazeMichal Simek
Microblaze little-endian toolchain exports __MICROBLAZEEL__ which is used in the kernel to identify little/big endian. The most of the changes are in loading values from DTB which is always big endian. Little endian platforms are based on new AXI bus which has impact to early uartlite initialization. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: KGDB little endian supportMichal Simek
Just need to use little-endian opcode for brki r16, 0x18 Signed-off-by: Michal Simek <monstr@monstr.eu> CC: Jason Wessel <jason.wessel@windriver.com>
2010-10-21microblaze: Add PVR for endians plus detectionMichal Simek
Upcomming microblaze version will support little-endian. Signed-off-by: Michal Simek <monstr@monstr.eu> Acked-by: Grant Likely <grant.likely@secretlab.ca>
2010-10-21microblaze: Support early console on uart16550Michal Simek
Early console support reuse setting from U-BOOT that's why it is not necessary to setup baudrates, etc. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Do not compile early console support for uartlite if is disabledMichal Simek
Kconfig blocks to select any other early console support that's why this patch has no real impact on current kernel version. But it is done because of uart16550. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Setup early console dynamicallyMichal Simek
Just setup pointer early console in run time. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Rename all uartlite early printk functionsMichal Simek
This is done because of uart16550 early printk support Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Remove additional compatible propertiesMichal Simek
Device-tree BSP generates longer compatible properties that's why we can remove extra/old one. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Remove hardcoded asm instraction for PVR loadingMichal Simek
It comes from past where pvr wasn't supported in msr instruction. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Use static const char * const where possibleJoe Perches
Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Export missing symbols for modulesMichal Simek
Several kernel modules requires empty_zero_page and mbc to be exported. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Add libgcc function directly to kernelMichal Simek
Replaced libgcc functions with asm optimized implementation. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: wire up prlimit64 and fanotify* syscallsMichal Simek
Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Add new microblaze versionsMichal Simek
PVR for 7.30.b, 8.00.a versions. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: remove OUTPUT_FORMAT from linker scriptMichal Simek
OUTPUT_FORMAT setup bigendian platform. Microblaze Linux port is becoming bi endian that's why it is removed. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Fix r16 and r17 reg savingMichal Simek
r16 and r17 should be saved across interrupt and exception handling. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Report if only one timer is usedMichal Simek
Kernel needs two timers because of clocksource and clockevent. It is better to show warning message directly on early console if available. If it isn't available kernel log buffer contains it. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Clear return value in pt_regsMichal Simek
Signal code uses r3 value which saved in restore_sigcontext to rt_sigframe but it require to be zeroed. If is not zero rt_sigframe contains wrong values. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Fix sys_rt_sigreturn_wrapperMichal Simek
Do not save return registers before rt_sigreturn is called. _user_exception(syscall handler) already setup return address that's why it is removed from rt_sigreturn_wrapper. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Remove old user debugging gdb stubMichal Simek
Old gdb uses priviledged exception handler to handle gdb exception. New gdb uses brki r16, 0x18 that's why we can remove old gdb support. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: kgdb: Remove unused variable and fix return valueMichal Simek
I forget to remove unused variable from kgdb_arch_handle_exception. Fix return value in microblaze_kgdb_break function. Error log: arch/microblaze/kernel/kgdb.c: In function 'microblaze_kgdb_break': arch/microblaze/kernel/kgdb.c:83: warning: 'return' with a value, in function returning void arch/microblaze/kernel/kgdb.c: In function 'kgdb_arch_handle_exception': arch/microblaze/kernel/kgdb.c:119: warning: unused variable 'cpu' Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-10-21microblaze: Remove pr_<level> uses of KERN_<level>Joe Perches
Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-18Merge branch 'merge-devicetree' of git://git.secretlab.ca/git/linux-2.6Linus Torvalds
* 'merge-devicetree' of git://git.secretlab.ca/git/linux-2.6: spi.h: missing kernel-doc notation, please fix of: fix missing headers for of_address_to_resource() in MTD and SysACE drivers of: Fix missing includes ata: update for of_device to platform_device replacement microblaze: Fix of: eliminate of_device->node and dev_archdata->{of,prom}_node microblaze: Fix of/address: Merge all of the bus translation code booting-without-of: Remove nonexistent chapters from TOC, fix numbering
2010-08-17Make do_execve() take a const filename pointerDavid Howells
Make do_execve() take a const filename pointer so that kernel_execve() compiles correctly on ARM: arch/arm/kernel/sys_arm.c:88: warning: passing argument 1 of 'do_execve' discards qualifiers from pointer target type This also requires the argv and envp arguments to be consted twice, once for the pointer array and once for the strings the array points to. This is because do_execve() passes a pointer to the filename (now const) to copy_strings_kernel(). A simpler alternative would be to cast the filename pointer in do_execve() when it's passed to copy_strings_kernel(). do_execve() may not change any of the strings it is passed as part of the argv or envp lists as they are some of them in .rodata, so marking these strings as const should be fine. Further kernel_execve() and sys_execve() need to be changed to match. This has been test built on x86_64, frv, arm and mips. Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: Ralf Baechle <ralf@linux-mips.org> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-16microblaze: Fix of/address: Merge all of the bus translation codeMichal Simek
Commit dbbdee94734bf6f1db7af42008a53655e77cab8f removed of_irq_pci_swizzle but didn't use pci_swizzle_interrupt_pin instead. Signed-off-by: Michal Simek <monstr@monstr.eu> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-08-13Mark arguments to certain syscalls as being constDavid Howells
Mark arguments to certain system calls as being const where they should be but aren't. The list includes: (*) The filename arguments of various stat syscalls, execve(), various utimes syscalls and some mount syscalls. (*) The filename arguments of some syscall helpers relating to the above. (*) The buffer argument of various write syscalls. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-05Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6Linus Torvalds
* 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6: (63 commits) of/platform: Register of_platform_drivers with an "of:" prefix of/address: Clean up function declarations of/spi: call of_register_spi_devices() from spi core code of: Provide default of_node_to_nid() implementation. of/device: Make of_device_make_bus_id() usable by other code. of/irq: Fix endian issues in parsing interrupt specifiers of: Fix phandle endian issues of/flattree: fix of_flat_dt_is_compatible() to match the full compatible string of: remove of_default_bus_ids of: make of_find_device_by_node generic microblaze: remove references to of_device and to_of_device sparc: remove references to of_device and to_of_device powerpc: remove references to of_device and to_of_device of/device: Replace of_device with platform_device in includes and core code of/device: Protect against binding of_platform_drivers to non-OF devices of: remove asm/of_device.h of: remove asm/of_platform.h of/platform: remove all of_bus_type and of_platform_bus_type references of: Merge of_platform_bus_type with platform_bus_type drivercore/of: Add OF style matching to platform bus ... Fix up trivial conflicts in arch/microblaze/kernel/Makefile due to just some obj-y removals by the devicetree branch, while the microblaze updates added a new file.
2010-08-04microblaze: Add KGDB supportMichal Simek
Kgdb uses brki r16, 0x18 instruction to call low level _debug_exception function which save current state to pt_regs and call microblaze_kgdb_break function. _debug_exception should be called only from the kernel space. User space calling is not supported because user application debugging uses different handling. pt_regs_to_gdb_regs loads additional special registers which can't be changed * Enable KGDB in Kconfig * Remove ancient not-tested KGDB support * Remove ancient _debug_exception code from entry.S Only MMU KGDB support is supported. Signed-off-by: Michal Simek <monstr@monstr.eu> CC: Jason Wessel <jason.wessel@windriver.com> CC: John Williams <john.williams@petalogix.com> CC: Edgar E. Iglesias <edgar.iglesias@petalogix.com> CC: linux-kernel@vger.kernel.org Acked-by: Jason Wessel <jason.wessel@windriver.com>
2010-08-04microblaze: Support brki rX, 0x18 for user application debuggingMichal Simek
This is the first patch which add support for user application debugging through brki rX, 0x18 vector. This patch has side effect which also remove security issue to use brki rX, 0x18 to freeze kernel. Support for old gdb support via priviledged exception (brk r0, r0) is still there. It will be remove in future. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Remove nop after MSRCLR/SET, MTS, MFS instructionsMichal Simek
We need to save instruction and the latest Microblaze shouldn't have any problem with it. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Simplify syscall rutineMichal Simek
Syscall can be called only from userspace that's why we don't need to check which space kernel come from. Kernel syscall calling is not check and shouldn't come throught this part of code. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Move PT_MODE saving to delay slotMichal Simek
We can save one more instruction if PT_MODE is saved in delay slot Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Fix _interrupt functionMichal Simek
Save instructions by using delay slot and clear UMS only if kernel comes from user space. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Fix _user_exception functionMichal Simek
Saving some instructions. Clear VMS bit if kernel comes from kernel space. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Put together addik instructionsMichal Simek
Saving instructions by adding 2/3 addik instructions to one. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Use delay slot in syscall macrosMichal Simek
Saving instruction with delay slot usage. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Save kernel mode in delay slotMichal Simek
This change save one instruction if kernel comes from kernel space. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Do not mix register saving and mode settingMichal Simek
Separate reg saving and mode setting. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Move SAVE_STATE upwardMichal Simek
SAVE_STATE macro could be used by other rutines too. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: entry.S: Macro optimizationMichal Simek
We are not working with values from MSR that's why we can discard it and use r11 for different purpose without saving/restoring. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Optimize hw exception rutineMichal Simek
Remove set_vms because UMS is cleared and VMS is already setup. Optimize function calling which save one additional instruction. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Implement clear_ums macro and fix SAVE_STATE macroMichal Simek
VMS is always setup because VM mode was before exception/syscall/interrupt. Kernel continues in kernel mode that's why we have to clear UMS bit if kernel comes from user space. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Remove additional setup for kernel_modeMichal Simek
PT_MODE stores information if kernel comes from user or kernel space. If come from user space, PT_MODE contains 0. If come from kernel store, PT_MODE contains non zero value. We don't need to save value 1. I am using r1 register which contains non zero value. This change save one additional instruction. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Optimize SAVE_STATE macroMichal Simek
SAVE_STATE macro could be used for user_exception or interrupt functions. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Remove additional loadingMichal Simek
We don't need to save r0 to PT_R0. It could be additional operation. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Completely remove working with R11 registerMichal Simek
We don't need to save R11 register. There is easy way to use only R1 which is saved and restore later. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Do not setup BIP in _debug_exceptionMichal Simek
BIP is already setup. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Simplify _debug_exception functionMichal Simek
Keep together all arguments for send_sig function. Move returning address to delay slot which is executed. Remove additional send_sig loading. I am using IMM part of rtbd instruction with r0. old solution: addik r11, r0, send_sig rtbd r11, 0 nop new solution: rtbd r0, send_sig nop There is one instruction saving. Signed-off-by: Michal Simek <monstr@monstr.eu>
2010-08-04microblaze: Optimize SAVE_STATE macroMichal Simek
It is necessary to setup BIP and EE and clear EIP only for unaligned exception handler. The rest of hw exception handlers don't require it. HW exception occured and we are not in virtual mode. That's why we can do operations protected by EIP. Interrupt, next hw exception or syscall can't occur. EIP is cleared by rted. This change speedup page_fault hw exception handler which is critical path. There is also necessary to save R11 content before flag setup for unaligned exception. Signed-off-by: Michal Simek <monstr@monstr.eu>