Changeset 9c1ecf9 in mainline for arch/ia32/src/proc/scheduler.c


Ignore:
Timestamp:
2006-04-13T18:27:09Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f52e54da
Parents:
0ddeabc
Message:

Move updating I/O Permission bitmap to before_task_runs_arch().

File:
1 edited

Legend:

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

    r0ddeabc r9c1ecf9  
    3737#include <arch/asm.h>
    3838
    39 /** Perform ia32 specific tasks needed before the new task is run. */
     39/** Perform ia32 specific tasks needed before the new task is run.
     40 *
     41 * Interrupts are disabled.
     42 */
    4043void before_task_runs_arch(void)
    41 {
    42 }
    43 
    44 /** Perform ia32 specific tasks needed before the new thread is scheduled.
    45  *
    46  * THREAD is locked and interrupts are disabled.
    47  */
    48 void before_thread_runs_arch(void)
    4944{
    5045        size_t iomap_size;
     
    5247        descriptor_t *gdt_p;
    5348
    54         CPU->arch.tss->esp0 = (__address) &THREAD->kstack[THREAD_STACK_SIZE-SP_DELTA];
    55         CPU->arch.tss->ss0 = selector(KDATA_DES);
    56 
    57         /* Set up TLS in GS register */
    58         set_tls_desc(THREAD->arch.tls);
    59 
    6049        /*
    6150         * Switch the I/O Permission Bitmap, if necessary.
    62          *
    63          * First, copy the I/O Permission Bitmap.
    64          * This needs to be changed so that the
    65          * copying is avoided if the same task
    66          * was already running and the iomap did
    67          * not change.
    6851         */
     52
     53        /* First, copy the I/O Permission Bitmap. */
    6954        spinlock_lock(&TASK->lock);
    7055        iomap_size = TASK->arch.iomap_size;
     
    8166        gdt_setlimit(&gdt_p[TSS_DES], TSS_BASIC_SIZE + iomap_size - 1);
    8267        gdtr_load(&cpugdtr);
     68}
     69
     70/** Perform ia32 specific tasks needed before the new thread is scheduled.
     71 *
     72 * THREAD is locked and interrupts are disabled.
     73 */
     74void before_thread_runs_arch(void)
     75{
     76        CPU->arch.tss->esp0 = (__address) &THREAD->kstack[THREAD_STACK_SIZE-SP_DELTA];
     77        CPU->arch.tss->ss0 = selector(KDATA_DES);
     78
     79        /* Set up TLS in GS register */
     80        set_tls_desc(THREAD->arch.tls);
    8381
    8482#ifdef CONFIG_DEBUG_AS_WATCHPOINT
Note: See TracChangeset for help on using the changeset viewer.