GET_IRQACTIDS, allow SELF in do_vm_map.
This commit is contained in:
parent
f18faca855
commit
d9d970bdfa
|
@ -133,6 +133,12 @@ register message *m_ptr; /* pointer to request message */
|
||||||
src_phys = vir2phys(&bios_buf_vir);
|
src_phys = vir2phys(&bios_buf_vir);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GET_IRQACTIDS: {
|
||||||
|
length = sizeof(irq_actids);
|
||||||
|
src_phys = vir2phys(irq_actids);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return(EINVAL);
|
return(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ FORWARD _PROTOTYPE( void map_range, (u32_t base, u32_t size,
|
||||||
u32_t offset) );
|
u32_t offset) );
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* do_vm_setbuf *
|
* do_vm_map *
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
PUBLIC int do_vm_map(m_ptr)
|
PUBLIC int do_vm_map(m_ptr)
|
||||||
message *m_ptr; /* pointer to request message */
|
message *m_ptr; /* pointer to request message */
|
||||||
|
@ -43,6 +43,8 @@ message *m_ptr; /* pointer to request message */
|
||||||
}
|
}
|
||||||
|
|
||||||
proc_nr= m_ptr->m4_l1;
|
proc_nr= m_ptr->m4_l1;
|
||||||
|
if (proc_nr == SELF)
|
||||||
|
proc_nr= m_ptr->m_source;
|
||||||
do_map= m_ptr->m4_l2;
|
do_map= m_ptr->m4_l2;
|
||||||
base= m_ptr->m4_l3;
|
base= m_ptr->m4_l3;
|
||||||
size= m_ptr->m4_l4;
|
size= m_ptr->m4_l4;
|
||||||
|
@ -207,6 +209,9 @@ u32_t offset;
|
||||||
}
|
}
|
||||||
entry= offset | I386_VM_USER | I386_VM_WRITE |
|
entry= offset | I386_VM_USER | I386_VM_WRITE |
|
||||||
I386_VM_PRESENT;
|
I386_VM_PRESENT;
|
||||||
|
#if 0 /* Do we need this for memory mapped I/O? */
|
||||||
|
entry |= I386_VM_PCD | I386_VM_PWT;
|
||||||
|
#endif
|
||||||
phys_put32(curr_pt_addr + pt_ent * I386_VM_PT_ENT_SIZE, entry);
|
phys_put32(curr_pt_addr + pt_ent * I386_VM_PT_ENT_SIZE, entry);
|
||||||
offset += PAGE_SIZE;
|
offset += PAGE_SIZE;
|
||||||
base += PAGE_SIZE;
|
base += PAGE_SIZE;
|
||||||
|
|
Loading…
Reference in a new issue