cvs commit: src/sys/ia64/ia64 locore.s machdep.c src/sys/ia64/include cpu.h

Marcel Moolenaar marcel at FreeBSD.org
Fri May 23 17:17:35 PDT 2003


marcel      2003/05/23 17:17:34 PDT

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        locore.s machdep.c 
    sys/ia64/include     cpu.h 
  Log:
  Fix an alpha inheritance bug:
  
  On alpha, PAL is involved in context management and after wiring
  the CPU (in alpha_init()) a context switch was performed to tell
  PAL about the context. This was bogusly brought over to ia64
  where it introduced bugs, because we restored the context from
  a mostly uninitialized PCB.
  
  The cleanup constitutes:
  o  Remove the unused arguments from ia64_init().
  o  Don't return from ia64_init(), but instead call mi_startup()
     directly. This reduces the amount of muckery in assembly and
     also allows for the next bullet:
  o  Save our currect context prior to calling mi_startup(). The
     reason for this is that many threads are created from thread0
     by cloning the PCB. By saving our context in the PCB, we have
     something sane to clone. It also ensures that a cloned thread
     that does not alter the context in any way will return to
     the saved context, where we're ready for the eventuality with
     a nice, user unfriendly panic().
  
  The cleanup fixes at least the following bugs:
  o  Entering mi_startup() with the RSE in enforced lazy mode.
  o  Re-execution of ia64_init() in certain "lab" conditions.
  
  While here, add proper unwind directives to __start() so that
  the unwind knows it has reached the bottom of the (call) stack.
  
  Approved by: re@ (blanket)
  
  Revision  Changes    Path
  1.31      +5 -33     src/sys/ia64/ia64/locore.s
  1.134     +17 -1     src/sys/ia64/ia64/machdep.c
  1.30      +1 -1      src/sys/ia64/include/cpu.h


More information about the cvs-src mailing list