summaryrefslogtreecommitdiff
path: root/protos.h
diff options
context:
space:
mode:
Diffstat (limited to 'protos.h')
-rw-r--r--protos.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/protos.h b/protos.h
new file mode 100644
index 0000000..6bff767
--- /dev/null
+++ b/protos.h
@@ -0,0 +1,42 @@
+#ifndef PROTOS_H
+#define PROTOS_H 1
+
+/*
+ * Cserve functions.
+ */
+
+static inline unsigned long ldq_p(unsigned long addr)
+{
+ register unsigned long v0 __asm__("$0");
+ register unsigned long a0 __asm__("$16") = 1;
+ register unsigned long a1 __asm__("$17") = addr;
+
+ asm volatile ("call_pal 9"
+ : "=r"(v0), "+r"(a0), "+r"(a1) :
+ : "$18", "$19", "$20", "$21");
+
+ return v0;
+}
+
+static inline unsigned long stq_p(unsigned long port, unsigned long val)
+{
+ register unsigned long v0 __asm__("$0");
+ register unsigned long a0 __asm__("$16") = 4;
+ register unsigned long a1 __asm__("$17") = port;
+ register unsigned long a2 __asm__("$18") = val;
+
+ asm volatile ("call_pal 9"
+ : "=r"(v0), "+r"(a0), "+r"(a1), "+r"(a2) :
+ : "$19", "$20", "$21");
+
+ return v0;
+}
+
+/*
+ * I/O functions
+ */
+
+extern unsigned long inb(unsigned long port);
+extern unsigned long outb(unsigned char val, unsigned long port);
+
+#endif /* PROTOS_H */