SCCS-vsn: sys/vax/vax/trap.c 4.14
-/* trap.c 4.13 82/07/12 */
+/* trap.c 4.14 82/07/18 */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
#define USER 040 /* user-mode flag added to type */
#define USER 040 /* user-mode flag added to type */
-struct sysent sysent[128];
+struct sysent sysent[];
+int nsysent;
char *trap_type[] = {
"Reserved addressing mode",
char *trap_type[] = {
"Reserved addressing mode",
*/
/*ARGSUSED*/
syscall(sp, type, code, pc, psl)
*/
/*ARGSUSED*/
syscall(sp, type, code, pc, psl)
{
register int *locr0 = ((int *)&psl)-PS;
register caddr_t params; /* known to be r10 below */
{
register int *locr0 = ((int *)&psl)-PS;
register caddr_t params; /* known to be r10 below */
opc = pc - 2;
if (code > 63)
opc -= 2;
opc = pc - 2;
if (code > 63)
opc -= 2;
- callp = &sysent[code&0177];
+ callp = (code >= nsysent) ? &sysent[63] : &sysent[code];
if (callp == sysent) {
i = fuword(params);
params += NBPW;
if (callp == sysent) {
i = fuword(params);
params += NBPW;
- callp = &sysent[i&0177];
+ callp = (code >= nsysent) ? &sysent[63] : &sysent[code];
}
if (i = callp->sy_narg * sizeof (int)) {
asm("prober $3,r9,(r10)"); /* GROT */
}
if (i = callp->sy_narg * sizeof (int)) {
asm("prober $3,r9,(r10)"); /* GROT */