Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 899 → Rev 900

/kernel/trunk/arch/ia64/include/mm/tlb.h
34,7 → 34,8
 
#include <arch/mm/page.h>
#include <arch/mm/asid.h>
#include <arch/register.h>
#include <arch/interrupt.h>
#include <arch/types.h>
#include <typedefs.h>
 
extern void tc_mapping_insert(__address va, asid_t asid, vhpt_entry_t entry, bool dtc);
45,14 → 46,12
extern void dtr_mapping_insert(__address va, asid_t asid, tlb_entry_t entry, index_t tr);
extern void itr_mapping_insert(__address va, asid_t asid, tlb_entry_t entry, index_t tr);
 
extern void alternate_instruction_tlb_fault(void);
extern void alternate_data_tlb_fault(void);
extern void data_nested_tlb_fault(void);
extern void data_dirty_bit_fault(void);
extern void instruction_access_bit_fault(void);
extern void data_access_bit_fault(void);
extern void page_not_present(void);
extern void alternate_instruction_tlb_fault(__u64 vector, struct exception_regdump *pstate);
extern void alternate_data_tlb_fault(__u64 vector, struct exception_regdump *pstate);
extern void data_nested_tlb_fault(__u64 vector, struct exception_regdump *pstate);
extern void data_dirty_bit_fault(__u64 vector, struct exception_regdump *pstate);
extern void instruction_access_bit_fault(__u64 vector, struct exception_regdump *pstate);
extern void data_access_bit_fault(__u64 vector, struct exception_regdump *pstate);
extern void page_not_present(__u64 vector, struct exception_regdump *pstate);
 
#endif
 
 
/kernel/trunk/arch/ia64/src/mm/tlb.c
33,7 → 33,9
#include <mm/tlb.h>
#include <arch/mm/tlb.h>
#include <arch/barrier.h>
#include <arch/interrupt.h>
#include <typedefs.h>
#include <panic.h>
 
/** Invalidate all TLB entries. */
void tlb_invalidate_all(void)
102,8 → 104,7
__asm__ volatile (
"mov r8=psr;;\n"
"and r9=r8,%0;;\n" /* (~PSR_IC_MASK) */
"mov psr.l=r9;;\n"
"rsm %0;;\n" /* PSR_IC_MASK */
"srlz.d;;\n"
"srlz.i;;\n"
"mov cr.ifa=%1\n" /* va */
114,8 → 115,8
"mov psr.l=r8;;\n"
"srlz.d;;\n"
:
: "r" (~PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (dtc)
: "p6", "p7", "r8", "r9"
: "i" (PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (dtc)
: "p6", "p7", "r8"
);
if (restore_rr) {
182,8 → 183,7
 
__asm__ volatile (
"mov r8=psr;;\n"
"and r9=r8,%0;;\n" /* (~PSR_IC_MASK) */
"mov psr.l=r9;;\n"
"rsm %0;;\n" /* PSR_IC_MASK */
"srlz.d;;\n"
"srlz.i;;\n"
"mov cr.ifa=%1\n" /* va */
194,8 → 194,8
"mov psr.l=r8;;\n"
"srlz.d;;\n"
:
:"r" (~PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (tr), "r" (dtr)
: "p6", "p7", "r8", "r9"
: "i" (PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (tr), "r" (dtr)
: "p6", "p7", "r8"
);
if (restore_rr) {
205,37 → 205,37
}
}
 
void alternate_instruction_tlb_fault(void)
void alternate_instruction_tlb_fault(__u64 vector, struct exception_regdump *pstate)
{
panic("%s\n", __FUNCTION__);
}
 
void alternate_data_tlb_fault(void)
void alternate_data_tlb_fault(__u64 vector, struct exception_regdump *pstate)
{
panic("%s\n", __FUNCTION__);
panic("%s: %P\n", __FUNCTION__, pstate->cr_ifa);
}
 
void data_nested_tlb_fault(void)
void data_nested_tlb_fault(__u64 vector, struct exception_regdump *pstate)
{
panic("%s\n", __FUNCTION__);
}
 
void data_dirty_bit_fault(void)
void data_dirty_bit_fault(__u64 vector, struct exception_regdump *pstate)
{
panic("%s\n", __FUNCTION__);
}
 
void instruction_access_bit_fault(void)
void instruction_access_bit_fault(__u64 vector, struct exception_regdump *pstate)
{
panic("%s\n", __FUNCTION__);
}
 
void data_access_bit_fault(void)
void data_access_bit_fault(__u64 vector, struct exception_regdump *pstate)
{
panic("%s\n", __FUNCTION__);
}
 
void page_not_present(void)
void page_not_present(__u64 vector, struct exception_regdump *pstate)
{
panic("%s\n", __FUNCTION__);
}
/kernel/trunk/arch/ia64/src/mm/frame.c
43,13 → 43,6
zone_create(0, config.memory_size >> FRAME_WIDTH, 1, 0);
/*
* Workaround to prevent slab allocator from allocating frame 0.
* Remove the following statement when the kernel is no longer
* identity mapped.
*/
frame_mark_unavailable(0, 1);
 
/*
* Blacklist ROM regions.
*/
frame_mark_unavailable(ADDR2PFN(ROM_BASE), ROM_SIZE >> FRAME_WIDTH);