[PATCH v2] x86: Stop relying on magic jmp behavior for early_idt_handlers

H. Peter Anvin hpa@zytor.com
Fri May 22 21:00:00 GMT 2015


On 05/21/2015 11:51 PM, Andy Lutomirski wrote:
>>>
>>>  #ifdef __KERNEL__
>>> +
>>> +/*
>>> + * early_idt_handlers is an array of entry points.  For simplicity, it's
>>> + * a real array.  We allocate nine bytes for each entry: two one-byte
>>> + * push instructions and a five-byte jump in the worst case.
>>> + */
>>> +#define EARLY_IDT_HANDLER_STRIDE 9
>>
>> So how come that two plus five equals nine? ;-)
> 
> A "one-byte push" would be pretty impressive :)
> 

Well, non-REX register pushes are just one byte.  However, these take an
immediate constant.

>>
>> Ditto for the 64-bit side.
> 
> Sounds good.  I'll do all this tomorrow and resend.
> 

Thank you!  Since I trust you, I'll send you this in advance:

Acked-by: H. Peter Anvin <hpa@linux.intel.com>




More information about the Binutils mailing list