Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 900 → Rev 899

/kernel/trunk/arch/ia64/include/mm/tlb.h
34,8 → 34,7
 
#include <arch/mm/page.h>
#include <arch/mm/asid.h>
#include <arch/interrupt.h>
#include <arch/types.h>
#include <arch/register.h>
#include <typedefs.h>
 
extern void tc_mapping_insert(__address va, asid_t asid, vhpt_entry_t entry, bool dtc);
46,12 → 45,14
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(__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);
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);
 
#endif
 
 
/kernel/trunk/arch/ia64/src/mm/tlb.c
33,9 → 33,7
#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)
104,7 → 102,8
__asm__ volatile (
"mov r8=psr;;\n"
"rsm %0;;\n" /* PSR_IC_MASK */
"and r9=r8,%0;;\n" /* (~PSR_IC_MASK) */
"mov psr.l=r9;;\n"
"srlz.d;;\n"
"srlz.i;;\n"
"mov cr.ifa=%1\n" /* va */
115,8 → 114,8
"mov psr.l=r8;;\n"
"srlz.d;;\n"
:
: "i" (PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (dtc)
: "p6", "p7", "r8"
: "r" (~PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (dtc)
: "p6", "p7", "r8", "r9"
);
if (restore_rr) {
183,7 → 182,8
 
__asm__ volatile (
"mov r8=psr;;\n"
"rsm %0;;\n" /* PSR_IC_MASK */
"and r9=r8,%0;;\n" /* (~PSR_IC_MASK) */
"mov psr.l=r9;;\n"
"srlz.d;;\n"
"srlz.i;;\n"
"mov cr.ifa=%1\n" /* va */
194,8 → 194,8
"mov psr.l=r8;;\n"
"srlz.d;;\n"
:
: "i" (PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (tr), "r" (dtr)
: "p6", "p7", "r8"
:"r" (~PSR_IC_MASK), "r" (va), "r" (entry.word[1]), "r" (entry.word[0]), "r" (tr), "r" (dtr)
: "p6", "p7", "r8", "r9"
);
if (restore_rr) {
205,37 → 205,37
}
}
 
void alternate_instruction_tlb_fault(__u64 vector, struct exception_regdump *pstate)
void alternate_instruction_tlb_fault(void)
{
panic("%s\n", __FUNCTION__);
}
 
void alternate_data_tlb_fault(__u64 vector, struct exception_regdump *pstate)
void alternate_data_tlb_fault(void)
{
panic("%s: %P\n", __FUNCTION__, pstate->cr_ifa);
panic("%s\n", __FUNCTION__);
}
 
void data_nested_tlb_fault(__u64 vector, struct exception_regdump *pstate)
void data_nested_tlb_fault(void)
{
panic("%s\n", __FUNCTION__);
}
 
void data_dirty_bit_fault(__u64 vector, struct exception_regdump *pstate)
void data_dirty_bit_fault(void)
{
panic("%s\n", __FUNCTION__);
}
 
void instruction_access_bit_fault(__u64 vector, struct exception_regdump *pstate)
void instruction_access_bit_fault(void)
{
panic("%s\n", __FUNCTION__);
}
 
void data_access_bit_fault(__u64 vector, struct exception_regdump *pstate)
void data_access_bit_fault(void)
{
panic("%s\n", __FUNCTION__);
}
 
void page_not_present(__u64 vector, struct exception_regdump *pstate)
void page_not_present(void)
{
panic("%s\n", __FUNCTION__);
}
/kernel/trunk/arch/ia64/src/mm/frame.c
43,6 → 43,13
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);