Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 May 2003 18:00:13 -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 machdep.c support.s
Message-ID:  <200305270100.h4R10DOj032442@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
marcel      2003/05/26 18:00:13 PDT

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        machdep.c support.s 
  Log:
  Fix fu{byte|word*} and su{byte|word*}:
  o  If the address was not within user space we jumped to fusufault
     where we would clear pcb_onfault and return 0. There are two
     bugs here:
     1. We never got to the point where we assigned the address of
        pcb_onfault to r15, which means that we would clobber some
        random memory location, including I/O space or ROM.
     2. We're supposed to return -1 on error.
  o  Make sure we have proper memory ordering for setting pcb_onfault,
     doing the memory access to user space and clearing pcb_onfault.
     For the fu* family of functions this means that we need a mf
     instruction, because we don't have acquire semantics on stores
     and release semantics on loads (hence st;ld cannot be ordered
     without intermediate mf).
  
  While here, implement casuptr() so that we are a (small) step
  closer to supporting libthr and deobfuscate the non-implementation
  of {f|s}uswintr.
  
  Approved by: re@ (blanket)
  
  Revision  Changes    Path
  1.135     +0 -6      src/sys/ia64/ia64/machdep.c
  1.18      +455 -150  src/sys/ia64/ia64/support.s



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