- p2->p_stats = &((struct user *)p2->p_addr)->u_stats;
- p2->p_sigacts = &((struct user *)p2->p_addr)->u_sigacts;
-
- /*
- * Clear vm statistics of new process.
- */
- bzero((caddr_t)&up->u_stats.p_ru, sizeof (struct rusage));
- bzero((caddr_t)&up->u_stats.p_cru, sizeof (struct rusage));
-
- PMAP_ACTIVATE(&p2->p_vmspace->vm_pmap, (struct pcb *)p2->p_addr, 0);
-
+ p2->p_stats = &up->u_stats;
+ p2->p_sigacts = &up->u_sigacts;
+ up->u_sigacts = *p1->p_sigacts;
+ bzero(&up->u_stats.pstat_startzero,
+ (unsigned) ((caddr_t)&up->u_stats.pstat_endzero -
+ (caddr_t)&up->u_stats.pstat_startzero));
+ bcopy(&p1->p_stats->pstat_startcopy, &up->u_stats.pstat_startcopy,
+ ((caddr_t)&up->u_stats.pstat_endcopy -
+ (caddr_t)&up->u_stats.pstat_startcopy));
+
+#ifdef i386
+ { u_int addr = UPT_MIN_ADDRESS - UPAGES*NBPG; struct vm_map *vp;
+
+ vp = &p2->p_vmspace->vm_map;
+ (void)vm_map_pageable(vp, addr, 0xfe000000 - addr, TRUE);
+ (void)vm_deallocate(vp, addr, 0xfe000000 - addr);
+ (void)vm_allocate(vp, &addr, UPT_MAX_ADDRESS - addr, FALSE);
+ (void)vm_map_inherit(vp, addr, UPT_MAX_ADDRESS, VM_INHERIT_NONE);
+ }
+#endif