Messages in this thread |  | | | Date | Wed, 23 Apr 2003 10:24:26 -0400 (EDT) | | From | "Richard B. Johnson" <> | | Subject | Re: Wanted: A decent assembler |
| |
On Wed, 23 Apr 2003, Chuck Ebbert wrote:
> > Chuck Ebbert wrote: > > > <mangled asm source> > > Should be: > > > .if NR_IRQS gt 16 # only build this for IO-APIC > .align 8,0x90 # make ENTRY have exact address > irq_align=8 # start with 8-byte alignment > ENTRY(high_irq_entries_start) > .rept NR_IRQS-16 # the rest of the stubs > .align irq_align,0x90 > 1: pushl $vector-256 # 5-byte instruction > jmp common_interrupt # 2 or 5 bytes (8 or 32-bit offset) > 2: > .if 2b-1b > 8 # offset changed to 32-bit > irq_align=16 # switch to 16-byte alignment > .endif > .data > .long 1b > .text > vector=vector+1 > .endr > .endif > > \
Well the source has several errors. I fixed a couple and made the jump (temporarily) a fixed-length jump. The remaining error is the improper construction of the label "vector", which needs to be fixed and I need to take a work-break. I think all you need to do is pre-define it, i.e., like the following:
NR_IRQS = 32
.if NR_IRQS > 16 # only build this for IO-APIC .align 8,0x90 # make ENTRY have exact address irq_align=8 # start with 8-byte alignment #ENTRY(high_irq_entries_start) vector = 0; # Define as a variable, not label .rept NR_IRQS-16 # the rest of the stubs .align irq_align,0x90 1: pushl $vector # 5-byte instruction ljmp common_interrupt # 2 or 5 bytes (8 or 32-bit offset) 2: .if 2b-1b > 8 # offset changed to 32-bit irq_align=16 # switch to 16-byte alignment .endif .data .long 1b .text vector=vector+1 .endr .endif
Cheers, Dick Johnson Penguin : Linux version 2.4.20 on an i686 machine (797.90 BogoMips). Why is the government concerned about the lunatic fringe? Think about it.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |