summaryrefslogtreecommitdiff
path: root/sys/dev/microcode
diff options
context:
space:
mode:
authorbouyer <bouyer@NetBSD.org>2000-04-25 16:01:16 +0000
committerbouyer <bouyer@NetBSD.org>2000-04-25 16:01:16 +0000
commit5ee6872b4669f89b68c75d4c98f24e53b19cf9ff (patch)
tree41d85182dd69b51e3989a2099889b875bb832594 /sys/dev/microcode
parentdab52c26ad6c856bd8df32297af4a13215097f1a (diff)
- Add support for NOP instruction
- fix dsp value for second operand of memory move, so that patch list will be correct.
Diffstat (limited to 'sys/dev/microcode')
-rw-r--r--sys/dev/microcode/siop/ncr53cxxx.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sys/dev/microcode/siop/ncr53cxxx.c b/sys/dev/microcode/siop/ncr53cxxx.c
index f3ace959ef3..10519645e63 100644
--- a/sys/dev/microcode/siop/ncr53cxxx.c
+++ b/sys/dev/microcode/siop/ncr53cxxx.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ncr53cxxx.c,v 1.1 2000/04/21 17:50:07 bouyer Exp $ */
+/* $NetBSD: ncr53cxxx.c,v 1.2 2000/04/25 16:01:16 bouyer Exp $ */
/*
* Copyright (c) 1995,1999 Michael L. Hitch
@@ -69,6 +69,7 @@ void f_set (void);
void f_clear (void);
void f_load (void);
void f_store (void);
+void f_nop (void);
void f_arch (void);
struct {
@@ -95,6 +96,7 @@ struct {
{"CLEAR", f_clear},
{"LOAD", f_load},
{"STORE", f_store},
+ {"NOP", f_nop},
{"ARCH", f_arch},
{NULL, NULL}};
@@ -413,7 +415,7 @@ main (int argc, char *argv[])
if (outfp) {
time_t cur_time;
- fprintf(outfp, "/*\t$NetBSD: ncr53cxxx.c,v 1.1 2000/04/21 17:50:07 bouyer Exp $\t*/\n");
+ fprintf(outfp, "/*\t$NetBSD: ncr53cxxx.c,v 1.2 2000/04/25 16:01:16 bouyer Exp $\t*/\n");
fprintf(outfp, "/*\n");
fprintf(outfp, " *\tDO NOT EDIT - this file is automatically generated.\n");
time(&cur_time);
@@ -1054,6 +1056,13 @@ void f_store (void)
loadstore(i);
}
+void f_nop (void)
+{
+ inst0 = 0x10000000;
+ inst1 = 0x00000000;
+ store_inst ();
+}
+
void loadstore(int i)
{
int reg, size;
@@ -1335,7 +1344,13 @@ void memory_to_memory ()
{
inst0 = 0xc0000000 + evaluate (tokenix+1);
inst1 = evaluate (tokenix+3);
+ /*
+ * need to hack dsps, otherwise patch offset will be wrong for
+ * second pointer
+ */
+ dsps += 4;
inst2 = evaluate (tokenix+5);
+ dsps -= 4;
}
void error_line()