On Fri, Feb 10, 2017 at 11:46 AM, Bin Meng <bmeng...@gmail.com> wrote: > On Fri, Feb 10, 2017 at 10:54 AM, J. Tang <t...@jtang.org> wrote: >> 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 <t...@jtang.org> >> --- >> arch/x86/cpu/i386/interrupt.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> > > Reviewed-by: Bin Meng <bmeng...@gmail.com>
applied to u-boot-x86, thanks! _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot