diff options
| author | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2004-10-24 12:41:04 +0000 |
|---|---|---|
| committer | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2004-10-24 12:41:04 +0000 |
| commit | c751e6f0fabb07382ee802d931493ba0392d4354 (patch) | |
| tree | fa7fc034c51307548849c0597bae89d6aae12ea1 /sys/dev/dcons | |
| parent | 36b68156119e363a7557c3e362d66af191acfd24 (diff) | |
Notes
Diffstat (limited to 'sys/dev/dcons')
| -rw-r--r-- | sys/dev/dcons/dcons_os.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sys/dev/dcons/dcons_os.c b/sys/dev/dcons/dcons_os.c index 5a5f0aa10731e..498bf98e80e58 100644 --- a/sys/dev/dcons/dcons_os.c +++ b/sys/dev/dcons/dcons_os.c @@ -489,7 +489,7 @@ static int dcons_drv_init(int stage) { #ifdef __i386__ - int addr, size; + quad_t addr, size; #endif if (drv_init) @@ -504,10 +504,17 @@ dcons_drv_init(int stage) dg.size = DCONS_BUF_SIZE; #ifdef __i386__ - if (getenv_int("dcons.addr", &addr) > 0 && - getenv_int("dcons.size", &size) > 0) { + if (getenv_quad("dcons.addr", &addr) > 0 && + getenv_quad("dcons.size", &size) > 0) { + vm_paddr_t pa; + /* + * Allow read/write access to dcons buffer. + */ + for (pa = trunc_page(addr); pa < addr + size; pa += PAGE_SIZE) + *vtopte(KERNBASE + pa) |= PG_RW; + invltlb(); /* XXX P to V */ - dg.buf = (struct dcons_buf *)(KERNBASE + addr); + dg.buf = (struct dcons_buf *)(vm_offset_t)(KERNBASE + addr); dg.size = size; if (dcons_load_buffer(dg.buf, dg.size, sc) < 0) dg.buf = NULL; |
