Changeset 9c1ecf9 in mainline for arch/amd64/src/proc/scheduler.c
- Timestamp:
- 2006-04-13T18:27:09Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f52e54da
- Parents:
- 0ddeabc
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/src/proc/scheduler.c
r0ddeabc r9c1ecf9 38 38 #include <arch/pm.h> 39 39 40 /** Perform amd64 specific tasks needed before the new task is run. */ 40 /** Perform amd64 specific tasks needed before the new task is run. 41 * 42 * Interrupts are disabled. 43 */ 41 44 void before_task_runs_arch(void) 42 {43 }44 45 /** Perform amd64 specific tasks needed before the new thread is scheduled. */46 void before_thread_runs_arch(void)47 45 { 48 46 size_t iomap_size; … … 50 48 descriptor_t *gdt_p; 51 49 52 CPU->arch.tss->rsp0 = (__address) &THREAD->kstack[THREAD_STACK_SIZE-SP_DELTA];53 54 /* Syscall support - write address of thread stack pointer to55 * hidden part of gs */56 swapgs();57 write_msr(AMD_MSR_GS, (__u64)&THREAD->kstack);58 swapgs();59 60 /* TLS support - set FS to thread local storage */61 write_msr(AMD_MSR_FS, THREAD->arch.tls);62 63 50 /* 64 51 * Switch the I/O Permission Bitmap, if necessary. 65 *66 * First, copy the I/O Permission Bitmap.67 * This needs to be changed so that the68 * copying is avoided if the same task69 * was already running and the iomap did70 * not change.71 52 */ 53 54 /* First, copy the I/O Permission Bitmap. */ 72 55 spinlock_lock(&TASK->lock); 73 56 iomap_size = TASK->arch.iomap_size; … … 84 67 gdt_tss_setlimit(&gdt_p[TSS_DES], TSS_BASIC_SIZE + iomap_size - 1); 85 68 gdtr_load(&cpugdtr); 69 } 70 71 /** Perform amd64 specific tasks needed before the new thread is scheduled. */ 72 void before_thread_runs_arch(void) 73 { 74 CPU->arch.tss->rsp0 = (__address) &THREAD->kstack[THREAD_STACK_SIZE-SP_DELTA]; 75 76 /* Syscall support - write address of thread stack pointer to 77 * hidden part of gs */ 78 swapgs(); 79 write_msr(AMD_MSR_GS, (__u64)&THREAD->kstack); 80 swapgs(); 81 82 /* TLS support - set FS to thread local storage */ 83 write_msr(AMD_MSR_FS, THREAD->arch.tls); 86 84 87 85 #ifdef CONFIG_DEBUG_AS_WATCHPOINT
Note:
See TracChangeset
for help on using the changeset viewer.