Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 1945 → Rev 1946

/trunk/kernel/arch/sparc64/include/mm/tlb.h
429,6 → 429,8
 
extern void dtlb_insert_mapping(uintptr_t page, uintptr_t frame, int pagesize, bool locked, bool cacheable);
 
extern void dump_sfsr_and_sfar(void);
 
#endif /* !def __ASM__ */
 
#endif
/trunk/kernel/arch/sparc64/src/trap/exception.c
34,6 → 34,7
*/
 
#include <arch/trap/exception.h>
#include <arch/mm/tlb.h>
#include <arch/interrupt.h>
#include <interrupt.h>
#include <arch/asm.h>
156,6 → 157,7
{
fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
dump_istate(istate);
dump_sfsr_and_sfar();
panic("%s\n", __FUNCTION__);
}
 
/trunk/kernel/arch/sparc64/src/mm/tlb.c
74,6 → 74,12
* Invalidate all non-locked DTLB and ITLB entries.
*/
tlb_invalidate_all();
 
/*
* Clear both SFSRs.
*/
dtlb_sfsr_write(0);
itlb_sfsr_write(0);
}
 
/** Insert privileged mapping into DMMU TLB.
353,6 → 359,21
panic("%s\n", str);
}
 
void dump_sfsr_and_sfar(void)
{
tlb_sfsr_reg_t sfsr;
uintptr_t sfar;
 
sfsr.value = dtlb_sfsr_read();
sfar = dtlb_sfar_read();
printf("DTLB SFSR: asi=%#x, ft=%#x, e=%d, ct=%d, pr=%d, w=%d, ow=%d, fv=%d\n",
sfsr.asi, sfsr.ft, sfsr.e, sfsr.ct, sfsr.pr, sfsr.w, sfsr.ow, sfsr.fv);
printf("DTLB SFAR: address=%p\n", sfar);
dtlb_sfsr_write(0);
}
 
/** Invalidate all unlocked ITLB and DTLB entries. */
void tlb_invalidate_all(void)
{
/trunk/kernel/arch/sparc64/src/drivers/fhc.c
40,12 → 40,12
*/
 
#include <arch/drivers/fhc.h>
#include <arch/trap/interrupt.h>
#include <arch/mm/page.h>
#include <mm/slab.h>
#include <arch/types.h>
#include <typedefs.h>
#include <genarch/ofw/ofw_tree.h>
#include <genarch/kbd/z8530.h>
 
fhc_t *central_fhc = NULL;
 
94,8 → 94,7
{
switch (inr) {
case FHC_UART_INR:
fhc->uart_imap[FHC_UART_ICLR] = 0x0;
fhc->uart_imap[FHC_UART_IMAP] = 0x80000000;
fhc->uart_imap[FHC_UART_IMAP] |= IMAP_V_MASK;
break;
default:
panic("Unexpected INR (%d)\n", inr);
/trunk/kernel/arch/sparc64/src/drivers/pci.c
97,7 → 97,6
 
void pci_sabre_enable_interrupt(pci_t *pci, int inr)
{
pci->reg[PCI_SABRE_ICLR_BASE + (inr & INO_MASK)] = 0;
pci->reg[PCI_SABRE_IMAP_BASE + (inr & INO_MASK)] |= IMAP_V_MASK;
}