patch-2.0.36 linux/include/asm-i386/processor.h
Next file: linux/include/asm-i386/ptrace.h
Previous file: linux/include/asm-i386/mtrr.h
Back to the patch index
Back to the overall index
- Lines: 54
- Date:
Sun Nov 15 10:33:15 1998
- Orig file:
v2.0.35/linux/include/asm-i386/processor.h
- Orig date:
Mon Jul 13 13:46:41 1998
diff -u --recursive --new-file v2.0.35/linux/include/asm-i386/processor.h linux/include/asm-i386/processor.h
@@ -27,6 +27,53 @@
extern char hlt_works_ok; /* problems on some 486Dx4's and old 386's */
extern int have_cpuid; /* We have a CPUID */
+extern unsigned long cpu_hz; /* CPU clock frequency from time.c */
+
+/*
+ * Detection of CPU model (CPUID).
+ */
+extern inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx)
+{
+ __asm__("cpuid"
+ : "=a" (*eax),
+ "=b" (*ebx),
+ "=c" (*ecx),
+ "=d" (*edx)
+ : "a" (op)
+ : "cc");
+}
+
+/*
+ * Cyrix CPU register indexes (use special macros to access these)
+ */
+#define CX86_CCR2 0xc2
+#define CX86_CCR3 0xc3
+#define CX86_CCR4 0xe8
+#define CX86_CCR5 0xe9
+#define CX86_DIR0 0xfe
+#define CX86_DIR1 0xff
+
+/*
+ * Cyrix CPU register access macros
+ */
+
+extern inline unsigned char getCx86(unsigned char reg)
+{
+ unsigned char data;
+
+ __asm__ __volatile__("movb %1,%%al\n\t"
+ "outb %%al,$0x22\n\t"
+ "inb $0x23,%%al" : "=a" (data) : "q" (reg));
+ return data;
+}
+
+extern inline void setCx86(unsigned char reg, unsigned char data)
+{
+ __asm__ __volatile__("outb %%al,$0x22\n\t"
+ "movb %1,%%al\n\t"
+ "outb %%al,$0x23" : : "a" (reg), "q" (data));
+}
+
/*
* Bus types (default is ISA, but people can check others with these..)
* MCA_bus hardcoded to 0 for now.
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov