Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze

* 'next' of git://git.monstr.eu/linux-2.6-microblaze:
  microblaze: Fix ASM optimized code for LE
  microblaze: Fix unaligned issue on MMU system with BS=0 DIV=1
  microblaze: Fix DTB passing from bootloader
This commit is contained in:
Linus Torvalds 2011-02-02 10:23:58 +11:00
commit afe8a88755
3 changed files with 16 additions and 6 deletions

View File

@ -77,8 +77,18 @@ real_start:
We ensure r7 points to a valid FDT, just in case the bootloader We ensure r7 points to a valid FDT, just in case the bootloader
is broken or non-existent */ is broken or non-existent */
beqi r7, no_fdt_arg /* NULL pointer? don't copy */ beqi r7, no_fdt_arg /* NULL pointer? don't copy */
lw r11, r0, r7 /* Does r7 point to a */ /* Does r7 point to a valid FDT? Load HEADER magic number */
rsubi r11, r11, OF_DT_HEADER /* valid FDT? */ /* Run time Big/Little endian platform */
/* Save 1 as word and load byte - 0 - BIG, 1 - LITTLE */
addik r11, r0, 0x1 /* BIG/LITTLE checking value */
/* __bss_start will be zeroed later - it is just temp location */
swi r11, r0, TOPHYS(__bss_start)
lbui r11, r0, TOPHYS(__bss_start)
beqid r11, big_endian /* DO NOT break delay stop dependency */
lw r11, r0, r7 /* Big endian load in delay slot */
lwr r11, r0, r7 /* Little endian load */
big_endian:
rsubi r11, r11, OF_DT_HEADER /* Check FDT header */
beqi r11, _prepare_copy_fdt beqi r11, _prepare_copy_fdt
or r7, r0, r0 /* clear R7 when not valid DTB */ or r7, r0, r0 /* clear R7 when not valid DTB */
bnei r11, no_fdt_arg /* No - get out of here */ bnei r11, no_fdt_arg /* No - get out of here */

View File

@ -147,10 +147,6 @@
#if CONFIG_XILINX_MICROBLAZE0_USE_BARREL > 0 #if CONFIG_XILINX_MICROBLAZE0_USE_BARREL > 0
#define BSRLI(rD, rA, imm) \ #define BSRLI(rD, rA, imm) \
bsrli rD, rA, imm bsrli rD, rA, imm
#elif CONFIG_XILINX_MICROBLAZE0_USE_DIV > 0
#define BSRLI(rD, rA, imm) \
ori rD, r0, (1 << imm); \
idivu rD, rD, rA
#else #else
#define BSRLI(rD, rA, imm) BSRLI ## imm (rD, rA) #define BSRLI(rD, rA, imm) BSRLI ## imm (rD, rA)
/* Only the used shift constants defined here - add more if needed */ /* Only the used shift constants defined here - add more if needed */

View File

@ -29,6 +29,10 @@
* between mem locations with size of xfer spec'd in bytes * between mem locations with size of xfer spec'd in bytes
*/ */
#ifdef __MICROBLAZEEL__
#error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
#endif
#include <linux/linkage.h> #include <linux/linkage.h>
.text .text
.globl memcpy .globl memcpy