[lkml]   [2001]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [patch] 2.4.6-pre3 unresolved symbol do_softirq
    On Wed, Jun 13, 2001 at 07:21:41AM -0700, David S. Miller wrote:
    > I can't believe there is no reliable way to get rid of that
    > pesky "$" gcc is adding to the symbol. Oh well...

    GCC on ARM does a similar thing - all constants in the assembler are
    prefixed with '#' or '@'. Using the 'i' constraint adds this. This
    behaviour is actually useful when you want to pass a constant or a
    register - it allows GCC to make the decision for you, and do the
    right thing in the assembler fragment. Eg, the following code used
    to be in the kernel until 2.3:

    extern __inline__ void __outb (unsigned int value, unsigned int port)
    unsigned long temp;
    __asm__ __volatile__(
    "tst %2, #0x80000000\n\t"
    "mov %0, %4\n\t"
    "addeq %0, %0, %3\n\t"
    "strb %1, [%0, %2, lsl #2] @ outb"
    : "=&r" (temp)
    : "r" (value), "r" (port), "Ir" (PCIO_BASE - IO_BASE), "Ir" (IO_BASE)
    : "cc");

    %3 and %4 might be a constant:
    mov r5, #0x03000000

    or a real register if the constant can't be loaded in one instruction:
    mov r5, r1

    'I' in this case means "a constant suitable for use with the arithmetic

    Russell King ( The developer of ARM Linux

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 12:55    [W:0.023 / U:0.216 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site