2
0
Fork 0
mirror of https://github.com/AsahiLinux/u-boot synced 2025-02-15 21:49:24 +00:00
u-boot/arch
J. Tang 3c03f4928e x86: Force 32-bit jumps in interrupt handlers
Depending upon the compiler used, IRQ entries could vary in sizes. With
GCC 5.x, the code generator will use short jumps for some IRQ entries
but near jumps for others. For example, GCC 5.4.0 generates the
following:

$ objdump -d interrupt.o
<snip>
00000207 <irq_18>:
207:   6a 12                   push   $0x12
209:   eb 85                   jmp    190 <irq_common_entry>

0000020b <irq_19>:
20b:   6a 13                   push   $0x13
20d:   eb 81                   jmp    190 <irq_common_entry>

0000020f <irq_20>:
20f:   6a 14                   push   $0x14
211:   e9 7a ff ff ff          jmp    190 <irq_common_entry>

00000216 <irq_21>:
216:   6a 15                   push   $0x15
218:   e9 73 ff ff ff          jmp    190 <irq_common_entry>

This causes a problem in cpu_init_interrupts(), because the IDT setup
assumed same sizes for all IRQ entries. GCC 4.x always generated 32-bit
jumps, so this previously was not a problem.

The fix is to force 32-bit near jumps for all entries within the
inline assembly. This works for GCC 5.x, and 4.x was already using
that form of jumping.

Signed-off-by: Jason Tang <tang@jtang.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2017-02-21 14:53:29 +08:00
..
arc Convert CONFIG_ARCH_EARLY_INIT_R to Kconfig 2017-01-25 16:43:48 -05:00
arm ARM: DRA7xx: Fix memory allocation overflow 2017-02-17 17:24:35 -05:00
avr32 efi: Use asmlinkage for EFIAPI 2016-10-19 09:01:53 +02:00
blackfin Convert CONFIG_ARCH_MISC_INIT to Kconfig 2017-01-25 17:38:41 -05:00
m68k spi: Zap cf_qspi driver and related code 2017-01-15 18:29:04 +01:00
microblaze microblaze: Fix endif macro command 2017-02-10 13:59:36 +01:00
mips mips: Use common _AC macro now. 2017-01-10 08:19:26 -05:00
nds32 nds32: Support relocation. 2016-09-29 15:38:10 +08:00
nios2 dm: core: Replace of_offset with accessor 2017-02-08 06:12:14 -07:00
openrisc efi: Use asmlinkage for EFIAPI 2016-10-19 09:01:53 +02:00
powerpc Merge git://git.denx.de/u-boot-fsl-qoriq 2017-02-03 20:33:42 -05:00
sandbox dtoc: Replace dot with underscore to avoid compiler errors 2017-02-08 06:07:35 -07:00
sh sh: generate position independent code for all platforms 2016-12-02 21:32:54 -05:00
sparc efi: Use asmlinkage for EFIAPI 2016-10-19 09:01:53 +02:00
x86 x86: Force 32-bit jumps in interrupt handlers 2017-02-21 14:53:29 +08:00
xtensa Remove arch/${ARCH}/include/asm/errno.h 2016-09-23 17:56:18 -04:00
.gitignore .gitignore: drop include/asm/proc from ignore pattern 2014-06-19 11:18:54 -04:00
Kconfig Convert CONFIG_ARCH_MISC_INIT to Kconfig 2017-01-25 17:38:41 -05:00