summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc/ap1000/DdvReqTable.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-sparc/ap1000/DdvReqTable.h')
-rw-r--r--include/asm-sparc/ap1000/DdvReqTable.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/include/asm-sparc/ap1000/DdvReqTable.h b/include/asm-sparc/ap1000/DdvReqTable.h
new file mode 100644
index 000000000..78ffacfd3
--- /dev/null
+++ b/include/asm-sparc/ap1000/DdvReqTable.h
@@ -0,0 +1,107 @@
+ /*
+ * Copyright 1996 The Australian National University.
+ * Copyright 1996 Fujitsu Laboratories Limited
+ *
+ * This software may be distributed under the terms of the Gnu
+ * Public License version 2 or later
+ */
+/*
+ * Request table size
+ */
+
+#define TABLE_SIZE 200
+
+/*
+ * Indirect memory address table size
+ */
+
+#define MTABLE_SIZE 1000
+
+static inline int INC_T(int a)
+{
+ return (++a == TABLE_SIZE?0:a);
+}
+
+static inline int INC_ML(int a)
+{
+ return (++a == MTABLE_SIZE?0:a);
+}
+
+/*
+ * Status of requiest table
+ */
+
+#define DDV_ERROR_RETURN 0
+#define DDV_NORMAL_RETURN 1
+#define DDV_REQ_FREE 2
+#define DDV_DISKREAD_REQ 3
+#define DDV_DISKWRITE_REQ 4
+#define DDV_RAWREAD_REQ 5
+#define DDV_RAWWRITE_REQ 6
+#define DDV_CACHEPOSTALL_REQ 11
+#define DDV_CACHEFLUSHALL_REQ 12
+#define DDV_CAPACITY_REQ 13
+
+/*
+ * Specify type of interrupt (set by opiu in PBUF1)
+ */
+
+#define DDV_PRINTK_INTR 1
+#define DDV_MLIST_INTR 2
+#define DDV_READY_INTR 3
+#define DDV_REQCOMP_INTR 4
+
+struct RequestInformation {
+ volatile int status;
+ int rtn;
+ unsigned bnum;
+ int argv[8];
+};
+
+struct DiskInfo {
+ u_long blocks;
+ u_long blk_size;
+ int pad[8];
+ unsigned ptrs[4];
+};
+
+struct RequestTable{
+ volatile unsigned cell_pointer; /* Cell requiest pointer */
+ volatile unsigned ddv_pointer; /* DDV operation pointer */
+ struct RequestInformation async_info[TABLE_SIZE];
+ volatile unsigned start_mtable;
+ volatile unsigned end_mtable;
+ unsigned mtable[MTABLE_SIZE];
+};
+
+#define PRINT_BUFS 32
+
+struct OPrintBuf {
+ char *fmt;
+ int args[6];
+};
+
+struct OPrintBufArray {
+ volatile unsigned option_counter;
+ volatile unsigned cell_counter;
+ struct OPrintBuf bufs[PRINT_BUFS];
+};
+
+#define ALIGN_SIZE 16
+#define ALIGN_BUFS 128
+#define ALIGN_BUF_SIZE 1024
+
+struct AlignBuf {
+ char *dest;
+ unsigned size;
+ int offset;
+ char buf[ALIGN_BUF_SIZE+2*ALIGN_SIZE];
+};
+
+struct OAlignBufArray {
+ volatile unsigned option_counter;
+ volatile unsigned cell_counter;
+ struct AlignBuf bufs[ALIGN_BUFS];
+};
+
+