Changeset ee06f2a in mainline
- Timestamp:
- 2009-02-15T15:28:00Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2d96f4d
- Parents:
- e7f2ad68
- Location:
- kernel
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/include/asm.h
re7f2ad68 ree06f2a 74 74 * @return Value read 75 75 */ 76 static inline uint8_t inb(uint16_t port)76 static inline uint8_t pio_read_8(uint16_t port) 77 77 { 78 78 uint8_t val; … … 89 89 * @param val Value to write 90 90 */ 91 static inline void outb(uint16_t port, uint8_t val)91 static inline void pio_write_8(uint16_t port, uint8_t val) 92 92 { 93 93 asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port)); -
kernel/arch/arm32/include/asm.h
re7f2ad68 ree06f2a 47 47 } 48 48 49 /** No I/O port address space on ARM. */ 50 static inline void outb(ioport_t port, uint8_t v) 49 static inline void pio_write_8(ioport_t port, uint8_t v) 51 50 { 51 /* XXX */ 52 52 } 53 53 54 /** No I/O port address space on ARM. */ 55 static inline uint8_t inb(ioport_t port) 54 static inline uint8_t pio_read_8(ioport_t port) 56 55 { 57 return 0; 56 return 0; /* XXX */ 58 57 } 59 58 -
kernel/arch/ia32/include/asm.h
re7f2ad68 ree06f2a 106 106 * @param val Value to write 107 107 */ 108 static inline void outb(uint16_t port, uint8_t val)108 static inline void pio_write_8(uint16_t port, uint8_t val) 109 109 { 110 110 asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port) ); … … 118 118 * @param val Value to write 119 119 */ 120 static inline void outw(uint16_t port, uint16_t val)120 static inline void pio_write_16(uint16_t port, uint16_t val) 121 121 { 122 122 asm volatile ("outw %w0, %w1\n" : : "a" (val), "d" (port) ); … … 130 130 * @param val Value to write 131 131 */ 132 static inline void outl(uint16_t port, uint32_t val)132 static inline void pio_write_32(uint16_t port, uint32_t val) 133 133 { 134 134 asm volatile ("outl %l0, %w1\n" : : "a" (val), "d" (port) ); … … 142 142 * @return Value read 143 143 */ 144 static inline uint8_t inb(uint16_t port)144 static inline uint8_t pio_read_8(uint16_t port) 145 145 { 146 146 uint8_t val; … … 157 157 * @return Value read 158 158 */ 159 static inline uint16_t inw(uint16_t port)159 static inline uint16_t pio_read_16(uint16_t port) 160 160 { 161 161 uint16_t val; … … 172 172 * @return Value read 173 173 */ 174 static inline uint32_t inl(uint16_t port)174 static inline uint32_t pio_read_32(uint16_t port) 175 175 { 176 176 uint32_t val; -
kernel/arch/ia32/include/drivers/i8042.h
re7f2ad68 ree06f2a 48 48 static inline void i8042_data_write(uint8_t data) 49 49 { 50 outb(i8042_DATA, data);50 pio_write_8(i8042_DATA, data); 51 51 } 52 52 53 53 static inline uint8_t i8042_data_read(void) 54 54 { 55 return inb(i8042_DATA);55 return pio_read_8(i8042_DATA); 56 56 } 57 57 58 58 static inline uint8_t i8042_status_read(void) 59 59 { 60 return inb(i8042_STATUS);60 return pio_read_8(i8042_STATUS); 61 61 } 62 62 63 63 static inline void i8042_command_write(uint8_t command) 64 64 { 65 outb(i8042_STATUS, command);65 pio_write_8(i8042_STATUS, command); 66 66 } 67 67 -
kernel/arch/ia32/src/drivers/i8254.c
re7f2ad68 ree06f2a 95 95 void i8254_normal_operation(void) 96 96 { 97 outb(CLK_PORT4, 0x36);97 pio_write_8(CLK_PORT4, 0x36); 98 98 pic_disable_irqs(1 << IRQ_CLK); 99 outb(CLK_PORT1, (CLK_CONST / HZ) & 0xf);100 outb(CLK_PORT1, (CLK_CONST / HZ) >> 8);99 pio_write_8(CLK_PORT1, (CLK_CONST / HZ) & 0xf); 100 pio_write_8(CLK_PORT1, (CLK_CONST / HZ) >> 8); 101 101 pic_enable_irqs(1 << IRQ_CLK); 102 102 } … … 115 115 * MAGIC_NUMBER is the magic value for 1ms. 116 116 */ 117 outb(CLK_PORT4, 0x30);118 outb(CLK_PORT1, 0xff);119 outb(CLK_PORT1, 0xff);117 pio_write_8(CLK_PORT4, 0x30); 118 pio_write_8(CLK_PORT1, 0xff); 119 pio_write_8(CLK_PORT1, 0xff); 120 120 121 121 do { 122 122 /* will read both status and count */ 123 outb(CLK_PORT4, 0xc2);124 not_ok = (uint8_t) (( inb(CLK_PORT1) >> 6) & 1);125 t1 = inb(CLK_PORT1);126 t1 |= inb(CLK_PORT1) << 8;123 pio_write_8(CLK_PORT4, 0xc2); 124 not_ok = (uint8_t) ((pio_read_8(CLK_PORT1) >> 6) & 1); 125 t1 = pio_read_8(CLK_PORT1); 126 t1 |= pio_read_8(CLK_PORT1) << 8; 127 127 } while (not_ok); 128 128 129 129 asm_delay_loop(LOOPS); 130 130 131 outb(CLK_PORT4, 0xd2);132 t2 = inb(CLK_PORT1);133 t2 |= inb(CLK_PORT1) << 8;131 pio_write_8(CLK_PORT4, 0xd2); 132 t2 = pio_read_8(CLK_PORT1); 133 t2 |= pio_read_8(CLK_PORT1) << 8; 134 134 135 135 /* 136 136 * We want to determine the overhead of the calibrating mechanism. 137 137 */ 138 outb(CLK_PORT4, 0xd2);139 o1 = inb(CLK_PORT1);140 o1 |= inb(CLK_PORT1) << 8;138 pio_write_8(CLK_PORT4, 0xd2); 139 o1 = pio_read_8(CLK_PORT1); 140 o1 |= pio_read_8(CLK_PORT1) << 8; 141 141 142 142 asm_fake_loop(LOOPS); 143 143 144 outb(CLK_PORT4, 0xd2);145 o2 = inb(CLK_PORT1);146 o2 |= inb(CLK_PORT1) << 8;144 pio_write_8(CLK_PORT4, 0xd2); 145 o2 = pio_read_8(CLK_PORT1); 146 o2 |= pio_read_8(CLK_PORT1) << 8; 147 147 148 148 CPU->delay_loop_const = -
kernel/arch/ia32/src/drivers/i8259.c
re7f2ad68 ree06f2a 50 50 { 51 51 /* ICW1: this is ICW1, ICW4 to follow */ 52 outb(PIC_PIC0PORT1, PIC_ICW1 | PIC_NEEDICW4);52 pio_write_8(PIC_PIC0PORT1, PIC_ICW1 | PIC_NEEDICW4); 53 53 54 54 /* ICW2: IRQ 0 maps to INT IRQBASE */ 55 outb(PIC_PIC0PORT2, IVT_IRQBASE);55 pio_write_8(PIC_PIC0PORT2, IVT_IRQBASE); 56 56 57 57 /* ICW3: pic1 using IRQ IRQ_PIC1 */ 58 outb(PIC_PIC0PORT2, 1 << IRQ_PIC1);58 pio_write_8(PIC_PIC0PORT2, 1 << IRQ_PIC1); 59 59 60 60 /* ICW4: i8086 mode */ 61 outb(PIC_PIC0PORT2, 1);61 pio_write_8(PIC_PIC0PORT2, 1); 62 62 63 63 /* ICW1: ICW1, ICW4 to follow */ 64 outb(PIC_PIC1PORT1, PIC_ICW1 | PIC_NEEDICW4);64 pio_write_8(PIC_PIC1PORT1, PIC_ICW1 | PIC_NEEDICW4); 65 65 66 66 /* ICW2: IRQ 8 maps to INT (IVT_IRQBASE + 8) */ 67 outb(PIC_PIC1PORT2, IVT_IRQBASE + 8);67 pio_write_8(PIC_PIC1PORT2, IVT_IRQBASE + 8); 68 68 69 69 /* ICW3: pic1 is known as IRQ_PIC1 */ 70 outb(PIC_PIC1PORT2, IRQ_PIC1);70 pio_write_8(PIC_PIC1PORT2, IRQ_PIC1); 71 71 72 72 /* ICW4: i8086 mode */ 73 outb(PIC_PIC1PORT2, 1);73 pio_write_8(PIC_PIC1PORT2, 1); 74 74 75 75 /* … … 95 95 96 96 if (irqmask & 0xff) { 97 x = inb(PIC_PIC0PORT2);98 outb(PIC_PIC0PORT2, (uint8_t) (x & (~(irqmask & 0xff))));97 x = pio_read_8(PIC_PIC0PORT2); 98 pio_write_8(PIC_PIC0PORT2, (uint8_t) (x & (~(irqmask & 0xff)))); 99 99 } 100 100 if (irqmask >> 8) { 101 x = inb(PIC_PIC1PORT2);102 outb(PIC_PIC1PORT2, (uint8_t) (x & (~(irqmask >> 8))));101 x = pio_read_8(PIC_PIC1PORT2); 102 pio_write_8(PIC_PIC1PORT2, (uint8_t) (x & (~(irqmask >> 8)))); 103 103 } 104 104 } … … 109 109 110 110 if (irqmask & 0xff) { 111 x = inb(PIC_PIC0PORT2);112 outb(PIC_PIC0PORT2, (uint8_t) (x | (irqmask & 0xff)));111 x = pio_read_8(PIC_PIC0PORT2); 112 pio_write_8(PIC_PIC0PORT2, (uint8_t) (x | (irqmask & 0xff))); 113 113 } 114 114 if (irqmask >> 8) { 115 x = inb(PIC_PIC1PORT2);116 outb(PIC_PIC1PORT2, (uint8_t) (x | (irqmask >> 8)));115 x = pio_read_8(PIC_PIC1PORT2); 116 pio_write_8(PIC_PIC1PORT2, (uint8_t) (x | (irqmask >> 8))); 117 117 } 118 118 } … … 120 120 void pic_eoi(void) 121 121 { 122 outb(0x20, 0x20);123 outb(0xa0, 0x20);122 pio_write_8(0x20, 0x20); 123 pio_write_8(0xa0, 0x20); 124 124 } 125 125 -
kernel/arch/ia32/src/smp/smp.c
re7f2ad68 ree06f2a 123 123 * BIOS will not do the POST after the INIT signal. 124 124 */ 125 outb(0x70, 0xf);126 outb(0x71, 0xa);125 pio_write_8(0x70, 0xf); 126 pio_write_8(0x71, 0xa); 127 127 128 128 pic_disable_irqs(0xffff); -
kernel/arch/ia64/include/asm.h
re7f2ad68 ree06f2a 42 42 #define IA64_IOSPACE_ADDRESS 0xE001000000000000ULL 43 43 44 static inline void outb(ioport_t port, uint8_t v)44 static inline void pio_write_8(ioport_t port, uint8_t v) 45 45 { 46 46 *((uint8_t *)(IA64_IOSPACE_ADDRESS + … … 50 50 } 51 51 52 static inline void outw(ioport_t port, uint16_t v)52 static inline void pio_write_16(ioport_t port, uint16_t v) 53 53 { 54 54 *((uint16_t *)(IA64_IOSPACE_ADDRESS + … … 58 58 } 59 59 60 static inline void outl(ioport_t port, uint32_t v)60 static inline void pio_write_32(ioport_t port, uint32_t v) 61 61 { 62 62 *((uint32_t *)(IA64_IOSPACE_ADDRESS + … … 66 66 } 67 67 68 static inline uint8_t inb(ioport_t port)68 static inline uint8_t pio_read_8(ioport_t port) 69 69 { 70 70 asm volatile ("mf\n" ::: "memory"); … … 74 74 } 75 75 76 static inline uint16_t inw(ioport_t port)76 static inline uint16_t pio_read_16(ioport_t port) 77 77 { 78 78 asm volatile ("mf\n" ::: "memory"); … … 82 82 } 83 83 84 static inline uint32_t inl(ioport_t port)84 static inline uint32_t pio_read_32(ioport_t port) 85 85 { 86 86 asm volatile ("mf\n" ::: "memory"); -
kernel/arch/ia64/include/drivers/i8042.h
re7f2ad68 ree06f2a 48 48 static inline void i8042_data_write(uint8_t data) 49 49 { 50 outb(i8042_DATA, data);50 pio_write_8(i8042_DATA, data); 51 51 } 52 52 53 53 static inline uint8_t i8042_data_read(void) 54 54 { 55 return inb(i8042_DATA);55 return pio_read_8(i8042_DATA); 56 56 } 57 57 58 58 static inline uint8_t i8042_status_read(void) 59 59 { 60 return inb(i8042_STATUS);60 return pio_read_8(i8042_STATUS); 61 61 } 62 62 63 63 static inline void i8042_command_write(uint8_t command) 64 64 { 65 outb(i8042_STATUS, command);65 pio_write_8(i8042_STATUS, command); 66 66 } 67 67 -
kernel/arch/ia64/src/ia64.c
re7f2ad68 ree06f2a 250 250 void arch_reboot(void) 251 251 { 252 outb(0x64, 0xfe);252 pio_write_8(0x64, 0xfe); 253 253 while (1) 254 254 ; -
kernel/arch/mips32/include/asm.h
re7f2ad68 ree06f2a 71 71 extern ipl_t interrupts_read(void); 72 72 73 /** No I/O port address space on MIPS. */ 74 static inline void outb(ioport_t port, uint8_t v) 73 static inline void pio_write_8(ioport_t port, uint8_t v) 75 74 { 75 /* XXX */ 76 76 } 77 77 78 /** No I/O port address space on MIPS. */ 79 static inline uint8_t inb(ioport_t port) 78 static inline uint8_t pio_read_8(ioport_t port) 80 79 { 81 return 0; 80 return 0; /* XXX */ 82 81 } 83 82 -
kernel/arch/ppc32/include/asm.h
re7f2ad68 ree06f2a 150 150 extern void userspace_asm(uintptr_t uspace_uarg, uintptr_t stack, uintptr_t entry); 151 151 152 /** No I/O port address space on PowerPC. */ 153 static inline void outb(ioport_t port, uint8_t v) 152 static inline void pio_write_8(ioport_t port, uint8_t v) 154 153 { 154 /* XXX */ 155 155 } 156 156 157 /** No I/O port address space on PowerPC. */ 158 static inline uint8_t inb(ioport_t port) 157 static inline uint8_t pio_read_8(ioport_t port) 159 158 { 160 return 0; 159 return 0; /* XXX */ 161 160 } 162 161 -
kernel/arch/sparc64/include/asm.h
re7f2ad68 ree06f2a 45 45 #include <arch/barrier.h> 46 46 47 static inline void outb(ioport_t port, uint8_t v)47 static inline void pio_write_8(ioport_t port, uint8_t v) 48 48 { 49 49 *((volatile uint8_t *)(port)) = v; … … 51 51 } 52 52 53 static inline void outw(ioport_t port, uint16_t v)53 static inline void pio_write_16(ioport_t port, uint16_t v) 54 54 { 55 55 *((volatile uint16_t *)(port)) = v; … … 57 57 } 58 58 59 static inline void outl(ioport_t port, uint32_t v)59 static inline void pio_write_32(ioport_t port, uint32_t v) 60 60 { 61 61 *((volatile uint32_t *)(port)) = v; … … 63 63 } 64 64 65 static inline uint8_t inb(ioport_t port)65 static inline uint8_t pio_read_8(ioport_t port) 66 66 { 67 67 uint8_t rv; … … 73 73 } 74 74 75 static inline uint16_t inw(ioport_t port)75 static inline uint16_t pio_read_16(ioport_t port) 76 76 { 77 77 uint16_t rv; … … 83 83 } 84 84 85 static inline uint32_t inl(ioport_t port)85 static inline uint32_t pio_read_32(ioport_t port) 86 86 { 87 87 uint32_t rv; -
kernel/genarch/include/kbd/ns16550.h
re7f2ad68 ree06f2a 78 78 static inline uint8_t ns16550_rbr_read(ns16550_t *dev) 79 79 { 80 return inb(dev->io_port + RBR_REG);80 return pio_read_8(dev->io_port + RBR_REG); 81 81 } 82 82 static inline void ns16550_rbr_write(ns16550_t *dev, uint8_t v) 83 83 { 84 outb(dev->io_port + RBR_REG, v);84 pio_write_8(dev->io_port + RBR_REG, v); 85 85 } 86 86 87 87 static inline uint8_t ns16550_ier_read(ns16550_t *dev) 88 88 { 89 return inb(dev->io_port + IER_REG);89 return pio_read_8(dev->io_port + IER_REG); 90 90 } 91 91 92 92 static inline void ns16550_ier_write(ns16550_t *dev, uint8_t v) 93 93 { 94 outb(dev->io_port + IER_REG, v);94 pio_write_8(dev->io_port + IER_REG, v); 95 95 } 96 96 97 97 static inline uint8_t ns16550_iir_read(ns16550_t *dev) 98 98 { 99 return inb(dev->io_port + IIR_REG);99 return pio_read_8(dev->io_port + IIR_REG); 100 100 } 101 101 102 102 static inline void ns16550_fcr_write(ns16550_t *dev, uint8_t v) 103 103 { 104 outb(dev->io_port + FCR_REG, v);104 pio_write_8(dev->io_port + FCR_REG, v); 105 105 } 106 106 107 107 static inline uint8_t ns16550_lcr_read(ns16550_t *dev) 108 108 { 109 return inb(dev->io_port + LCR_REG);109 return pio_read_8(dev->io_port + LCR_REG); 110 110 } 111 111 112 112 static inline void ns16550_lcr_write(ns16550_t *dev, uint8_t v) 113 113 { 114 outb(dev->io_port + LCR_REG, v);114 pio_write_8(dev->io_port + LCR_REG, v); 115 115 } 116 116 117 117 static inline uint8_t ns16550_lsr_read(ns16550_t *dev) 118 118 { 119 return inb(dev->io_port + LSR_REG);119 return pio_read_8(dev->io_port + LSR_REG); 120 120 } 121 121 122 122 static inline uint8_t ns16550_mcr_read(ns16550_t *dev) 123 123 { 124 return inb(dev->io_port + MCR_REG);124 return pio_read_8(dev->io_port + MCR_REG); 125 125 } 126 126 127 127 static inline void ns16550_mcr_write(ns16550_t *dev, uint8_t v) 128 128 { 129 outb(dev->io_port + MCR_REG, v);129 pio_write_8(dev->io_port + MCR_REG, v); 130 130 } 131 131 -
kernel/genarch/src/drivers/ega/ega.c
re7f2ad68 ree06f2a 84 84 static void ega_move_cursor(void) 85 85 { 86 outb(ega_base + EGA_INDEX_REG, 0xe);87 outb(ega_base + EGA_DATA_REG, (uint8_t) ((ega_cursor >> 8) & 0xff));88 outb(ega_base + EGA_INDEX_REG, 0xf);89 outb(ega_base + EGA_DATA_REG, (uint8_t) (ega_cursor & 0xff));86 pio_write_8(ega_base + EGA_INDEX_REG, 0xe); 87 pio_write_8(ega_base + EGA_DATA_REG, (uint8_t) ((ega_cursor >> 8) & 0xff)); 88 pio_write_8(ega_base + EGA_INDEX_REG, 0xf); 89 pio_write_8(ega_base + EGA_DATA_REG, (uint8_t) (ega_cursor & 0xff)); 90 90 } 91 91 -
kernel/generic/src/ipc/irq.c
re7f2ad68 ree06f2a 102 102 break; 103 103 case CMD_PORT_READ_1: 104 dstval = inb((long) code->cmds[i].addr);104 dstval = pio_read_8((long) code->cmds[i].addr); 105 105 break; 106 106 case CMD_PORT_WRITE_1: 107 outb((long) code->cmds[i].addr, code->cmds[i].value);107 pio_write_8((long) code->cmds[i].addr, code->cmds[i].value); 108 108 break; 109 109 default:
Note:
See TracChangeset
for help on using the changeset viewer.