aux tables for PowerPC

From: Paul Mackerras (paulus@linuxcare.com.au)
Date: Sat Jun 10 2000 - 07:52:02 EDT

  • Next message: Stephen C. Tweedie: "Re: New Linux 2.5 - 2.6 TODO (Alan Cox suggests delaying reiserfs integration)"

    It turns out that glibc on the PowerPC needs to know the cache line
    size (the reason is so that it can use the dcbz instruction safely;
    dcbz clears an entire cache line to zero and marks it as modified,
    without generating a read to the cache line from memory).

    The Sys V ABI for the PowerPC defines three entries which should be
    put in the auxiliary table when the system starts an executable:
    AT_DCACHEBSIZE, AT_ICACHEBSIZE and AT_UCACHEBSIZE, giving the data,
    instruction, and unified cache block (line) sizes. (The
    AT_UCACHEBSIZE value would be zero on systems with unified caches).

    These three tags are assigned the numbers 10, 11, 12 in the PowerPC
    Sys V ABI. Unfortunately these numbers are assigned to AT_NOTELF,
    AT_UID and AT_EUID in include/linux/elf.h, and AT_UID and AT_EUID are
    actually used in fs/binfmt_elf.c.

    So on PowerPC we want to put in AT_*CACHEBSIZE entries but if we do,
    we'll end up with two different entries with tag 11, likewise with 12.

    Does anyone know where the numbers for AT_NOTELF, AT_UID and AT_EUID
    come from? Are they just arbitrarily assigned in the linux source or
    do they come from some standard, e.g. posix or something?

    Thanks,
    Paul.

    -- 
    Paul Mackerras, Senior Open Source Researcher, Linuxcare, Inc.
    +61 2 6262 8990 tel, +61 2 6262 8991 fax
    paulus@linuxcare.com.au, http://www.linuxcare.com.au/
    Linuxcare.  Support for the revolution.
    

    - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



    This archive was generated by hypermail 2b29 : Sat Jun 10 2000 - 07:55:32 EDT