Changeset 03427d0 in mainline for arch/ia64/src/proc/scheduler.c


Ignore:
Timestamp:
2006-03-02T17:57:45Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9459255
Parents:
9ad03fe
Message:

ia64 work.
Add code needed for running multiple address spaces and location of kernel stack
after switch from userspace.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/src/proc/scheduler.c

    r9ad03fe r03427d0  
    3434#include <align.h>
    3535
    36 /** Ensure that thread's kernel stack is locked in TLB. */
     36/** Record kernel stack address in ar.k7 and make sure it is mapped in DTR. */
    3737void before_thread_runs_arch(void)
    3838{
     
    4343        if ((__address) THREAD->kstack < base || (__address) THREAD->kstack > base + (1<<KERNEL_PAGE_WIDTH)) {
    4444                /*
    45                  * Kernel stack of this thread is not locked in DTLB.
    46                  * First, make sure it is not mapped already.
    47                  * If not, fill respective tranlsation register.
     45                 * Kernel stack of this thread is not mapped by DTR[TR_KERNEL].
     46                 * Use DTR[TR_KSTACK] to map it.
    4847                 */
    4948                 dtlb_kernel_mapping_insert((__address) THREAD->kstack, KA2PA(THREAD->kstack), true, DTR_KSTACK);
    5049        }
     50       
     51        /*
     52         * Record address of kernel stack to ar.k7
     53         * where it will be found after switch
     54         * from userspace.
     55         */
     56        __asm__ volatile ("mov ar.k7 = %0\n" : : "r" (THREAD->kstack));
    5157}
    5258
Note: See TracChangeset for help on using the changeset viewer.