Allow for dynamic allocation of interrupt vectors.

COMPAT_RENO removed.
Handle memory errors.
uap->sigcntxp -> SCARG(uap, sigcntxp)
This commit is contained in:
ragge 1995-11-10 19:05:46 +00:00
parent 33bd27fa3c
commit ae0f1d45d8
3 changed files with 61 additions and 47 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: intvec.s,v 1.11 1995/06/16 15:36:40 ragge Exp $ */
/* $NetBSD: intvec.s,v 1.12 1995/11/10 19:05:46 ragge Exp $ */
/*
* Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@ -34,10 +34,9 @@
#include "vax/include/mtpr.h"
#include "vax/include/pte.h"
#include "vax/include/trap.h"
#include "uba.h"
#include "machine/mtpr.h"
#include "machine/pte.h"
#include "machine/trap.h"
#define TRAPCALL(namn, typ) \
.align 2; namn ## :;.globl namn ;pushl $0; pushl $typ; jbr trap;
@ -61,11 +60,11 @@
_kernbase:
_rpb:
/*
* First page in memory we have rpb; so that we know where :-)
* Second page contain scb, and thereafter uba vectors.
* Virtual adress is 0x80000000.
* First page in memory we have rpb; so that we know where
* (must be on a 64k page boundary, easiest here). We use it
* to store SCB vectors generated when compiling the kernel,
* and move the SCB later to somewhere else.
*/
.space 512 /* rpb takes one page */
INTVEC(stray00, ISTACK) # Unused., 0
INTVEC(mcheck, ISTACK) # Machine Check., 4
@ -88,7 +87,7 @@ _rpb:
INTVEC(resopflt, KSTACK) # chms, 48
INTVEC(resopflt, KSTACK) # chmu, 4C
INTVEC(stray50, ISTACK) # System Backplane Exception, 50
INTVEC(stray54, ISTACK) # Corrected Memory Read, 54
INTVEC(cmrerr, ISTACK) # Corrected Memory Read, 54
INTVEC(stray58, ISTACK) # System Backplane Alert, 58
INTVEC(stray5C, ISTACK) # System Backplane Fault, 5C
INTVEC(stray60, ISTACK) # Memory Write Timeout, 60
@ -127,22 +126,18 @@ _rpb:
INTVEC(strayE4, ISTACK) # Unused, E4
INTVEC(strayE8, ISTACK) # Unused, E8
INTVEC(strayEC, ISTACK) # Unused, EC
INTVEC(strayF0, ISTACK) # Console Storage Recieve Interrupt
INTVEC(strayF4, ISTACK) # Console Storage Transmit Interrupt
#ifdef VAX750
INTVEC(cstrint, ISTACK) # Console Storage Recieve Interrupt
INTVEC(csttint, ISTACK) # Console Storage Transmit Interrupt
#else
INTVEC(strayF0, ISTACK)
INTVEC(strayF4, ISTACK)
#endif
INTVEC(consrint, ISTACK) # Console Terminal Recieve Interrupt
INTVEC(constint, ISTACK) # Console Terminal Transmit Interrupt
.globl _V_DEVICE_VEC
_V_DEVICE_VEC: .space 0x100
#if NUBA
#include "vax/uba/ubavec.s"
#endif
#if NUBA>4 /* Safety belt */
#error "Number of bus adapters must be increased in ubavec.s"
#endif
/* space for adapter vectors */
.space 0x100
STRAY(0, 00)
@ -232,7 +227,7 @@ syscall:
STRAY(0, 48)
STRAY(0, 4C)
STRAY(0, 50)
STRAY(0, 54)
FASTINTR(cmrerr, cmrerr)
STRAY(0, 58)
STRAY(0, 5C)
STRAY(0, 60)
@ -286,8 +281,14 @@ hardclock: mtpr $0xc1,$PR_ICCS # Reset interrupt flag
STRAY(0, E4)
STRAY(0, E8)
STRAY(0, EC)
#ifdef VAX750
FASTINTR(cstrint, cturintr)
FASTINTR(csttint, ctutintr)
#else
STRAY(0, F0)
STRAY(0, F4)
#endif
FASTINTR(consrint, gencnrint)
FASTINTR(constint, gencntint)
@ -396,3 +397,7 @@ _intrcnt:
.long 0
_eintrcnt:
.data
_scb: .long 0
.globl _scb

View File

