Changeset a33c990 in mainline


Ignore:
Timestamp:
2006-05-20T22:51:05Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7ca8b36b
Parents:
125e944
Message:

ppc32 work
decrementer workaround
primitive TLB support

Location:
arch/ppc32/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/src/asm.S

    r125e944 ra33c990  
    135135iret_syscall:
    136136       
     137        # reset decrementer
     138
     139        li r31, 1000
     140        mtdec r31
     141       
    137142        # disable interrupts
    138143       
  • arch/ppc32/src/dummy.s

    r125e944 ra33c990  
    3030
    3131.global asm_delay_loop
    32 .global userspace
    3332.global sys_tls_set
    34 .global tlb_invalidate_asid
    35 .global tlb_invalidate_pages
    36 
    37 tlb_invalidate_asid:
    38         b tlb_invalidate_asid
    39 
    40 tlb_invalidate_pages:
    41         b tlb_invalidate_pages
    4233
    4334sys_tls_set:
  • arch/ppc32/src/exception.S

    r125e944 ra33c990  
    206206.global exc_decrementer
    207207exc_decrementer:
    208         CONTEXT_STORE   
     208        CONTEXT_STORE
    209209
    210210        lis r12, exc_dispatch@ha
  • arch/ppc32/src/mm/page.c

    r125e944 ra33c990  
    182182void pht_refill(bool data, istate_t *istate)
    183183{
    184         asid_t asid;
    185184        __address badvaddr;
    186185        pte_t *pte;
     
    205204                badvaddr = istate->pc;
    206205               
    207         spinlock_lock(&as->lock);
    208         asid = as->asid;
    209         spinlock_unlock(&as->lock);
    210        
    211206        page_table_lock(as, lock);
    212207       
  • arch/ppc32/src/mm/tlb.c

    r125e944 ra33c990  
    3737void tlb_arch_init(void)
    3838{
    39         asm volatile (
    40                 "tlbia\n"
    41         );
     39        tlb_invalidate_all();
    4240}
    4341
     
    4543void tlb_invalidate_all(void)
    4644{
     45        asm volatile (
     46                "tlbia\n"
     47                "tlbsync\n"
     48        );
    4749}
     50
     51
     52/** Invalidate all entries in TLB that belong to specified address space.
     53 *
     54 * @param asid This parameter is ignored as the architecture doesn't support it.
     55 */
     56void tlb_invalidate_asid(asid_t asid)
     57{
     58        tlb_invalidate_all();
     59}
     60
     61/** Invalidate TLB entries for specified page range belonging to specified address space.
     62 *
     63 * @param asid This parameter is ignored as the architecture doesn't support it.
     64 * @param page Address of the first page whose entry is to be invalidated.
     65 * @param cnt Number of entries to invalidate.
     66 */
     67void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt)
     68{
     69        tlb_invalidate_all();
     70}
     71
    4872
    4973
  • arch/ppc32/src/proc/scheduler.c

    r125e944 ra33c990  
    4242{
    4343        pht_init();
     44        tlb_invalidate_all();
    4445        asm volatile (
    4546                "mtsprg0 %0\n"
Note: See TracChangeset for help on using the changeset viewer.