Changeset 93d66ef in mainline


Ignore:
Timestamp:
2009-09-04T18:07:09Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
40240b1
Parents:
5bda2f3e
Message:

GCC 4.4.1 with -O3 uses speculative memory access
add basic support for deffering TLB faults on speculative access
this makes ia64 port work in Ski again (fixes ticket #115)

Location:
kernel/arch/ia64/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/mm/tlb.c

    r5bda2f3e r93d66ef  
    573573void alternate_data_tlb_fault(uint64_t vector, istate_t *istate)
    574574{
     575        if (istate->cr_isr.sp) {
     576                /* Speculative load. Deffer the exception
     577                   until a more clever approach can be used.
     578                   
     579                   Currently if we try to find the mapping
     580                   for the speculative load while in the kernel,
     581                   we might introduce a livelock because of
     582                   the possibly invalid values of the address. */
     583                istate->cr_ipsr.ed = true;
     584                return;
     585        }
     586       
    575587        uintptr_t va = istate->cr_ifa;  /* faulting address */
    576588       
  • kernel/arch/ia64/src/start.S

    r5bda2f3e r93d66ef  
    125125        movl r10 = (KERNEL_TRANSLATION_FW)
    126126        itr.d dtr[r7] = r10
     127       
     128        # Initialize DSR
     129       
     130        movl r10 = (DCR_DP_MASK | DCR_DK_MASK | DCR_DX_MASK | DCR_DR_MASK | DCR_DA_MASK | DCR_DD_MASK | DCR_LC_MASK)
     131        mov r9 = cr.dcr
     132        or r10 = r10, r9
     133        mov cr.dcr = r10
    127134       
    128135        # Initialize PSR
Note: See TracChangeset for help on using the changeset viewer.