From: Russell King <rmk@dyn-67.arm.linux.org.uk>
Date: Sat, 28 Mar 2009 20:30:18 +0000 (+0000)
Subject: Merge branch 'master' into devel
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=9759d22c8348343b0da4e25d6150c41712686c14;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git

Merge branch 'master' into devel

Conflicts:
	arch/arm/include/asm/elf.h
	arch/arm/kernel/module.c
---

9759d22c8348343b0da4e25d6150c41712686c14
diff --cc arch/arm/include/asm/elf.h
index def8eac6e89d,ce3b36e9df81..d7da19bcf928
--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@@ -50,7 -50,7 +50,8 @@@ typedef struct user_fp elf_fpregset_t
  #define R_ARM_ABS32	2
  #define R_ARM_CALL	28
  #define R_ARM_JUMP24	29
+ #define R_ARM_V4BX	40
 +#define R_ARM_PREL31	42
  
  /*
   * These are used to set parameters in the core dumps.
diff --cc arch/arm/kernel/module.c
index 13dbd5bf5cc2,9f509fd00fda..d1731e39b496
--- a/arch/arm/kernel/module.c
+++ b/arch/arm/kernel/module.c
@@@ -155,11 -132,15 +155,20 @@@ apply_relocate(Elf32_Shdr *sechdrs, con
  			*(u32 *)loc |= offset & 0x00ffffff;
  			break;
  
+ 	       case R_ARM_V4BX:
+ 		       /* Preserve Rm and the condition code. Alter
+ 			* other bits to re-code instruction as
+ 			* MOV PC,Rm.
+ 			*/
+ 		       *(u32 *)loc &= 0xf000000f;
+ 		       *(u32 *)loc |= 0x01a0f000;
+ 		       break;
+ 
 +		case R_ARM_PREL31:
 +			offset = *(u32 *)loc + sym->st_value - loc;
 +			*(u32 *)loc = offset & 0x7fffffff;
 +			break;
 +
  		default:
  			printk(KERN_ERR "%s: unknown relocation: %u\n",
  			       module->name, ELF32_R_TYPE(rel->r_info));