Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 824 → Rev 825

/kernel/trunk/contrib/conf/msim.conf
5,9 → 5,9
add dcpu mips1
 
add rwm firstmem 0x0 1M load "/dev/zero"
add rwm mainmem 0x00100000 16M load "kernel.bin"
add rom startmem 0x1fc00000 1k load "load.bin"
add rwm init 0x20000000 1M load "init
add rwm mainmem 0x00100000 16M load "kernel/kernel.bin"
add rom startmem 0x1fc00000 1k load "kernel/load.bin"
add rwm init 0x20000000 1M load "uspace/init/init"
 
add dprinter printer 0x10000000
add dkeyboard keyboard 0x10000000 2
/kernel/trunk/arch/amd64/include/interrupt.h
71,7 → 71,6
extern void page_fault(int n, struct interrupt_context *ctx);
extern void syscall(int n, void *stack);
extern void tlb_shootdown_ipi(int n, void *stack);
extern void wakeup_ipi(int n, void *stack);
 
extern void trap_virtual_enable_irqs(__u16 irqmask);
extern void trap_virtual_disable_irqs(__u16 irqmask);
/kernel/trunk/arch/amd64/include/mm/page.h
101,7 → 101,8
p->uaccessible<<PAGE_USER_SHIFT |
1<<PAGE_READ_SHIFT |
p->writeable<<PAGE_WRITE_SHIFT |
(!p->no_execute)<<PAGE_EXEC_SHIFT
(!p->no_execute)<<PAGE_EXEC_SHIFT |
p->global<<PAGE_GLOBAL_SHIFT
);
}
 
122,6 → 123,7
p->uaccessible = (flags & PAGE_USER) != 0;
p->writeable = (flags & PAGE_WRITE) != 0;
p->no_execute = (flags & PAGE_EXEC) == 0;
p->global = (flags & PAGE_GLOBAL) != 0;
}
 
extern void page_arch_init(void);
/kernel/trunk/arch/amd64/src/amd64.c
121,7 → 121,6
#ifdef CONFIG_SMP
exc_register(VECTOR_TLB_SHOOTDOWN_IPI, "tlb_shootdown",
tlb_shootdown_ipi);
exc_register(VECTOR_WAKEUP_IPI, "wakeup_ipi", wakeup_ipi);
#endif /* CONFIG_SMP */
}
}
/kernel/trunk/arch/amd64/src/mm/page.c
41,6 → 41,7
void page_arch_init(void)
{
__address cur;
int flags;
 
if (config.cpu_active == 1) {
page_mapping_operations = &pt_mapping_operations;
49,7 → 50,10
* PA2KA(identity) mapping for all frames.
*/
for (cur = 0; cur < last_frame; cur += FRAME_SIZE) {
page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, PAGE_CACHEABLE | PAGE_EXEC);
flags = PAGE_CACHEABLE | PAGE_EXEC;
if ((PA2KA(cur) >= config.base) && (PA2KA(cur) < config.base + config.kernel_size))
flags |= PAGE_GLOBAL;
page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
}
exc_register(14, "page_fault", (iroutine)page_fault);
write_cr3((__address) AS_KERNEL->page_table);
/kernel/trunk/arch/amd64/src/interrupt.c
141,11 → 141,6
tlb_shootdown_ipi_recv();
}
 
void wakeup_ipi(int n, void *stack)
{
trap_virtual_eoi();
}
 
void trap_virtual_enable_irqs(__u16 irqmask)
{
if (enable_irqs_function)
/kernel/trunk/arch/mips32/include/mm/page.h
99,7 → 99,8
(1<<PAGE_USER_SHIFT) |
(1<<PAGE_READ_SHIFT) |
((p->w)<<PAGE_WRITE_SHIFT) |
(1<<PAGE_EXEC_SHIFT)
(1<<PAGE_EXEC_SHIFT) |
p->lo.g<<PAGE_GLOBAL_SHIFT
);
}
110,6 → 111,7
p->lo.c = (flags & PAGE_CACHEABLE) != 0 ? PAGE_CACHEABLE_EXC_WRITE : PAGE_UNCACHED;
p->lo.v = !(flags & PAGE_NOT_PRESENT);
p->lo.g = (flags & PAGE_GLOBAL) != 0;
p->w = (flags & PAGE_WRITE) != 0;
}
 
