Use correct virtual address when configuring the per CPU idle page directory

for a vm86 call under SMP.
This commit is contained in:
Tor Egge 1998-09-28 03:26:22 +00:00
parent 6d07e4c64d
commit 8fce521a54
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=39702
4 changed files with 16 additions and 5 deletions

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
* $Id: locore.s,v 1.111 1998/07/27 16:45:01 jlemon Exp $
* $Id: locore.s,v 1.112 1998/08/03 21:31:32 msmith Exp $
*
* originally from: locore.s, by William F. Jolitz
*
@ -925,6 +925,9 @@ map_read_write:
movl R(cpu0pp), %eax
movl R(_IdlePTD), %ecx
movl %ecx,GD_MY_IDLEPTD(%eax)
/* Initialize IdlePTDS[0] */
addl $KERNBASE, %ecx
movl %ecx, R(CNAME(IdlePTDS))
#endif /* SMP */

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
* $Id: locore.s,v 1.111 1998/07/27 16:45:01 jlemon Exp $
* $Id: locore.s,v 1.112 1998/08/03 21:31:32 msmith Exp $
*
* originally from: locore.s, by William F. Jolitz
*
@ -925,6 +925,9 @@ map_read_write:
movl R(cpu0pp), %eax
movl R(_IdlePTD), %ecx
movl %ecx,GD_MY_IDLEPTD(%eax)
/* Initialize IdlePTDS[0] */
addl $KERNBASE, %ecx
movl %ecx, R(CNAME(IdlePTDS))
#endif /* SMP */

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
* $Id: locore.s,v 1.111 1998/07/27 16:45:01 jlemon Exp $
* $Id: locore.s,v 1.112 1998/08/03 21:31:32 msmith Exp $
*
* originally from: locore.s, by William F. Jolitz
*
@ -925,6 +925,9 @@ map_read_write:
movl R(cpu0pp), %eax
movl R(_IdlePTD), %ecx
movl %ecx,GD_MY_IDLEPTD(%eax)
/* Initialize IdlePTDS[0] */
addl $KERNBASE, %ecx
movl %ecx, R(CNAME(IdlePTDS))
#endif /* SMP */

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: vm86bios.s,v 1.3 1998/07/27 16:45:05 jlemon Exp $
* $Id: vm86bios.s,v 1.4 1998/09/10 12:16:06 yokota Exp $
*/
#include "opt_vm86.h"
@ -132,12 +132,14 @@ ENTRY(vm86_bioscall)
movl %cr3,%eax
pushl %eax /* save address space */
#ifdef SMP
movl _cpuid, %ecx
movl CNAME(IdlePTDS)(,%ecx,4), %ebx
movl _my_idlePTD,%ecx
#else
movl _IdlePTD,%ecx
#endif
movl %ecx,%ebx
addl $KERNBASE,%ebx /* va of Idle PTD */
#endif
movl 0(%ebx),%eax
pushl %eax /* old ptde != 0 when booting */
pushl %ebx /* keep for reuse */