Add a common pmap_bootstrap_finalize() function which initializes
lwp0 uarea, curlwp, and curpcb after MMU is turned on, using lwp0uarea variable saved during pmap_bootstrap() (or equivalent functions) for pmap_motorola based ports. Discussed with rmind@.
This commit is contained in:
parent
1a30996c87
commit
3c345377fe
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pcb.h,v 1.7 2007/03/04 06:00:04 christos Exp $ */
|
||||
/* $NetBSD: pcb.h,v 1.8 2009/12/02 15:47:45 tsutsui Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1990, 1993
|
||||
|
@ -105,4 +105,7 @@ struct pcb {
|
|||
struct md_coredump {
|
||||
int md_exec[16]; /* exec structure for HP-UX core dumps */
|
||||
};
|
||||
|
||||
extern struct pcb *curpcb;
|
||||
|
||||
#endif /* _M68K_PCB_H_ */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pmap_motorola.h,v 1.21 2009/08/26 00:30:02 thorpej Exp $ */
|
||||
/* $NetBSD: pmap_motorola.h,v 1.22 2009/12/02 15:47:45 tsutsui Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993
|
||||
|
@ -191,6 +191,10 @@ extern char *vmmap; /* map for mem, dumps, etc. */
|
|||
extern void *CADDR1, *CADDR2;
|
||||
extern void *msgbufaddr;
|
||||
|
||||
/* for lwp0 uarea initialization after MMU enabled */
|
||||
extern vaddr_t lwp0uarea;
|
||||
void pmap_bootstrap_finalize(void);
|
||||
|
||||
vaddr_t pmap_map(vaddr_t, paddr_t, paddr_t, int);
|
||||
void pmap_procwr(struct proc *, vaddr_t, size_t);
|
||||
#define PMAP_NEED_PROCWR
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pmap_motorola.c,v 1.51 2009/11/23 00:11:44 rmind Exp $ */
|
||||
/* $NetBSD: pmap_motorola.c,v 1.52 2009/12/02 15:47:45 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||
|
@ -117,7 +117,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.51 2009/11/23 00:11:44 rmind Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.52 2009/12/02 15:47:45 tsutsui Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -240,6 +240,8 @@ struct pmap *const kernel_pmap_ptr = &kernel_pmap_store;
|
|||
struct vm_map *st_map, *pt_map;
|
||||
struct vm_map_kernel st_map_store, pt_map_store;
|
||||
|
||||
vaddr_t lwp0uarea; /* lwp0 u-area VA, initialized in bootstrap */
|
||||
|
||||
paddr_t avail_start; /* PA of first available physical page */
|
||||
paddr_t avail_end; /* PA of last available physical page */
|
||||
vsize_t mem_size; /* memory size in bytes */
|
||||
|
@ -313,6 +315,22 @@ void pmap_check_wiring(const char *, vaddr_t);
|
|||
#define PRM_CFLUSH 0x02
|
||||
#define PRM_KEEPPTPAGE 0x04
|
||||
|
||||
/*
|
||||
* pmap_bootstrap_finalize: [ INTERFACE ]
|
||||
*
|
||||
* Initialize lwp0 uarea, curlwp, and curpcb after MMU is turned on,
|
||||
* using lwp0uarea variable saved during pmap_bootstrap().
|
||||
*/
|
||||
void
|
||||
pmap_bootstrap_finalize(void)
|
||||
{
|
||||
|
||||
memset((void *)lwp0uarea, 0, USPACE);
|
||||
uvm_lwp_setuarea(&lwp0, lwp0uarea);
|
||||
curlwp = &lwp0;
|
||||
curpcb = lwp_getpcb(&lwp0);
|
||||
}
|
||||
|
||||
/*
|
||||
* pmap_virtual_space: [ INTERFACE ]
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue