1. 28 10月, 2005 2 次提交
  2. 27 10月, 2005 7 次提交
    • P
      powerpc: Introduce toreal/fromreal assembly macros · 6316222e
      Paul Mackerras 提交于
      On 32-bit platforms, these convert from kernel virtual addresses
      to real (physical addresses), like tophys/tovirt but they use
      the same register for the source and destination.  On 64-bit
      platforms, they do nothing because the hardware ignores the top
      two bits of the address in real mode.
      
      These new macros are used in fpu.S now.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      6316222e
    • P
      powerpc: 32-bit CHRP SMP fixes · 80579e1f
      Paul Mackerras 提交于
      Untested, but "should" work...  at least this way it compiles.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      80579e1f
    • P
      eef69e3c
    • D
      [PATCH] powerpc: Purge bootinfo.h · e37bc5df
      David Gibson 提交于
      With ARCH=powerpc we assume the presence of a device tree, so we don't
      require any support for the old bi_recs method of passing boot
      parameters.  Likewise, we've never needed it for ppc64, but we still
      had an include/asm-ppc64/bootinfo.h from which nothing was used.  This
      patch removes that file, and all references to it in arch/ppc64 and
      arch/powerpc.  A related, unused variable 'boot_mem_size' is also
      removed from setup_32.c.  The bootinfo stuff remains in ARCH=ppc for
      the time being.
      
      Built and booted on Power5 (ARCH=ppc64 and ARCH=powerpc), built for
      32-bit powermac (ARCH=powerpc and ARCH=ppc).
      Signed-off-by: NDavid Gibson <dwg@au1.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      e37bc5df
    • D
      [PATCH] powerpc: Fix handling of fpscr on 64-bit · 25c8a78b
      David Gibson 提交于
      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: NDavid Gibson <dwg@au1.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      25c8a78b
    • P
      [PATCH] ppc64: remove arch/ppc64/kernel/setup.c · fda262b8
      Paul Mackerras 提交于
      and use setup_64.c from the merged tree instead.  The only difference
      between them was the code to set up the syscall maps.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      fda262b8
    • P
      powerpc: Remove common stuff from setup_64.c · cb4ab974
      Paul Mackerras 提交于
      This should have been in commit 03501dab
      but got missed by accident.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      cb4ab974
  3. 26 10月, 2005 9 次提交
  4. 24 10月, 2005 3 次提交
  5. 23 10月, 2005 2 次提交
    • P
      powerpc: Run on old powermacs. · a575b807
      Paul Mackerras 提交于
      Old powermacs have a number of differences from current machines:
      - there is no interrupt tree in the device tree, just interrupt
        or AAPL,interrupt properties
      - the chosen node in the device tree is called /chosen@0
      - the OF claim method doesn't map the memory, so we have to do
        an explicit map call as well
      - there is no /chosen/cpu property on SMP machines
      - the NVRAM isn't structured as a set of partitions.
      
      This adapts the merged powermac support code to cope with these
      issues.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      a575b807
    • P
      powerpc: Fix time code for 601 processors · 96c44507
      Paul Mackerras 提交于
      The 601 doesn't have the timebase register; instead it has an RTCL
      register that counts nanoseconds and wraps at 1000000000, and an
      RTCU register that counts seconds.  This makes the necessary changes
      for the merged time code to use the RTCL/U registers when the kernel
      is running on a 601.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      96c44507
  6. 22 10月, 2005 4 次提交
  7. 21 10月, 2005 3 次提交
    • M
      [PATCH] powerpc: Fix mmap returning 64 bit addresses · 05d84681
      Michael Ellerman 提交于
      The merge of syscalls.c & sys_ppc32.c (30286ef6)
      broke mmap, if the mmap returned a 64 bit address.
      
      do_mmap2 was taking the return value from do_mmap_pgoff (an unsigned long), and
      storing it in an int, before returning it to sys_mmap as an unsigned long. So
      we were losing the high bits of the address.
      
      You would have thought the compiler could catch this for us ...
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      05d84681
    • M
      [PATCH] powerpc: Don't blow away load_addr in start_thread · 90eac727
      Michael Ellerman 提交于
      The patch to make process.c work for 32-bit and 64-bit
      (06d67d54) broke some 64-bit binaries.
      We were blowing away load_addr in gpr[2], so we weren't properly relocating
      the entry point.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      90eac727
    • D
      [PATCH] powerpc: Merge thread_info.h · 6cb7bfeb
      David Gibson 提交于
      Merge ppc32 and ppc64 versions of thread_info.h.  They were pretty
      similar already, the chief changes are:
      
      	- Instead of inline asm to implement current_thread_info(),
      which needs to be different for ppc32 and ppc64, we use C with an
      asm("r1") register variable.  gcc turns it into the same asm as we
      used to have for both platforms.
      	- We replace ppc32's 'local_flags' with the ppc64
      'syscall_noerror' field.  The noerror flag was in fact the only thing
      in the local_flags field anyway, so the ppc64 approach is simpler, and
      means we only need a load-immediate/store instead of load/mask/store
      when clearing the flag.
      	- In readiness for 64k pages, when THREAD_SIZE will be less
      than a page, ppc64 used kmalloc() rather than get_free_pages() to
      allocate the kernel stack.  With this patch we do the same for ppc32,
      since there's no strong reason not to.
      	- For ppc64, we no longer export THREAD_SHIFT and THREAD_SIZE
      via asm-offsets, thread_info.h can now be safely included in asm, as
      on ppc32.
      
      Built and booted on G4 Powerbook (ARCH=ppc and ARCH=powerpc) and
      Power5 (ARCH=ppc64 and ARCH=powerpc).
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      6cb7bfeb
  8. 20 10月, 2005 9 次提交
  9. 19 10月, 2005 1 次提交