@ -1,4 +1,4 @@
/* $NetBSD: locore.c,v 1.8 1995/06/16 15:36:42 ragge Exp $ */
/* $NetBSD: locore.c,v 1.9 1995/11/10 19:05:47 ragge Exp $ */
/*
* Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@ -47,8 +47,6 @@
#include "machine/vmparam.h"
#include "machine/pcb.h"
#define ROUND_PAGE(x) (((uint)(x)+PAGE_SIZE-1)& ~(PAGE_SIZE-1))
u_int proc0paddr;
volatile int cpunumber, *Sysmap, boothowto, cpu_type;
volatile char *esym;
@ -69,7 +67,12 @@ start(how, dev)
register curtop;
mtpr(0x1f,PR_IPL); /* No interrupts before istack is ok, please */
#ifdef COMPAT_RENO
/*
* We can be running either in system or user space when
* getting here. Need to figure out which and take care
* of it.
*/
asm("
movl r9,_esym
movl r10,_bootdev
@ -84,15 +87,11 @@ tvo: movl (sp)+,_boothowto
movl (sp)+,_bootdev
to_kmem:
");
#else
bootdev=dev;
boothowto=how;
#endif
/*
* FIRST we must set up kernel stack, directly after end.
* This is the only thing we have to setup here, rest in pmap.
*/
/*
* FIRST we must set up kernel stack, directly after end.
* This is the only thing we have to setup here, rest in pmap.
*/
PAGE_SIZE = NBPG*2; /* Set logical page size */
#ifdef DDB
@ -121,7 +120,7 @@ to_kmem:
mtpr(0,PR_P1LR);
mtpr(0x80000000,PR_P1BR);
mtpr(512,PR_SCBB); /* SCB at physical addr 512 */
mtpr(0, PR_SCBB); /* SCB at physical addr */
mtpr(0,PR_ESP); /* Must be zero, used in page fault routine */
mtpr(AST_NO,PR_ASTLVL);

View File

@ -1,4 +1,4 @@
/* $NetBSD: machdep.c,v 1.19 1995/10/07 06:26:15 mycroft Exp $ */
/* $NetBSD: machdep.c,v 1.20 1995/11/10 19:05:49 ragge Exp $ */
/*
* Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@ -46,6 +46,7 @@
*/
#include "sys/param.h"
#include "sys/systm.h"
#include "sys/map.h"
#include "sys/proc.h"
#include "sys/user.h"
@ -130,7 +131,6 @@ cpu_startup()
vm_size_t size;
extern int cpu_type, boothowto, startpmapdebug;
extern unsigned int avail_end;
extern char *panicstr;
/*
* Initialize error message buffer.
@ -303,7 +303,7 @@ allocsys(v)
return v;
}
int dumplo = 0;
long dumplo = 0;
dumpconf()
{
@ -340,7 +340,9 @@ cpu_sysctl()
return (EOPNOTSUPP);
}
setstatclockrate()
void
setstatclockrate(hzrate)
int hzrate;
{
panic("setstatclockrate");
}
@ -366,7 +368,7 @@ sys_sigreturn(p, v, retval)
struct sigcontext *cntx;
scf = p->p_addr->u_pcb.framep;
cntx = uap->sigcntxp;
cntx = SCARG(uap, sigcntxp);
/* Compatibility mode? */
if ((cntx->sc_ps & (PSL_IPL | PSL_IS)) ||
@ -481,8 +483,6 @@ int waittime = -1;
boot(howto)
int howto;
{
extern char *panicstr;
if ((howto & RB_NOSYNC) == 0 && waittime < 0) {
waittime = 0;
vfs_shutdown();
@ -536,7 +536,7 @@ netintr()
}
#endif
#if NPPP > 0
if (n & (1 << NETISR_PPP)) {
if (netisr & (1 << NETISR_PPP)) {
pppintr();
}
#endif
@ -553,7 +553,7 @@ machinecheck(frame)
dumpsys()
{
extern int dumpdev, dumplo;
extern int dumpdev;
msgbufmapped = 0;
if (dumpdev == NODEV)
@ -597,7 +597,9 @@ fuswintr()
panic("fuswintr: need to be implemented");
}
suibyte()
suibyte(base, byte)
int byte;
void *base;
{
panic("suibyte: need to be implemented");
}
@ -711,3 +713,11 @@ ns_cksum()
{
panic("ns_cksum");
}
cmrerr()
{
switch (cpunumber) {
case VAX_750:
ka750_memerr();
}
}