Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Mar 2010 13:09:54 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/sparc64/include wstate.h src/sys/sparc64/sparc64 exception.S locore.S machdep.c support.S
Message-ID:  <201003211310.o2LDADdB027129@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
marius      2010-03-21 13:09:54 UTC

  FreeBSD src repository

  Modified files:
    sys/sparc64/include  wstate.h 
    sys/sparc64/sparc64  exception.S locore.S machdep.c support.S 
  Log:
  SVN rev 205409 on 2010-03-21 13:09:54Z by marius
  
  - The firmware of Sun Fire V1280 has a misfeature of setting %wstate to
    7 which corresponds to WSTATE_KMIX in OpenSolaris whenever calling into
    it which totally screws us even when restoring %wstate afterwards as
    spill/fill traps can happen while in OFW. The rather hackish OpenBSD
    approach of just setting the equivalent of WSTATE_KERNEL to 7 also is
    no option as we treat %wstate as a bit field. So in order to deal with
    this problem actually implement spill/fill handlers for %wstate 7 which
    just act as the WSTATE_KERNEL ones except of theoretically also handling
    32-bit, turn off interrupts completely so we don't even take IPIs while
    in OFW which should ensure we only take spill/fill traps at most and
    restore %wstate after calling into OFW once we have taken over the trap
    table. While at it, actually set WSTATE_{,PROM}_KMIX before calling into
    OFW just like OpenSolaris does, which should at least help testing this
    change on non-V1280.
  - Remove comments referring to the %wstate usage in BSD/OS.
  - Remove the no longer used RSF_ALIGN_RETRY macro.
  - Correct some trap table addresses in comments.
  - Ensure %wstate is set to WSTATE_KERNEL when taking over the trap table.
  - Ensure PSTATE_AM is off when entering or exiting to OFW as well as that
    interrupts are also completely off when exiting to OFW as the firmware
    trap table shouldn't be used to handle our interrupts.
  
  Revision  Changes    Path
  1.5       +5 -30     src/sys/sparc64/include/wstate.h
  1.81      +37 -15    src/sys/sparc64/sparc64/exception.S
  1.27      +5 -0      src/sys/sparc64/sparc64/locore.S
  1.161     +2 -1      src/sys/sparc64/sparc64/machdep.c
  1.37      +20 -5     src/sys/sparc64/sparc64/support.S



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003211310.o2LDADdB027129>