rem: TRACE(("mouse interrupt : byte %x\n", data));
add: TRACE(("mouse interrupt: %d byte: 0x%02x\n", sPacketIndex, data));
context: handle_mouse_interrupt(void* cookie){	uint8 data = gIsa->read_io_8(PS2_PORT_CTRL);	if (!(data & PS2_STATUS_OUTPUT_BUFFER_FULL)) {		TRACE(("no ps2 mouse data available\n"));		return B_UNHANDLED_INTERRUPT;	}	data = gIsa->read_io_8(PS2_PORT_DATA);	TRACE(("mouse interrupt : byte %x\n", data));	if (sSync == 0 && !(data & 8)) {		TRACE(("mouse resynched, bad data\n"));		return B_HANDLED_INTERRUPT;	}	while (packet_buffer_write(sMouseBuffer, &data, sizeof(data)) == 0) {		// we start dropping packets when the buffer is full		packet_buffer_flush(sMouseBuffer, sPacketSize);	}	if (++sSync == sPacketSize) {		TRACE(("mouse synched\n"));		sSync = 0;		release_sem_etc(sMouseSem, 1, B_DO_NOT_RESCHEDULE);		return B_INVOKE_SCHEDULER;	}	return B_HANDLED_INTERRUPT;}