rem: isa->write_io_16(ioctl->port, ioctl->value); break;
add: isa->write_io_32(ioctl->port, ioctl->value); break;
context: poke_control(void* cookie, uint32 op, void* arg, size_t length){	switch (op) {		case POKE_PORT_READ:		{    		status_t result;			port_io_args* ioctl = (port_io_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			result = B_OK;			switch (ioctl->size) {				case 1:					ioctl->value = isa->read_io_8(ioctl->port);				break;				case 2:	   				ioctl->value = isa->read_io_16(ioctl->port);				break;				case 4:	   				ioctl->value = isa->read_io_32(ioctl->port);				break;				default:					result = B_BAD_VALUE;			}			return result;   		}		case POKE_PORT_WRITE:		{    		status_t result;			port_io_args* ioctl = (port_io_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			result = B_OK;			switch (ioctl->size) {				case 1:					isa->write_io_8(ioctl->port, ioctl->value);				break;				case 2:					isa->write_io_16(ioctl->port, ioctl->value);				break;				case 4:					isa->write_io_16(ioctl->port, ioctl->value);				break;				default:					result = B_BAD_VALUE;			}			return result;   		}		case POKE_PORT_INDEXED_READ:		{			port_io_args* ioctl = (port_io_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			isa->write_io_8(ioctl->port, ioctl->size);			ioctl->value = isa->read_io_8(ioctl->port + 1);			return B_OK;		}		case POKE_PORT_INDEXED_WRITE:		{			port_io_args* ioctl = (port_io_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			isa->write_io_8(ioctl->port, ioctl->size);			isa->write_io_8(ioctl->port + 1, ioctl->value);			return B_OK;		}		case POKE_PCI_READ_CONFIG:		{			pci_io_args* ioctl = (pci_io_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;						ioctl->value = pci->read_pci_config(ioctl->bus, ioctl->device,												ioctl->function, ioctl->offset,												ioctl->size);			return B_OK;		}		case POKE_PCI_WRITE_CONFIG:		{			pci_io_args* ioctl = (pci_io_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			pci->write_pci_config(ioctl->bus, ioctl->device, ioctl->function,								ioctl->offset, ioctl->size, ioctl->value);			return B_OK;		}		case POKE_GET_NTH_PCI_INFO:		{		    pci_info_args* ioctl = (pci_info_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			ioctl->status = pci->get_nth_pci_info(ioctl->index, ioctl->info);			return B_OK;		}		case POKE_GET_PHYSICAL_ADDRESS:		{			mem_map_args* ioctl = (mem_map_args*) arg;			physical_entry table;			status_t result;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			result = get_memory_map(ioctl->address, ioctl->size, &table, 1);			ioctl->physical_address = table.address;			ioctl->size = table.size;			return result;		}		case POKE_MAP_MEMORY:		{			mem_map_args* ioctl = (mem_map_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			ioctl->area = map_physical_memory(ioctl->name,											ioctl->physical_address,											ioctl->size,											ioctl->flags,											ioctl->protection,											(void**) &ioctl->address);			return ioctl->area;		}		case POKE_UNMAP_MEMORY:		{			mem_map_args* ioctl = (mem_map_args*) arg;		    if (ioctl->signature != POKE_SIGNATURE)		    	return B_BAD_VALUE;			return delete_area(ioctl->area);		}    }    return B_BAD_VALUE;}