Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [patch V4 part 5 13/31] x86/irq: Convey vector as argument and not in ptregs | Date | Mon, 11 May 2020 16:35:52 +0200 |
| |
Lai,
Lai Jiangshan <jiangshanlai+lkml@gmail.com> writes: > On Tue, May 5, 2020 at 10:23 PM Thomas Gleixner <tglx@linutronix.de> wrote: >> +SYM_CODE_START(irq_entries_start) >> + vector=FIRST_EXTERNAL_VECTOR >> + .rept (FIRST_SYSTEM_VECTOR - FIRST_EXTERNAL_VECTOR) >> + UNWIND_HINT_IRET_REGS >> + .byte 0x6a, vector >> + jmp common_interrupt >> + .align 8 >> + vector=vector+1 >> + .endr >> +SYM_CODE_END(irq_entries_start) > > Using ".byte 0x6a, vector" is somewhat ugly. > > I hope it should be " pushq $(s8_to_s64(vector))", which can also > help to reduce bunches of comments about ".byte 0x6a, vector". > > However, I don't know how to implement s8_to_s64() here.
Neither do I.
> But at least the following code works (generates the same two-byte > machine code as ".byte 0x6a, vector" does): > > .if vector < 128 > pushq $(vector) > .else > pushq $(0xffffffffffffff00+vector) > .endif
Only slightly less ugly and needs as much commentry as the above.
Thanks,
tglx
| |