SCCS-vsn: sys/vax/include/cpu.h 7.6
SCCS-vsn: sys/vax/include/mtpr.h 7.4
SCCS-vsn: sys/vax/vax/emulate.s 7.3
SCCS-vsn: sys/vax/vax/locore.s 7.13
SCCS-vsn: sys/vax/vax/autoconf.c 7.16
SCCS-vsn: sys/vax/vax/clock.c 7.4
SCCS-vsn: sys/vax/vax/cpudata.c 7.5
SCCS-vsn: sys/vax/vax/genassym.c 7.3
SCCS-vsn: sys/vax/vax/machdep.c 7.15
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)cpu.h 7.5 (Berkeley) %G%
+ * @(#)cpu.h 7.6 (Berkeley) %G%
:8,
cp_type:8; /* VAX_630 */
} cpu630;
:8,
cp_type:8; /* VAX_630 */
} cpu630;
+ struct cpu650 {
+ u_int cp_urev:8, /* ucode rev level */
+ :16, /* reserved */
+ cp_type:8; /* VAX_650 */
+ } cpu650;
#define VAX_8500 6 /* same as 8800, 8700 */
#define VAX_610 7 /* uVAX I */
#define VAX_630 8 /* uVAX II */
#define VAX_8500 6 /* same as 8800, 8700 */
#define VAX_610 7 /* uVAX I */
#define VAX_630 8 /* uVAX II */
+#define VAX_650 10 /* uVAX 3000 */
/*
* Main IO backplane types.
/*
* Main IO backplane types.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)mtpr.h 7.3 (Berkeley) %G%
+ * @(#)mtpr.h 7.4 (Berkeley) %G%
#define ICCS 0x18 /* interval clock control */
#define NICR 0x19 /* next interval count */
#define ICR 0x1a /* interval count */
#define ICCS 0x18 /* interval clock control */
#define NICR 0x19 /* next interval count */
#define ICR 0x1a /* interval count */
-#if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730
+#if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730 || VAX650
#define TODR 0x1b /* time of year (day) */
#endif
#if VAX750 || VAX730
#define TODR 0x1b /* time of year (day) */
#endif
#if VAX750 || VAX730
#define RXDB 0x21 /* console receiver data buffer */
#define TXCS 0x22 /* console transmitter control and status */
#define TXDB 0x23 /* console transmitter data buffer */
#define RXDB 0x21 /* console receiver data buffer */
#define TXCS 0x22 /* console transmitter control and status */
#define TXDB 0x23 /* console transmitter data buffer */
-#if VAX8200 || VAX750 || VAX730
+#if VAX8200 || VAX750 || VAX730 || VAX650
#define TBDR 0x24 /* translation buffer disable register */
#define CADR 0x25 /* cache disable register */
#define MCESR 0x26 /* machine check error summary register */
#endif
#define TBDR 0x24 /* translation buffer disable register */
#define CADR 0x25 /* cache disable register */
#define MCESR 0x26 /* machine check error summary register */
#endif
+#if VAX750 || VAX730 || VAX650
#define CAER 0x27 /* cache error */
#endif
#define ACCS 0x28 /* accelerator control and status */
#define CAER 0x27 /* cache error */
#endif
#define ACCS 0x28 /* accelerator control and status */
#define SBITA 0x35 /* SBI timeout address */
#define SBIQC 0x36 /* SBI quadword clear */
#endif
#define SBITA 0x35 /* SBI timeout address */
#define SBIQC 0x36 /* SBI quadword clear */
#endif
-#if VAX750 || VAX730 || VAX630
-#define IUR 0x37 /* init unibus (Qbus on 630) register */
+#if VAX750 || VAX730 || VAX630 || VAX650
+#define IUR 0x37 /* init unibus (Qbus on 6x0) register */
#endif
#define MAPEN 0x38 /* memory management enable */
#define TBIA 0x39 /* translation buffer invalidate all */
#endif
#define MAPEN 0x38 /* memory management enable */
#define TBIA 0x39 /* translation buffer invalidate all */
#endif
#define PMR 0x3d /* performance monitor enable */
#define SID 0x3e /* system identification */
#endif
#define PMR 0x3d /* performance monitor enable */
#define SID 0x3e /* system identification */
+#if VAX8600 || VAX8200 || VAX650
#define TBCHK 0x3f /* Translation Buffer Check */
#endif
#if VAX8600
#define TBCHK 0x3f /* Translation Buffer Check */
#endif
#if VAX8600
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)autoconf.c 7.15 (Berkeley) %G%
+ * @(#)autoconf.c 7.16 (Berkeley) %G%
case VAX_630:
printf("MicroVAX-II\n");
break;
case VAX_630:
printf("MicroVAX-II\n");
break;
+#endif
+#if VAX650
+ case VAX_650:
+ printf("MicroVAX 3000, ucode rev %d\n", cpusid.cpu650.cp_urev);
+ break;
#endif
}
for (ocp = percpu; ocp->pc_cputype; ocp++)
#endif
}
for (ocp = percpu; ocp->pc_cputype; ocp++)
case IO_QBUS:
probeqbus((struct qbus *)iob->io_details);
break;
case IO_QBUS:
probeqbus((struct qbus *)iob->io_details);
break;
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)clock.c 7.3 (Berkeley) %G%
+ * @(#)clock.c 7.4 (Berkeley) %G%
-#if VAX8600 || VAX780 || VAX750 || VAX730
+#if VAX8600 || VAX780 || VAX750 || VAX730 || VAX650
vaxstd_clkread(base)
time_t base;
{
vaxstd_clkread(base)
time_t base;
{
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)cpudata.c 7.4 (Berkeley) %G%
+ * @(#)cpudata.c 7.5 (Berkeley) %G%
};
struct iobus io730[] = { IO_XXX730, 0, 0, (caddr_t)&xxx730 };
#endif
};
struct iobus io730[] = { IO_XXX730, 0, 0, (caddr_t)&xxx730 };
#endif
struct qbus qbus630 = {
QBA, QBAPAGES, QBAMAP630, (caddr_t)QMEM630, (caddr_t)QIOPAGE630
};
struct qbus qbus630 = {
QBA, QBAPAGES, QBAMAP630, (caddr_t)QMEM630, (caddr_t)QIOPAGE630
};
+#if VAX650
+int ka650_clkstartrt(), vaxstd_clkread(), vaxstd_clkwrite();
+struct clockops ka650_clockops = {
+ ka650_clkstartrt, vaxstd_clkread, vaxstd_clkwrite
+};
+#endif
+
/*
* CPU dependent routines.
*/
/*
* CPU dependent routines.
*/
+#if VAX650
+int ka650_memnop(), ka650_memerr(), ka650_mchk(), ka650_init();
+struct cpuops ka650_ops = {
+ &ka650_clockops, ka650_memnop, ka650_memerr, ka650_mchk, ka650_init
+};
+#endif
+
struct percpu percpu[] = {
#if VAX8600
{ VAX_8600, 6, 2, io8600, &ka860_ops },
struct percpu percpu[] = {
#if VAX8600
{ VAX_8600, 6, 2, io8600, &ka860_ops },
#endif
#if VAX630
{ VAX_630, 2, 1, io630, &ka630_ops },
#endif
#if VAX630
{ VAX_630, 2, 1, io630, &ka630_ops },
+#endif
+#if VAX650
+ { VAX_650, 4, 1, io630, &ka650_ops },
- * @(#)emulate.s 7.2 (Berkeley) %G%
+ * @(#)emulate.s 7.3 (Berkeley) %G%
/*
* String instruction emulation - MicroVAX only. These routines are called
* from locore.s when an "emulate" fault occurs on the MicroVAX. They are
/*
* String instruction emulation - MicroVAX only. These routines are called
* from locore.s when an "emulate" fault occurs on the MicroVAX. They are
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)genassym.c 7.2 (Berkeley) %G%
+ * @(#)genassym.c 7.3 (Berkeley) %G%
#define VAX750 1
#define VAX730 1
#define VAX630 1
#define VAX750 1
#define VAX730 1
#define VAX630 1
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)locore.s 7.12 (Berkeley) %G%
+ * @(#)locore.s 7.13 (Berkeley) %G%
#include "clock.h"
#include "ioa.h"
#include "ka630.h"
#include "clock.h"
#include "ioa.h"
#include "ka630.h"
#include "ka820.h"
#include "../vaxuba/ubareg.h"
#include "ka820.h"
#include "../vaxuba/ubareg.h"
.word 1f-0b # 6 is 8800 (unsupported)
.word 1f-0b # 7 is 610 (unsupported)
.word 1f-0b # 8 is 630
.word 1f-0b # 6 is 8800 (unsupported)
.word 1f-0b # 7 is 610 (unsupported)
.word 1f-0b # 8 is 630
+ .word 1f-0b # 9 is ???
+ .word 1f-0b # 10 is 650
5:
#if defined(VAX8200) || defined(VAX750) || defined(VAX730)
mtpr $0xf,$MCESR
5:
#if defined(VAX8200) || defined(VAX750) || defined(VAX730)
mtpr $0xf,$MCESR
/*
* Emulation OpCode jump table:
* ONLY GOES FROM 0xf8 (-8) TO 0x3B (59)
/*
* Emulation OpCode jump table:
* ONLY GOES FROM 0xf8 (-8) TO 0x3B (59)
movl r11,32(sp) # save register r11 in unused operand
movl r10,36(sp) # save register r10 in unused operand
cvtbl (sp),r10 # get opcode
movl r11,32(sp) # save register r11 in unused operand
movl r10,36(sp) # save register r10 in unused operand
cvtbl (sp),r10 # get opcode
rei
noemulate:
addl2 $48,sp # adjust stack for
rei
noemulate:
addl2 $48,sp # adjust stack for
.word 0xffff # "reserved instruction fault"
SCBVEC(emulateFPD):
.word 0xffff # "reserved instruction fault"
.word 0xffff # "reserved instruction fault"
SCBVEC(emulateFPD):
.word 0xffff # "reserved instruction fault"
#endif
#if VAX630
SYSMAP(Ka630map ,ka630cpu ,1 )
#endif
#if VAX630
SYSMAP(Ka630map ,ka630cpu ,1 )
+#endif
+#if VAX650
+ SYSMAP(KA650MERRmap ,ka650merr ,1 )
+ SYSMAP(KA650CBDmap ,ka650cbd ,1 )
+ SYSMAP(KA650SSCmap ,ka650ssc ,3 )
+ SYSMAP(KA650IPCRmap ,ka650ipcr ,1 )
+ SYSMAP(KA650CACHEmap ,ka650cache ,KA650_CACHESIZE/NBPG )
+#endif
+#ifdef QBA
/*
* qvss and qdss can't coexist - one map will suffice
* for either. qvss is 256K each and qdss is 64K each.
/*
* qvss and qdss can't coexist - one map will suffice
* for either. qvss is 256K each and qdss is 64K each.
#include "qd.h"
#if NQV > 0 || NQD > 0
SYSMAP(QVmap ,qvmem ,((512*NQV)+(128*NQD)))
#include "qd.h"
#if NQV > 0 || NQD > 0
SYSMAP(QVmap ,qvmem ,((512*NQV)+(128*NQD)))
-#endif /* NQV || NQD */
-#endif /* VAX630 */
SYSMAP(UMBAend ,umbaend ,0 )
SYSMAP(Usrptmap ,usrpt ,USRPTSIZE+CLSIZE )
SYSMAP(UMBAend ,umbaend ,0 )
SYSMAP(Usrptmap ,usrpt ,USRPTSIZE+CLSIZE )
1: pushl $4; pushl r7; calls $2,_badaddr; tstl r0; bneq 9f
acbl $MAXMEM*1024-1,$64*1024,r7,1b
9:
1: pushl $4; pushl r7; calls $2,_badaddr; tstl r0; bneq 9f
acbl $MAXMEM*1024-1,$64*1024,r7,1b
9:
-#ifdef VAX630
-/* leave an area for uVAX II console scratch pad at the top */
+#if VAX630 || VAX650
+/* leave an area for uVAX console scratch pad at the top */
- bneq 1f
- subl2 $4096,r7
+ beql 1f
+ cmpb _cpu,$VAX_650
+ bneq 2f
#endif
/* clear memory from kernel bss and pages for proc 0 u. and page table */
movab _edata,r6; bicl2 $SYSTEM,r6
#endif
/* clear memory from kernel bss and pages for proc 0 u. and page table */
movab _edata,r6; bicl2 $SYSTEM,r6
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)machdep.c 7.14 (Berkeley) %G%
+ * @(#)machdep.c 7.15 (Berkeley) %G%
register caddr_t v;
int maxbufs, base, residual;
register caddr_t v;
int maxbufs, base, residual;
/*
* Leave last 5k of phys. memory as console work area.
*/
/*
* Leave last 5k of phys. memory as console work area.
*/
+ if (cpu == VAX_630 || cpu == VAX_650)
mtpr(TBIA, 0);
msgbufmapped = 1;
mtpr(TBIA, 0);
msgbufmapped = 1;
#include "qv.h"
#if NQV > 0
/*
#include "qv.h"
#if NQV > 0
/*
-#if VAX8200 || VAX780 || VAX750 || VAX730 || VAX630
+#if VAX8200 || VAX780 || VAX750 || VAX730 || VAX630 || VAX650
case VAX_8200:
case VAX_780:
case VAX_750:
case VAX_730:
case VAX_630:
case VAX_8200:
case VAX_780:
case VAX_750:
case VAX_730:
case VAX_630:
c |= TXDB_CONS;
break;
#endif
c |= TXDB_CONS;
break;
#endif
-#if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730
+#if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730 || VAX650
case VAX_8600:
case VAX_8200:
case VAX_780:
case VAX_750:
case VAX_730:
case VAX_8600:
case VAX_8200:
case VAX_780:
case VAX_750:
case VAX_730:
return (mfpr(TODR));
#endif
return (mfpr(TODR));
#endif