Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 595d681f authored by Mike Frysinger's avatar Mike Frysinger
Browse files

Blackfin: rename Blackfin relocs according to the toolchain



The latest Blackfin toolchain has fixed its relocation scheme to match
other ports: always use R_BFIN_ prefix and capitalize everything.  This
brings the kernel in line with those fixes.

Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent 780172bf
Loading
Loading
Loading
Loading
+42 −42
Original line number Diff line number Diff line
@@ -55,50 +55,50 @@ do { \
#define ELF_FDPIC_CORE_EFLAGS	EF_BFIN_FDPIC
#define ELF_EXEC_PAGESIZE	4096

#define	R_unused0	0	/* relocation type 0 is not defined */
#define R_pcrel5m2	1	/*LSETUP part a */
#define R_unused1	2	/* relocation type 2 is not defined */
#define R_pcrel10	3	/* type 3, if cc jump <target>  */
#define R_pcrel12_jump	4	/* type 4, jump <target> */
#define R_rimm16	5	/* type 0x5, rN = <target> */
#define R_luimm16	6	/* # 0x6, preg.l=<target> Load imm 16 to lower half */
#define R_huimm16  	7	/* # 0x7, preg.h=<target> Load imm 16 to upper half */
#define R_pcrel12_jump_s 8	/* # 0x8 jump.s <target> */
#define R_pcrel24_jump_x 9	/* # 0x9 jump.x <target> */
#define R_pcrel24       10	/* # 0xa call <target> , not expandable */
#define R_unusedb       11	/* # 0xb not generated */
#define R_unusedc       12	/* # 0xc  not used */
#define R_pcrel24_jump_l 13	/*0xd jump.l <target> */
#define R_pcrel24_call_x 14	/* 0xE, call.x <target> if <target> is above 24 bit limit call through P1 */
#define R_var_eq_symb    15	/* 0xf, linker should treat it same as 0x12 */
#define R_byte_data      16	/* 0x10, .byte var = symbol */
#define R_byte2_data     17	/* 0x11, .byte2 var = symbol */
#define R_byte4_data     18	/* 0x12, .byte4 var = symbol and .var var=symbol */
#define R_pcrel11        19	/* 0x13, lsetup part b */
#define R_unused14      20	/* 0x14, undefined */
#define R_unused15       21	/* not generated by VDSP 3.5 */
#define R_BFIN_UNUSED0         0   /* relocation type 0 is not defined */
#define R_BFIN_PCREL5M2        1   /* LSETUP part a */
#define R_BFIN_UNUSED1         2   /* relocation type 2 is not defined */
#define R_BFIN_PCREL10         3   /* type 3, if cc jump <target> */
#define R_BFIN_PCREL12_JUMP    4   /* type 4, jump <target> */
#define R_BFIN_RIMM16          5   /* type 0x5, rN = <target> */
#define R_BFIN_LUIMM16         6   /* # 0x6, preg.l=<target> Load imm 16 to lower half */
#define R_BFIN_HUIMM16         7   /* # 0x7, preg.h=<target> Load imm 16 to upper half */
#define R_BFIN_PCREL12_JUMP_S  8   /* # 0x8 jump.s <target> */
#define R_BFIN_PCREL24_JUMP_X  9   /* # 0x9 jump.x <target> */
#define R_BFIN_PCREL24         10  /* # 0xa call <target> , not expandable */
#define R_BFIN_UNUSEDB         11  /* # 0xb not generated */
#define R_BFIN_UNUSEDC         12  /* # 0xc  not used */
#define R_BFIN_PCREL24_JUMP_L  13  /* 0xd jump.l <target> */
#define R_BFIN_PCREL24_CALL_X  14  /* 0xE, call.x <target> if <target> is above 24 bit limit call through P1 */
#define R_BFIN_VAR_EQ_SYMB     15  /* 0xf, linker should treat it same as 0x12 */
#define R_BFIN_BYTE_DATA       16  /* 0x10, .byte var = symbol */
#define R_BFIN_BYTE2_DATA      17  /* 0x11, .byte2 var = symbol */
#define R_BFIN_BYTE4_DATA      18  /* 0x12, .byte4 var = symbol and .var var=symbol */
#define R_BFIN_PCREL11         19  /* 0x13, lsetup part b */
#define R_BFIN_UNUSED14        20  /* 0x14, undefined */
#define R_BFIN_UNUSED15        21  /* not generated by VDSP 3.5 */

/* arithmetic relocations */
#define R_push		 0xE0
#define R_const		 0xE1
#define R_add		 0xE2
#define R_sub		 0xE3
#define R_mult		 0xE4
#define R_div		 0xE5
#define R_mod		 0xE6
#define R_lshift	 0xE7
#define R_rshift	 0xE8
#define R_and		 0xE9
#define R_or		 0xEA
#define R_xor		 0xEB
#define R_land		 0xEC
#define R_lor		 0xED
#define R_len		 0xEE
#define R_neg		 0xEF
#define R_comp		 0xF0
#define R_page		 0xF1
#define R_hwpage	 0xF2
#define R_addr		 0xF3
#define R_BFIN_PUSH            0xE0
#define R_BFIN_CONST           0xE1
#define R_BFIN_ADD             0xE2
#define R_BFIN_SUB             0xE3
#define R_BFIN_MULT            0xE4
#define R_BFIN_DIV             0xE5
#define R_BFIN_MOD             0xE6
#define R_BFIN_LSHIFT          0xE7
#define R_BFIN_RSHIFT          0xE8
#define R_BFIN_AND             0xE9
#define R_BFIN_OR              0xEA
#define R_BFIN_XOR             0xEB
#define R_BFIN_LAND            0xEC
#define R_BFIN_LOR             0xED
#define R_BFIN_LEN             0xEE
#define R_BFIN_NEG             0xEF
#define R_BFIN_COMP            0xF0
#define R_BFIN_PAGE            0xF1
#define R_BFIN_HWPAGE          0xF2
#define R_BFIN_ADDR            0xF3

/* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
   use of this is to invoke "./ld.so someprog" to test out a new version of
+11 −11
Original line number Diff line number Diff line
@@ -201,8 +201,8 @@ apply_relocate(Elf_Shdr * sechdrs, const char *strtab,
/*            Arithmetic relocations are handled.                        */
/*            We do not expect LSETUP to be split and hence is not       */
/*            handled.                                                   */
/*            R_byte and R_byte2 are also not handled as the gas         */
/*            does not generate it.                                      */
/*            R_BFIN_BYTE and R_BFIN_BYTE2 are also not handled as the   */
/*            gas does not generate it.                                  */
/*************************************************************************/
int
apply_relocate_add(Elf_Shdr * sechdrs, const char *strtab,
@@ -243,8 +243,8 @@ apply_relocate_add(Elf_Shdr * sechdrs, const char *strtab,
#endif
		switch (ELF32_R_TYPE(rel[i].r_info)) {

		case R_pcrel24:
		case R_pcrel24_jump_l:
		case R_BFIN_PCREL24:
		case R_BFIN_PCREL24_JUMP_L:
			/* Add the value, subtract its postition */
			location16 =
			    (uint16_t *) (sechdrs[sechdrs[relsec].sh_info].
@@ -266,18 +266,18 @@ apply_relocate_add(Elf_Shdr * sechdrs, const char *strtab,
			    (*location16 & 0xff00) | (value >> 16 & 0x00ff);
			*(location16 + 1) = value & 0xffff;
			break;
		case R_pcrel12_jump:
		case R_pcrel12_jump_s:
		case R_BFIN_PCREL12_JUMP:
		case R_BFIN_PCREL12_JUMP_S:
			value -= (uint32_t) location32;
			value >>= 1;
			*location16 = (value & 0xfff);
			break;
		case R_pcrel10:
		case R_BFIN_PCREL10:
			value -= (uint32_t) location32;
			value >>= 1;
			*location16 = (value & 0x3ff);
			break;
		case R_luimm16:
		case R_BFIN_LUIMM16:
			pr_debug("before %x after %x\n", *location16,
				       (value & 0xffff));
			tmp = (value & 0xffff);
@@ -286,7 +286,7 @@ apply_relocate_add(Elf_Shdr * sechdrs, const char *strtab,
			} else
				*location16 = tmp;
			break;
		case R_huimm16:
		case R_BFIN_HUIMM16:
			pr_debug("before %x after %x\n", *location16,
				       ((value >> 16) & 0xffff));
			tmp = ((value >> 16) & 0xffff);
@@ -295,10 +295,10 @@ apply_relocate_add(Elf_Shdr * sechdrs, const char *strtab,
			} else
				*location16 = tmp;
			break;
		case R_rimm16:
		case R_BFIN_RIMM16:
			*location16 = (value & 0xffff);
			break;
		case R_byte4_data:
		case R_BFIN_BYTE4_DATA:
			pr_debug("before %x after %x\n", *location32, value);
			*location32 = value;
			break;