Thread (68 messages) 68 messages, 13 authors, 2007-07-11

Re: [x86 setup 17/33] A20 handling code

From: Jan Engelhardt <hidden>
Date: 2007-07-10 18:28:03
Also in: lkml

On Jul 9 2007 19:51, H. Peter Anvin wrote:
+		status = inb(0x64);
+		if (status & 1) {
+			/* Read and discard input data */
+			io_delay();
+			(void)inb(0x60);
Is the (void) cast needed for some obscure reason? Let's hope inb _is_ declared
as volatile. (Minus the volatile flames.
+		} else if (!(status & 2)) {
+			/* Buffers empty, finished! */
+			return 0;
+		}
+	}
+
+	return -1;
+}
+
+
+#define A20_TEST_ADDR	(4*0x80)
+#define A20_TEST_SHORT  32
+#define A20_TEST_LONG	2097152	/* 2^21 */
Maybe...?
#define A20_TEST_LONG (1 << 21)
+/* Quick test to see if A20 is already enabled */
+static int a20_test_short(void)
+{
+	return a20_test(A20_TEST_SHORT);
+}
+
+/* Longer test that actually waits for A20 to come on line; this
+   is useful when dealing with the KBC or other slow external circuitry. */
+static int a20_test_long(void)
+{
+	return a20_test(A20_TEST_LONG);
+}
To me looks like some of these (or other functions) could return bool.



	Jan
-- 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help