/kernel/trunk/arch/ia32/include/interrupt.h
59,7 → 59,6
 
#define VECTOR_SYSCALL (IVT_FREEBASE+0)
#define VECTOR_TLB_SHOOTDOWN_IPI (IVT_FREEBASE+1)
#define VECTOR_WAKEUP_IPI (IVT_FREEBASE+2)
 
extern void (* disable_irqs_function)(__u16 irqmask);
extern void (* enable_irqs_function)(__u16 irqmask);
72,7 → 71,6
extern void page_fault(int n, void *stack);
extern void syscall(int n, void *stack);
extern void tlb_shootdown_ipi(int n, void *stack);
extern void wakeup_ipi(int n, void *stack);
 
extern void trap_virtual_enable_irqs(__u16 irqmask);
extern void trap_virtual_disable_irqs(__u16 irqmask);
/kernel/trunk/arch/ia32/include/mm/page.h
85,7 → 85,8
unsigned page_cache_disable : 1;
unsigned accessed : 1;
unsigned dirty : 1;
unsigned : 2;
unsigned pat : 1;
unsigned global : 1;
unsigned avl : 3;
unsigned frame_address : 20;
} __attribute__ ((packed));
100,7 → 101,8
p->uaccessible<<PAGE_USER_SHIFT |
1<<PAGE_READ_SHIFT |
p->writeable<<PAGE_WRITE_SHIFT |
1<<PAGE_EXEC_SHIFT
1<<PAGE_EXEC_SHIFT |
p->global<<PAGE_GLOBAL_SHIFT
);
}
 
112,6 → 114,7
p->present = !(flags & PAGE_NOT_PRESENT);
p->uaccessible = (flags & PAGE_USER) != 0;
p->writeable = (flags & PAGE_WRITE) != 0;
p->global = (flags & PAGE_GLOBAL) != 0;
}
 
extern void page_arch_init(void);
/kernel/trunk/arch/ia32/src/ia32.c
65,7 → 65,6
#ifdef CONFIG_SMP
exc_register(VECTOR_TLB_SHOOTDOWN_IPI, "tlb_shootdown",
tlb_shootdown_ipi);
exc_register(VECTOR_WAKEUP_IPI, "wakeup_ipi", wakeup_ipi);
#endif /* CONFIG_SMP */
}
}
/kernel/trunk/arch/ia32/src/mm/page.c
45,6 → 45,7
void page_arch_init(void)
{
__address cur;
int flags;
 
if (config.cpu_active == 1) {
page_mapping_operations = &pt_mapping_operations;
52,8 → 53,12
/*
* PA2KA(identity) mapping for all frames until last_frame.
*/
for (cur = 0; cur < last_frame; cur += FRAME_SIZE)
page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, PAGE_CACHEABLE);
for (cur = 0; cur < last_frame; cur += FRAME_SIZE) {
flags = PAGE_CACHEABLE;
if ((PA2KA(cur) >= config.base) && (PA2KA(cur) < config.base + config.kernel_size))
flags |= PAGE_GLOBAL;
page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
}
 
exc_register(14, "page_fault", page_fault);
write_cr3((__address) AS_KERNEL->page_table);
/kernel/trunk/arch/ia32/src/interrupt.c
127,11 → 127,6
tlb_shootdown_ipi_recv();
}
 
void wakeup_ipi(int n, void *stack)
{
trap_virtual_eoi();
}
 
void trap_virtual_enable_irqs(__u16 irqmask)
{
if (enable_irqs_function)