Home | History | Annotate | Line # | Download | only in boot
io.c revision 1.1.2.2
      1  1.1.2.2  garbled /*	$NetBSD: io.c,v 1.1.2.2 2007/12/17 19:09:51 garbled Exp $	*/
      2  1.1.2.2  garbled 
      3  1.1.2.2  garbled 
      4  1.1.2.2  garbled #include <lib/libsa/stand.h>
      5  1.1.2.2  garbled #include <sys/bswap.h>
      6  1.1.2.2  garbled #include "boot.h"
      7  1.1.2.2  garbled 
      8  1.1.2.2  garbled #define POW_IOCC_SEG 0x820C00E0
      9  1.1.2.2  garbled #define IOCC_SEG 0x82000080
     10  1.1.2.2  garbled #define PSL_DR  (1<<4)
     11  1.1.2.2  garbled 
     12  1.1.2.2  garbled volatile u_char *MCA_io  = (u_char *)0xe0000000;
     13  1.1.2.2  garbled 
     14  1.1.2.2  garbled /* hardcode for now */
     15  1.1.2.2  garbled int
     16  1.1.2.2  garbled setup_iocc(void)
     17  1.1.2.2  garbled {
     18  1.1.2.2  garbled 	register_t savemsr, msr;
     19  1.1.2.2  garbled 
     20  1.1.2.2  garbled 	__asm volatile ("mfmsr %0" : "=r"(savemsr));
     21  1.1.2.2  garbled 	msr = savemsr & ~PSL_DR;
     22  1.1.2.2  garbled 	__asm volatile ("mtmsr %0" : : "r"(msr));
     23  1.1.2.2  garbled 
     24  1.1.2.2  garbled 	__asm volatile ("mtsr 14,%0" : : "r"(IOCC_SEG));
     25  1.1.2.2  garbled 	__asm volatile ("mtmsr %0" : : "r"(msr|PSL_DR));
     26  1.1.2.2  garbled 	__asm volatile ("isync");
     27  1.1.2.2  garbled 	__asm volatile ("mtmsr %0;isync" : : "r"(savemsr));
     28  1.1.2.2  garbled 	return 1;
     29  1.1.2.2  garbled }
     30  1.1.2.2  garbled 
     31  1.1.2.2  garbled void
     32  1.1.2.2  garbled outb(int port, char val)
     33  1.1.2.2  garbled {
     34  1.1.2.2  garbled 
     35  1.1.2.2  garbled 	MCA_io[port] = val;
     36  1.1.2.2  garbled }
     37  1.1.2.2  garbled 
     38  1.1.2.2  garbled inline void
     39  1.1.2.2  garbled outw(int port, u_int16_t val)
     40  1.1.2.2  garbled {
     41  1.1.2.2  garbled         outb(port, val>>8);
     42  1.1.2.2  garbled         outb(port+1, val);
     43  1.1.2.2  garbled }
     44  1.1.2.2  garbled 
     45  1.1.2.2  garbled u_char
     46  1.1.2.2  garbled inb(int port)
     47  1.1.2.2  garbled {
     48  1.1.2.2  garbled 
     49  1.1.2.2  garbled 	return (MCA_io[port]);
     50  1.1.2.2  garbled }
     51