tile: use proper .align directives on __ex_table sections
This may fix a reported bug where an R_TILEGX_64 in a module was not pointing to an aligned address. Reported-by: Simon Marchi <simon.marchi@polymtl.ca> Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
".pushsection .fixup,\"ax\"\n" \
|
||||
"0: { movei %0, %5; j 9f }\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
".align 8\n" \
|
||||
".quad 1b, 0b\n" \
|
||||
".popsection\n" \
|
||||
"9:" \
|
||||
|
@@ -127,8 +127,10 @@ extern int fixup_exception(struct pt_regs *regs);
|
||||
|
||||
#ifdef __LP64__
|
||||
#define _ASM_PTR ".quad"
|
||||
#define _ASM_ALIGN ".align 8"
|
||||
#else
|
||||
#define _ASM_PTR ".long"
|
||||
#define _ASM_ALIGN ".align 4"
|
||||
#endif
|
||||
|
||||
#define __get_user_asm(OP, x, ptr, ret) \
|
||||
@@ -137,6 +139,7 @@ extern int fixup_exception(struct pt_regs *regs);
|
||||
"0: { movei %1, 0; movei %0, %3 }\n" \
|
||||
"j 9f\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
_ASM_ALIGN "\n" \
|
||||
_ASM_PTR " 1b, 0b\n" \
|
||||
".popsection\n" \
|
||||
"9:" \
|
||||
@@ -168,6 +171,7 @@ extern int fixup_exception(struct pt_regs *regs);
|
||||
"0: { movei %1, 0; movei %2, 0 }\n" \
|
||||
"{ movei %0, %4; j 9f }\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
".align 4\n" \
|
||||
".word 1b, 0b\n" \
|
||||
".word 2b, 0b\n" \
|
||||
".popsection\n" \
|
||||
@@ -224,6 +228,7 @@ extern int __get_user_bad(void)
|
||||
".pushsection .fixup,\"ax\"\n" \
|
||||
"0: { movei %0, %3; j 9f }\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
_ASM_ALIGN "\n" \
|
||||
_ASM_PTR " 1b, 0b\n" \
|
||||
".popsection\n" \
|
||||
"9:" \
|
||||
@@ -248,6 +253,7 @@ extern int __get_user_bad(void)
|
||||
".pushsection .fixup,\"ax\"\n" \
|
||||
"0: { movei %0, %4; j 9f }\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
".align 4\n" \
|
||||
".word 1b, 0b\n" \
|
||||
".word 2b, 0b\n" \
|
||||
".popsection\n" \
|
||||
|
Reference in New Issue
Block a user