When switching from SVC32->UND32 to read/write R13_und we don't need to clear
the mode bits as:
PSR_SVC32_MODE | PSR_UND32_MODE = PSR_UND32_MODE
While reading the code I also noted that interrupts are enabled for most of
the function as pmap_switch returns with interrupts in the state they are on
entry. This appears to be different to what the code after pmap_switch
expects, in that the behaviour suggests they should be disabled.
Because of this I've made the writing of R13_und explicitly disable.
interupts as part of the mode switch.
This also means that the IRQenableALL call is now redundant as the
interrupts are already enabled.
XXX: it's not clear if arm_fpe_core_changecontext should be called with
interrupts disabled.
Remove unused items: IRQdisableALL, IRQenableALL & Lcpufuncs.
Tested on cats. lmbench shows no performance change.
the same struct work before workqueue(9) has internally started to work on
the task.
So to make sure that doesn't happen, provide a semaphore not to run the
workqueue multiple times. It might be clearer just skip using workqueue(9)
and use a thread for about everything, but oh well, I leave that to
someone else.
Now is@ can yank his USB-to-Ethernet adapter while the interface is up.
other funcs a switchframe needs to be a multiple of 8 bytes. Stash sp as
well in the switchframe to bump it to 24bytes.
Setup the switchframe appropriately in cpu_lwp_fork.
Remove savectx - nothing uses it.
All of this make gdb's life much easier when dealing with crash dumps and
live kernels.
Reviewd by chris.
had the potential to cause problems prior to 4.99.48 because it called into
the VM system without kernel_lock held.
XXX1 pmap_update() should be waiting for shootdown jobs to complete. It's
not clear how to do that because the shootdowns happen at IPL_VM.
- KNF, ANSIfy, remove __P()
- use __func__ to print function names
- use __arraycount()
- include "ioconf.h" for struct cfdriver
- u_intNN_t -> uintNN_t
- wrap long lines
etc.
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.