Messages in this thread |  | | From | Keith Owens <> | | Subject | Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq | | Date | Wed, 13 Jun 2001 23:58:05 +1000 |
| |
On Wed, 13 Jun 2001 05:13:02 -0700 (PDT), "David S. Miller" <davem@redhat.com> wrote: >Keith Owens writes: > > do_softirq is called from asm code which does not get preprocessed. > > It needs to be exported with no version. > >It can get preprocessed if you know how. Simply use the "i" asm >constraint for an extra argument, and use the symbol there. For >example: > > __asm__("%0" : : "i" (my_versioned_symbol)); > >It works and we've been doing it on sparc for ages.
It works for integers but call do_softirq is more of a problem. I could not find an asm constraint that generated correct code in a single instruction. The closest I could get was __asm__("call *%%eax" : : "a" (do_softirq)); The 'obvious' __asm__("call %0" : : "m" (do_softirq)); calls to a location that contains the address of do_softirq, oops.
Any other architectures that call do_softirq inside asm would need similar hard coding of indirect branches. It is simpler to export do_softirq with no version, and have cleaner asm.
- 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/
|  |