From d9d970bdfa12ff36bd5afe3c800834361f70fca4 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Thu, 12 Jan 2006 14:38:51 +0000 Subject: [PATCH] GET_IRQACTIDS, allow SELF in do_vm_map. --- kernel/system/do_getinfo.c | 6 ++++++ kernel/system/do_vm.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/kernel/system/do_getinfo.c b/kernel/system/do_getinfo.c index 33b7bb7a3..a5791abbf 100644 --- a/kernel/system/do_getinfo.c +++ b/kernel/system/do_getinfo.c @@ -133,6 +133,12 @@ register message *m_ptr; /* pointer to request message */ src_phys = vir2phys(&bios_buf_vir); break; + case GET_IRQACTIDS: { + length = sizeof(irq_actids); + src_phys = vir2phys(irq_actids); + break; + } + default: return(EINVAL); } diff --git a/kernel/system/do_vm.c b/kernel/system/do_vm.c index 1f77f20a8..4d2690bd8 100644 --- a/kernel/system/do_vm.c +++ b/kernel/system/do_vm.c @@ -25,7 +25,7 @@ FORWARD _PROTOTYPE( void map_range, (u32_t base, u32_t size, u32_t offset) ); /*===========================================================================* - * do_vm_setbuf * + * do_vm_map * *===========================================================================*/ PUBLIC int do_vm_map(m_ptr) message *m_ptr; /* pointer to request message */ @@ -43,6 +43,8 @@ message *m_ptr; /* pointer to request message */ } proc_nr= m_ptr->m4_l1; + if (proc_nr == SELF) + proc_nr= m_ptr->m_source; do_map= m_ptr->m4_l2; base= m_ptr->m4_l3; size= m_ptr->m4_l4; @@ -207,6 +209,9 @@ u32_t offset; } entry= offset | I386_VM_USER | I386_VM_WRITE | 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); offset += PAGE_SIZE; base += PAGE_SIZE;