22 Mar, 2007

1 commit


13 Nov, 2006

1 commit


07 Jul, 2006

1 commit

  • The support for Briq machines has been floating around as patches for
    ages. This cleans it up and adds it once for all.

    Some of this is based on initial code provided by Karsten Jeppesen
    and mostly rewritten from scratch by me.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

21 Jun, 2006

1 commit

  • Floating point exceptions should not be enabled by default,
    as this setting impacts the performance on some CPUs, in
    particular the Cell BE. Since the bits are inherited from
    parent processes, the place to change the default is the
    thread struct used for init.

    glibc sets this up correctly per thread in its fesetenv
    function, so user space should not be impacted by this
    setting. None of the other common libc implementations
    (uClibc, dietlibc, newlib, klibc) has support for fp
    exceptions, so they are unlikely to be hit by this either.

    There is a small risk that somebody wrote their own
    application that manually sets the fpscr bits instead
    of calling fesetenv, without changing the MSR bits as well.
    Those programs will break with this change.

    It probably makes sense to change glibc in the future
    to be more clever about FE bits, so that when running
    on a CPU where this is expensive, it disables exceptions
    ASAP, while it keeps them enabled on CPUs where running
    with exceptions on is cheaper than changing the state
    often.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Arnd Bergmann
     

09 Jun, 2006

3 commits

  • This gives the ability to control whether alignment exceptions get
    fixed up or reported to the process as a SIGBUS, using the existing
    PR_SET_UNALIGN and PR_GET_UNALIGN prctls. We do not implement the
    option of logging a message on alignment exceptions.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • This adds the PowerPC part of the code to allow processes to change
    their endian mode via prctl.

    This also extends the alignment exception handler to be able to fix up
    alignment exceptions that occur in little-endian mode, both for
    "PowerPC" little-endian and true little-endian.

    We always enter signal handlers in big-endian mode -- the support for
    little-endian mode does not amount to the creation of a little-endian
    user/kernel ABI. If the signal handler returns, the endian mode is
    restored to what it was when the signal was delivered.

    We have two new kernel CPU feature bits, one for PPC little-endian and
    one for true little-endian. Most of the classic 32-bit processors
    support PPC little-endian, and this is reflected in the CPU feature
    table. There are two corresponding feature bits reported to userland
    in the AT_HWCAP aux vector entry.

    This is based on an earlier patch by Anton Blanchard.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • This patch cleans up some locking & error handling in the ppc vdso and
    moves the vdso base pointer from the thread struct to the mm context
    where it more logically belongs. It brings the powerpc implementation
    closer to Ingo's new x86 one and also adds an arch_vma_name() function
    allowing to print [vsdo] in /proc//maps if Ingo's x86 vdso patch is
    also applied.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

28 Mar, 2006

3 commits

  • This removes statically assigned platform numbers and reworks the
    powerpc platform probe code to use a better mechanism. With this,
    board support files can simply declare a new machine type with a
    macro, and implement a probe() function that uses the flattened
    device-tree to detect if they apply for a given machine.

    We now have a machine_is() macro that replaces the comparisons of
    _machine with the various PLATFORM_* constants. This commit also
    changes various drivers to use the new macro instead of looking at
    _machine.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • Export validate_sp so we can use it in the oprofile calltrace code.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Paul Mackerras

    Anton Blanchard
     
  • 32-bit CHRP machines are now supported only in arch/powerpc, as are
    all 64-bit PowerPC processors. This means that we don't use
    Open Firmware on any platform in arch/ppc any more.

    This makes PReP support a single-platform option like every other
    platform support option in arch/ppc now, thus CONFIG_PPC_MULTIPLATFORM
    is gone from arch/ppc. CONFIG_PPC_PREP is the option that selects
    PReP support and is generally what has replaced
    CONFIG_PPC_MULTIPLATFORM within arch/ppc.

    _machine is all but dead now, being #defined to 0.

    Updated Makefiles, comments and Kconfig options generally to reflect
    these changes.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     

22 Mar, 2006

