rem: addr ppn;
add: addr_t ppn;
context: map_iospace_chunk(addr va, addr pa){	int i;	ptentry *pt;	addr ppn;	int state;	pa &= ~(PAGE_SIZE - 1); // make sure it's page aligned	va &= ~(PAGE_SIZE - 1); // make sure it's page aligned	if (va < IOSPACE_BASE || va >= (IOSPACE_BASE + IOSPACE_SIZE))		panic("map_iospace_chunk: passed invalid va 0x%lx\n", va);	ppn = ADDR_SHIFT(pa);	pt = &iospace_pgtables[(va - IOSPACE_BASE)/PAGE_SIZE];	for (i = 0; i < 1024; i++) {		init_ptentry(&pt[i]);		pt[i].addr = ppn + i;		pt[i].user = 0;		pt[i].rw = 1;		pt[i].present = 1;	}	state = disable_interrupts();	arch_cpu_invalidate_TLB_range(va, va + (IOSPACE_CHUNK_SIZE - PAGE_SIZE));	smp_send_broadcast_ici(SMP_MSG_INVL_PAGE_RANGE, va, va + (IOSPACE_CHUNK_SIZE - PAGE_SIZE), 0,		NULL, SMP_MSG_FLAG_SYNC);	restore_interrupts(state);	return 0;}