Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jul 2007 16:47:35 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/ia64/ia64 syscall.S
Message-ID:  <200707161647.l6GGlZVQ020607@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
marcel      2007-07-16 16:47:35 UTC

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        syscall.S 
  Log:
  Restore the value of ar.rnat after the assignment to ar.bspstore.
  The SDM states that writing to ar.bspstore invalidates the ar.rnat
  register as a side-effect. This was interpreted as "bits in the
  ar.rnat register that correspond to registers whose value is on
  the stack are undefined'. Since we keep the kernel stack NaT-
  aligned with the user stack (i.e. the lower 9 bits of the backing
  store pointer remain unchanged when we switch to the kernel stack)
  bits that need preserving would be preserved.
  
  That interpretation is questionable. So, now, the interpretation
  is more absolute: ar.rnat is undefined after writing to ar.bspstore.
  As such, we write the saved value of ar.rnat back to ar.rnat after
  writing to ar.bspstore.
  
  Discussed with: christian.kandeler@hob.de
  Approved by: re (kensmith)
  
  Revision  Changes    Path
  1.15      +3 -3      src/sys/ia64/ia64/syscall.S



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