1 commit

  • It has been decreed that platform numbers are evil, so as a step in that
    direction, replace platform_is_lpar() with a FW_FEATURE_LPAR bit.

    Currently FW_FEATURE_LPAR really means i/pSeries LPAR, in the future we might
    have to clean that up if we need to be more specific about what LPAR actually
    means. But that's another patch ...

    Signed-off-by: Michael Ellerman
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     

09 Jan, 2006

2 commits

  • include/asm-ppc/ had #ifdef __KERNEL__ in all header files that
    are not meant for use by user space, include/asm-powerpc does
    not have this yet.

    This patch gets us a lot closer there. There are a few cases
    where I was not sure, so I left them out. I have verified
    that no CONFIG_* symbols are used outside of __KERNEL__
    any more and that there are no obvious compile errors when
    including any of the headers in user space libraries.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Arnd Bergmann
     
  • This patch removes the EXPORT_SYMBOL'ed but completely unused variable
    ucSystemType and removes the unneeded EXPORT_SYMBOL(_prep_type).

    Signed-off-by: Adrian Bunk
    Acked-by: Tom Rini
    Signed-off-by: Paul Mackerras

    Adrian Bunk
     

11 Nov, 2005

1 commit

  • This patch moves the vdso's to arch/powerpc, adds support for the 32
    bits vdso to the 32 bits kernel, rename systemcfg (finally !), and adds
    some new (still untested) routines to both vdso's: clock_gettime() with
    support for CLOCK_REALTIME and CLOCK_MONOTONIC, clock_getres() (same
    clocks) and get_tbfreq() for glibc to retreive the timebase frequency.

    Tom,Steve: The implementation of get_tbfreq() I've done for 32 bits
    returns a long long (r3, r4) not a long. This is such that if we ever
    add support for >4Ghz timebases on ppc32, the userland interface won't
    have to change.

    I have tested gettimeofday() using some glibc patches in both ppc32 and
    ppc64 kernels using 32 bits userland (I haven't had a chance to test a
    64 bits userland yet, but the implementation didn't change and was
    tested earlier). I haven't tested yet the new functions.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

10 Nov, 2005

2 commits


01 Nov, 2005

1 commit


27 Oct, 2005

1 commit

  • The recent merge of fpu.S broken the handling of fpscr for
    ARCH=powerpc and CONFIG_PPC64=y. FP registers could be corrupted,
    leading to strange random application crashes.

    The confusion arises, because the thread_struct has (and requires) a
    64-bit area to save the fpscr, because we use load/store double
    instructions to get it in to/out of the FPU. However, only the low
    32-bits are actually used, so we want to treat it as a 32-bit quantity
    when manipulating its bits to avoid extra load/stores on 32-bit. This
    patch replaces the current definition with a structure of two 32-bit
    quantities (pad and val), to clarify things as much as is possible.
    The 'val' field is used when manipulating bits, the structure itself
    is used when obtaining the address for loading/unloading the value
    from the FPU.

    While we're at it, consolidate the 4 (!) almost identical versions of
    cvt_fd() and cvt_df() (arch/ppc/kernel/misc.S,
    arch/ppc64/kernel/misc.S, arch/powerpc/kernel/misc_32.S,
    arch/powerpc/kernel/misc_64.S) into a single version in fpu.S. The
    new version takes a pointer to thread_struct and applies the correct
    offset itself, rather than a pointer to the fpscr field itself, again
    to avoid confusion as to which is the correct field to use.

    Finally, this patch makes ARCH=ppc64 also use the consolidated fpu.S
    code, which it previously did not.

    Built for G5 (ARCH=ppc64 and ARCH=powerpc), 32-bit powermac (ARCH=ppc
    and ARCH=powerpc) and Walnut (ARCH=ppc, CONFIG_MATH_EMULATION=y).
    Booted on G5 (ARCH=powerpc) and things which previously fell over no
    longer do.

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     

10 Oct, 2005

1 commit

  • This adds register definitions from the ppc64 processor.h to reg.h,
    and makes a single merged processor.h. I moved __is_processor from
    the ppc64 system.h to the merged reg.h along with the PVR register
    constants.

    Signed-off-by: Paul Mackerras

    Paul Mackerras