summaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel
Commit message (Collapse)AuthorAgeFilesLines
* microblaze: Fix msr instruction detectionMichal Simek2011-02-072-10/+9
| | | | | | | | | | | Fix msr instructions detection. The current code just use msrclr for loading msr content and compare it with proper MSR content. If msrclr is not implemented r8 contains pc address. Previous code wanted to use MSR carry bit but if msrclr wasn't implemented carry wasn't cleared. Signed-off-by: Michal Simek <monstr@monstr.eu>
* microblaze: Fix asm compilation warningMichal Simek2011-02-071-2/+2
| | | | | | | | | Microblaze ASM doesn't support hex values for mfs instructions. /tmp/ccwiXVmt.s: Assembler messages: /tmp/ccwiXVmt.s:19: Warning: ignoring operands: x00 Signed-off-by: Michal Simek <monstr@monstr.eu>
* microblaze: Fix unaligned issue on MMU system with BS=0 DIV=1Michal Simek2011-01-281-4/+0
| | | | | | | | | | | | | | | | | Unaligned code use shift for finding register operand. There is used BSRLI(r8,r8,2) macro which is expand for BS=0, DIV=1 by ori rD, r0, (1 << imm); \ idivu rD, rD, rA but if rD is equal rA then ori instruction rewrite value which should be devide. The patch remove this macro which use idivu instruction because idivu takes 32/34 cycles. The highest shifting is 20 which takes 20 cycles. Signed-off-by: Michal Simek <monstr@monstr.eu>
* microblaze: Fix DTB passing from bootloaderMichal Simek2011-01-281-2/+12
| | | | | | | | | | | | | Little endian system needs to check OF_DT_HEADER but it is swapped because it is in big-endian. Microblaze LE provides lwr instruction which loads magic number in BIG endian format which can be compared. There is used the fact that if you write 0x1 as word and load it as byte then you get for big-endian zero and 1 for little-endian. Signed-off-by: Michal Simek <monstr@monstr.eu>
* dt/flattree: Return virtual address from early_init_dt_alloc_memory_arch()Grant Likely2011-01-151-2/+2
| | | | | | | | The physical address is never used by the device tree code when allocating memory for unflattening. Change the architecture's alloc hook to return the virutal address instead. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
* Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblazeLinus Torvalds2011-01-116-23/+56
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'next' of git://git.monstr.eu/linux-2.6-microblaze: microblaze: remove obsolete DEBUG_BOOTMEM microblaze: trivial: Fix removed the part of line microblaze: Fix __muldi3 function for little-endian. microblaze: Clear i/dcache for sw breakpoints microblaze: Remove useless early_init_dt_check_for_initrd microblaze: Fix unaligned exception for little endian platform microblaze: Add PVR for Microblaze v8.00.b microblaze: Correct PVR access macros Revert "microblaze: Simplify syscall rutine" microblaze: Fix initramfs arch/microblaze: Remove unnecessary semicolons
| * microblaze: Clear i/dcache for sw breakpointsMichal Simek2011-01-031-0/+3
| | | | | | | | | | | | | | | | | | | | There is necessary to flush dcache and invalidate icache for address where breakpoint (brki r16, 0x18) was. The reason is that for some cases icache line still keeps brki instruction and it is not updated by origin instruction maintains by gdbserver. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Remove useless early_init_dt_check_for_initrdMichal Simek2011-01-031-3/+1
| | | | | | | | | | | | | | Remove copy&paste error. Microblaze doesn't support initrd. Signed-off-by: Walter Goossens <waltergoossens@home.nl> Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Fix unaligned exception for little endian platformMichal Simek2011-01-031-0/+9
| | | | | | | | | | | | Half word unaligned accesses need to be fixed. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Add PVR for Microblaze v8.00.bMichal Simek2011-01-031-0/+1
| | | | | | | | | | | | Microblaze v8.00.b have 0x13 version string. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * Revert "microblaze: Simplify syscall rutine"Michal Simek2010-11-181-7/+39
| | | | | | | | | | | | | | | | | | This reverts commit 0e41c90908881a1b8205c66a66becec7d8d4eb4a. Break jffs2 rootfs because the patch removes syscall calling from kernel space. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Fix initramfsMichal Simek2010-11-181-13/+3
| | | | | | | | | | | | | | | | Patch: initramfs: generalize initramfs_data.xxx.S variants (sha1 6ae64e428f74e7bacab898ef9665dda719ea6fde) requires hooks in linker script. Signed-off-by: Michal Simek <monstr@monstr.eu>
* | of/net: Move of_get_mac_address() to a common source file.David Daney2010-11-011-38/+0
|/ | | | | | | | | | | | There are two identical implementations of of_get_mac_address(), one each in arch/powerpc/kernel/prom_parse.c and arch/microblaze/kernel/prom_parse.c. Move this function to a new common file of_net.{c,h} and adjust all the callers to include the new header. Signed-off-by: David Daney <ddaney@caviumnetworks.com> [grant.likely@secretlab.ca: protect header with #ifdef] Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
* ptrace: cleanup arch_ptrace() on microblazeNamhyung Kim2010-10-271-1/+1
| | | | | | | | | Remove checking @addr greater than 0 because @addr is now unsigned. Signed-off-by: Namhyung Kim <namhyung@gmail.com> Cc: Michal Simek <monstr@monstr.eu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* ptrace: change signature of arch_ptrace()Namhyung Kim2010-10-271-1/+2
| | | | | | | | | | | | | | | Fix up the arguments to arch_ptrace() to take account of the fact that @addr and @data are now unsigned long rather than long as of a preceding patch in this series. Signed-off-by: Namhyung Kim <namhyung@gmail.com> Cc: <linux-arch@vger.kernel.org> Acked-by: Roland McGrath <roland@redhat.com> Acked-by: David Howells <dhowells@redhat.com> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblazeLinus Torvalds2010-10-2517-108/+192
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'next' of git://git.monstr.eu/linux-2.6-microblaze: (42 commits) microblaze: Fix build with make 3.82 fbdev/xilinxfb: Microblaze driver support microblaze: Support C optimized lib functions for little-endian microblaze: Separate library optimized functions microblaze: Support timer on AXI lite microblaze: Add support for little-endian Microblaze microblaze: KGDB little endian support microblaze: Add PVR for endians plus detection net: emaclite: Add support for little-endian platforms microblaze: trivial: Add comment for AXI pvr microblaze: pci-common cleanup microblaze: Support early console on uart16550 microblaze: Do not compile early console support for uartlite if is disabled microblaze: Setup early console dynamically microblaze: Rename all uartlite early printk functions microblaze: remove early printk uarlite console dependency from header microblaze: Remove additional compatible properties microblaze: Remove hardcoded asm instraction for PVR loading microblaze: Use static const char * const where possible microblaze: Define VMALLOC_START/END ...
| * microblaze: Support timer on AXI liteMichal Simek2010-10-211-5/+16
| | | | | | | | | | | | | | | | | | | | | | 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>
| * microblaze: Add support for little-endian MicroblazeMichal Simek2010-10-215-11/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * microblaze: KGDB little endian supportMichal Simek2010-10-211-0/+4
| | | | | | | | | | | | | | 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>
| * microblaze: Add PVR for endians plus detectionMichal Simek2010-10-213-1/+4
| | | | | | | | | | | | | | Upcomming microblaze version will support little-endian. Signed-off-by: Michal Simek <monstr@monstr.eu> Acked-by: Grant Likely <grant.likely@secretlab.ca>
| * microblaze: Support early console on uart16550Michal Simek2010-10-212-0/+97
| | | | | | | | | | | | | | 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>
| * microblaze: Do not compile early console support for uartlite if is disabledMichal Simek2010-10-211-2/+7
| | | | | | | | | | | | | | | | 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>
| * microblaze: Setup early console dynamicallyMichal Simek2010-10-211-1/+2
| | | | | | | | | | | | Just setup pointer early console in run time. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Rename all uartlite early printk functionsMichal Simek2010-10-211-7/+7
| | | | | | | | | | | | This is done because of uart16550 early printk support Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Remove additional compatible propertiesMichal Simek2010-10-213-6/+0
| | | | | | | | | | | | | | Device-tree BSP generates longer compatible properties that's why we can remove extra/old one. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Remove hardcoded asm instraction for PVR loadingMichal Simek2010-10-211-1/+1
| | | | | | | | | | | | It comes from past where pvr wasn't supported in msr instruction. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Use static const char * const where possibleJoe Perches2010-10-213-12/+12
| | | | | | | | | | Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Export missing symbols for modulesMichal Simek2010-10-211-0/+7
| | | | | | | | | | | | | | Several kernel modules requires empty_zero_page and mbc to be exported. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Add libgcc function directly to kernelMichal Simek2010-10-211-25/+0
| | | | | | | | | | | | Replaced libgcc functions with asm optimized implementation. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: wire up prlimit64 and fanotify* syscallsMichal Simek2010-10-211-0/+3
| | | | | | | | Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Add new microblaze versionsMichal Simek2010-10-211-0/+2
| | | | | | | | | | | | PVR for 7.30.b, 8.00.a versions. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: remove OUTPUT_FORMAT from linker scriptMichal Simek2010-10-211-1/+0
| | | | | | | | | | | | | | 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>
| * microblaze: Fix r16 and r17 reg savingMichal Simek2010-10-211-7/+4
| | | | | | | | | | | | r16 and r17 should be saved across interrupt and exception handling. Signed-off-by: Michal Simek <monstr@monstr.eu>
| * microblaze: Report if only one timer is usedMichal Simek2010-10-212-7/+1
| | | | | | | | | | | | | | | | | | 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>
| * microblaze: Clear return value in pt_regsMichal Simek2010-10-211-0/+2
| | | | | | | | | | | | | | | | 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>
| * microblaze: Fix sys_rt_sigreturn_wrapperMichal Simek2010-10-211-7/+1
| | | | | | | | | | | | | | | | 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>
| * microblaze: Remove old user debugging gdb stubMichal Simek2010-10-211-8/+1
| | | | | | | | | | | | | | | | 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>
| * microblaze: kgdb: Remove unused variable and fix return valueMichal Simek2010-10-211-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * microblaze: Remove pr_<level> uses of KERN_<level>Joe Perches2010-10-211-10/+6
| | | | | | | | | | Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Michal Simek <monstr@monstr.eu>
* | of/flattree: Eliminate need to provide early_init_dt_scan_chosen_archGrant Likely2010-10-211-5/+0
|/ | | | | | | | | | | | | | This patch refactors the early init parsing of the chosen node so that architectures aren't forced to provide an empty implementation of early_init_dt_scan_chosen_arch. Instead, if an architecture wants to do something different, it can either use a wrapper function around early_init_dt_scan_chosen(), or it can replace it altogether. This patch was written in preparation to adding device tree support to both x86 ad MIPS. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Tested-by: David Daney <ddaney@caviumnetworks.com>
* Merge branch 'merge-devicetree' of git://git.secretlab.ca/git/linux-2.6Linus Torvalds2010-08-181-1/+1
|\ | | | | | | | | | | | | | | | | | | | | * '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
| * microblaze: Fix of/address: Merge all of the bus translation codeMichal Simek2010-08-161-1/+1
| | | | | | | | | | | | | | | | | | 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>
* | Make do_execve() take a const filename pointerDavid Howells2010-08-171-3/+7
|/ | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Mark arguments to certain syscalls as being constDavid Howells2010-08-131-1/+1
| | | | | | | | | | | | | | | | 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>
* Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6Linus Torvalds2010-08-057-1214/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * '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.
| * of: remove of_default_bus_idsJonas Bonn2010-07-242-50/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This list used was by only two platforms with all other platforms defining an own list of valid bus id's to pass to of_platform_bus_probe. This patch: i) copies the default list to the two platforms that depended on it (powerpc) ii) remove the usage of of_default_bus_ids in of_platform_bus_probe iii) removes the definition of the list from all architectures that defined it Passing a NULL 'matches' parameter to of_platform_bus_probe is still valid; the function returns no error in that case as the NULL value is equivalent to an empty list. Signed-off-by: Jonas Bonn <jonas@southpole.se> [grant.likely@secretlab.ca: added __initdata annotations, warn on and return error on missing match table, and fix whitespace errors] Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
| * of: make of_find_device_by_node genericJonas Bonn2010-07-241-16/+0
| | | | | | | | | | | | | | | | | | | | | | There's no need for this function to be architecture specific and all four architectures defining it had the same definition. The function has been moved to drivers/of/platform.c. Signed-off-by: Jonas Bonn <jonas@southpole.se> [grant.likely@secretlab.ca: moved to drivers/of/platform.c, simplified code, and added kerneldoc comment] Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: David S. Miller <davem@davemloft.net>
| * microblaze: remove references to of_device and to_of_deviceGrant Likely2010-07-241-3/+3
| | | | | | | | | | | | | | | | of_device is just a #define alias to platform_device. This patch replaces all references to it with platform_device. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
| * of/platform: remove all of_bus_type and of_platform_bus_type referencesGrant Likely2010-07-241-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both of_bus_type and of_platform_bus_type are just #define aliases for the platform bus. This patch removes all references to them and switches to the of_register_platform_driver()/of_unregister_platform_driver() API for registering. Subsequent patches will convert each user of of_register_platform_driver() into plain platform_drivers without the of_platform_driver shim. At which point the of_register_platform_driver()/of_unregister_platform_driver() functions can be removed. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: David S. Miller <davem@davemloft.net>
| * of: Merge of_platform_bus_type with platform_bus_typeGrant Likely2010-07-242-17/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of_platform_bus was being used in the same manner as the platform_bus. The only difference being that of_platform_bus devices are generated from data in the device tree, and platform_bus devices are usually statically allocated in platform code. Having them separate causes the problem of device drivers having to be registered twice if it was possible for the same device to appear on either bus. This patch removes of_platform_bus_type and registers all of_platform bus devices and drivers on the platform bus instead. A previous patch made the of_device structure an alias for the platform_device structure, and a shim is used to adapt of_platform_drivers to the platform bus. After all of of_platform_bus drivers are converted to be normal platform drivers, the shim code can be removed. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: David S. Miller <davem@davemloft.net>