diff options
| author | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2007-06-08 04:33:25 +0000 |
|---|---|---|
| committer | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2007-06-08 04:33:25 +0000 |
| commit | 293b847542ebfac574cd9a9d888df9769d45e77f (patch) | |
| tree | 5ed58dc2f791d9767114bfb3da7bf91bff9f4bf1 /sys/dev/dcons/dcons_crom.c | |
| parent | 17ee700be6272b41065fb32e88e4deb3eefb6c1f (diff) | |
Notes
Diffstat (limited to 'sys/dev/dcons/dcons_crom.c')
| -rw-r--r-- | sys/dev/dcons/dcons_crom.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/dev/dcons/dcons_crom.c b/sys/dev/dcons/dcons_crom.c index 290c80a0300f..290bb1e8ca40 100644 --- a/sys/dev/dcons/dcons_crom.c +++ b/sys/dev/dcons/dcons_crom.c @@ -62,6 +62,14 @@ #include <sys/cons.h> +#define EXPOSE_IDT_ADDR 1 + +#if (defined(__i386__) || defined(__amd64__)) && defined(EXPOSE_IDT_ADDR) +#include <vm/vm.h> +#include <vm/vm_param.h> +#include <vm/pmap.h> +#include <machine/segments.h> /* for idt */ +#endif static bus_addr_t dcons_paddr; #if __FreeBSD_version >= 500000 @@ -108,6 +116,19 @@ dcons_crom_probe(device_t dev) } #ifndef NEED_NEW_DRIVER +#if (defined(__i386__) || defined(__amd64__)) && defined(EXPOSE_IDT_ADDR) +static void +dcons_crom_expose_idt(struct dcons_crom_softc *sc) +{ + static off_t idt_paddr; + + /* XXX */ + idt_paddr = (char *)idt - (char *)KERNBASE; + + crom_add_entry(&sc->unit, DCONS_CSR_KEY_RESET_HI, ADDR_HI(idt_paddr)); + crom_add_entry(&sc->unit, DCONS_CSR_KEY_RESET_LO, ADDR_LO(idt_paddr)); +} +#endif static void dcons_crom_post_busreset(void *arg) { @@ -128,6 +149,9 @@ dcons_crom_post_busreset(void *arg) crom_add_simple_text(src, &sc->unit, &sc->ver, "dcons"); crom_add_entry(&sc->unit, DCONS_CSR_KEY_HI, ADDR_HI(dcons_paddr)); crom_add_entry(&sc->unit, DCONS_CSR_KEY_LO, ADDR_LO(dcons_paddr)); +#if (defined(__i386__) || defined(__amd64__)) && defined(EXPOSE_IDT_ADDR) + dcons_crom_expose_idt(sc); +#endif } #endif |
