Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 May 2003 16:16:43 -0700 (PDT)
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 context.s
Message-ID:  <200305232316.h4NNGhpc096192@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
marcel      2003/05/23 16:16:43 PDT

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        context.s 
  Log:
  In swapctx(), put the RSE in enforced lazy mode before we flush the
  register stack. There's nothing really wrong with flushing before
  putting the RSE in enforced lazy mode, provided you don't depend on
  ar.bspstore being equal to ar.bsp when the RSE has been put in
  enforced lazy more. The small window between the flush and setting
  the RSE may be sufficient to have the RSE eagerly increase the dirty
  region (and hence cause ar.bspstore != ar.bsp) or have an interrupt
  that may even get the laziest RSE to do something.
  
  Anyway: we don't depend on ar.bspstore being equal to ar.bsp, so
  nothing was and is broken. But the code was non-intuitive and
  easily confuses. This is a source of future bugs.
  
  Note: the advantage of not depending on ar.bspstore is that there's
  some recilience against an interrupted flushrs. Clobbering is limited
  to stacked register contents only, not to RSE address clobbering.
  
  Approved: re@ (blanket)
  
  Revision  Changes    Path
  1.2       +2 -2      src/sys/ia64/ia64/context.s



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