summaryrefslogtreecommitdiff
path: root/usr/src/uts/sun4
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/sun4')
-rw-r--r--usr/src/uts/sun4/os/startup.c21
-rw-r--r--usr/src/uts/sun4/sys/ivintr.h9
2 files changed, 16 insertions, 14 deletions
diff --git a/usr/src/uts/sun4/os/startup.c b/usr/src/uts/sun4/os/startup.c
index 41e1baaa20..ebb336f6d9 100644
--- a/usr/src/uts/sun4/os/startup.c
+++ b/usr/src/uts/sun4/os/startup.c
@@ -37,6 +37,7 @@
#include <sys/prom_plat.h>
#include <sys/prom_isa.h>
#include <sys/autoconf.h>
+#include <sys/intreg.h>
#include <sys/ivintr.h>
#include <sys/fpu/fpusystm.h>
#include <sys/iommutsb.h>
@@ -464,12 +465,8 @@ printmemseg(struct memseg *memseg)
* | |
* | segkmem32 segment | (SYSLIMIT32 - SYSBASE32 =
* | | ~64MB)
- * |-----------------------|
- * | IVSIZE |
- * 0x00000000.70004000 -|-----------------------|
- * | panicbuf |
* 0x00000000.70002000 -|-----------------------|
- * | PAGESIZE |
+ * | panicbuf |
* 0x00000000.70000000 -|-----------------------|- SYSBASE32
* | boot-time |
* | temporary space |
@@ -825,6 +822,10 @@ alloc_kmem64(caddr_t base, caddr_t end)
static prom_memlist_t *boot_physinstalled, *boot_physavail, *boot_virtavail;
static size_t boot_physinstalled_len, boot_physavail_len, boot_virtavail_len;
+#define IVSIZE roundup(((MAXIVNUM * sizeof (intr_vec_t *)) + \
+ (MAX_RSVD_IV * sizeof (intr_vec_t)) + \
+ (MAX_RSVD_IVX * sizeof (intr_vecx_t))), PAGESIZE)
+
#if !defined(C_OBP)
/*
* Install a temporary tte handler in OBP for kmem64 area.
@@ -1469,8 +1470,16 @@ startup_memlist(void)
bp_init(shm_alignment, HAT_STRICTORDER);
/*
- * Reserve space for MPO mblock structs from the 32-bit heap.
+ * Reserve space for panicbuf, intr_vec_table, reserved interrupt
+ * vector data structures and MPO mblock structs from the 32-bit heap.
*/
+ (void) vmem_xalloc(heap32_arena, PANICBUFSIZE, PAGESIZE, 0, 0,
+ panicbuf, panicbuf + PANICBUFSIZE,
+ VM_NOSLEEP | VM_BESTFIT | VM_PANIC);
+
+ (void) vmem_xalloc(heap32_arena, IVSIZE, PAGESIZE, 0, 0,
+ intr_vec_table, (caddr_t)intr_vec_table + IVSIZE,
+ VM_NOSLEEP | VM_BESTFIT | VM_PANIC);
if (mpo_heap32_bufsz > (size_t)0) {
(void) vmem_xalloc(heap32_arena, mpo_heap32_bufsz,
diff --git a/usr/src/uts/sun4/sys/ivintr.h b/usr/src/uts/sun4/sys/ivintr.h
index 7aad039075..eec54078c5 100644
--- a/usr/src/uts/sun4/sys/ivintr.h
+++ b/usr/src/uts/sun4/sys/ivintr.h
@@ -19,16 +19,13 @@
* CDDL HEADER END
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_IVINTR_H
#define _SYS_IVINTR_H
-#include <sys/intreg.h>
-#include <sys/param.h>
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -48,10 +45,6 @@ extern "C" {
#define MAX_RSVD_IV ((NCPU * 3) + 256) /* HW and Single target SW intrs */
#define MAX_RSVD_IVX 32 /* Multi target software intrs */
-#define IVSIZE roundup(((MAXIVNUM * sizeof (intr_vec_t *)) + \
- (MAX_RSVD_IV * sizeof (intr_vec_t)) + \
- (MAX_RSVD_IVX * sizeof (intr_vecx_t))), PAGESIZE)
-
#ifndef _ASM
typedef uint_t (*intrfunc)(caddr_t, caddr_t);