/SPARTAN/trunk/include/fpu_context.h |
---|
0,0 → 1,11 |
#ifndef fpu_context_h |
#define fpu_context_h |
extern void fpu_context_save(void); |
extern void fpu_context_restore(void); |
extern void fpu_lazy_context_save(void); |
extern void fpu_lazy_context_restore(void); |
#endif /*fpu_context_h*/ |
/SPARTAN/trunk/include/proc/scheduler.h |
---|
60,5 → 60,6 |
*/ |
extern void before_thread_runs(void); |
extern void before_thread_runs_arch(void); |
#endif |
/SPARTAN/trunk/include/context.h |
---|
30,8 → 30,12 |
#define __CONTEXT_H__ |
#include <typedefs.h> |
#include "fpu_context.h" |
extern int context_save(context_t *c); |
extern void context_restore(context_t *c) __attribute__ ((noreturn)); |
#endif |
/SPARTAN/trunk/src/proc/scheduler.c |
---|
54,6 → 54,13 |
spinlock_t nrdylock; |
volatile int nrdy; |
void before_thread_runs(void) |
{ |
before_thread_runs_arch(); |
fpu_context_restore(); |
} |
void scheduler_init(void) |
{ |
spinlock_initialize(&nrdylock); |
/SPARTAN/trunk/arch/powerpc/Makefile.inc |
---|
11,4 → 11,5 |
LFLAGS=-M -no-check-sections -T ../arch/mips/_link.ld |
arch_sources= \ |
arch/powerpc.c |
arch/powerpc.c \ |
arch/fpu_context.c |
/SPARTAN/trunk/arch/powerpc/src/fpu_context.c |
---|
0,0 → 1,63 |
/* |
# |
# Copyright (C) 2005 Jakub Vana |
# All rights reserved. |
# |
# Redistribution and use in source and binary forms, with or without |
# modification, are permitted provided that the following conditions |
# are met: |
# |
# - Redistributions of source code must retain the above copyright |
# notice, this list of conditions and the following disclaimer. |
# - Redistributions in binary form must reproduce the above copyright |
# notice, this list of conditions and the following disclaimer in the |
# documentation and/or other materials provided with the distribution. |
# - The name of the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# |
*/ |
#include <fpu_context.h> |
void fpu_context_save(void) |
{ |
} |
void fpu_context_restore() |
{ |
} |
void fpu_lazy_context_save() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxsave (%eax) |
popl %eax |
ret |
*/ |
} |
void fpu_lazy_context_restore() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxrstor (%eax) |
popl %eax |
ret |
*/ |
} |
/SPARTAN/trunk/arch/ia64/Makefile.inc |
---|
18,5 → 18,8 |
arch/start.S \ |
arch/fake.s \ |
arch/putchar.c \ |
arch/context.S \ |
arch/ia64.c |
arch/ia64.c \ |
arch/fpu_context.c |
arch/context.S |
/SPARTAN/trunk/arch/ia64/src/fpu_context.c |
---|
0,0 → 1,63 |
/* |
# |
# Copyright (C) 2005 Jakub Vana |
# All rights reserved. |
# |
# Redistribution and use in source and binary forms, with or without |
# modification, are permitted provided that the following conditions |
# are met: |
# |
# - Redistributions of source code must retain the above copyright |
# notice, this list of conditions and the following disclaimer. |
# - Redistributions in binary form must reproduce the above copyright |
# notice, this list of conditions and the following disclaimer in the |
# documentation and/or other materials provided with the distribution. |
# - The name of the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# |
*/ |
#include <fpu_context.h> |
void fpu_context_save(void) |
{ |
} |
void fpu_context_restore() |
{ |
} |
void fpu_lazy_context_save() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxsave (%eax) |
popl %eax |
ret |
*/ |
} |
void fpu_lazy_context_restore() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxrstor (%eax) |
popl %eax |
ret |
*/ |
} |
/SPARTAN/trunk/arch/ia64/src/fake.s |
---|
31,7 → 31,7 |
.global calibrate_delay_loop |
.global asm_delay_loop |
.global userspace |
.global before_thread_runs |
.global before_thread_runs_arch |
.global arch_late_init |
.global arch_post_mm_init |
.global arch_pre_mm_init |
49,7 → 49,7 |
.global memsetb |
.global panic |
before_thread_runs: |
before_thread_runs_arch: |
userspace: |
calibrate_delay_loop: |
asm_delay_loop: |
/SPARTAN/trunk/arch/mips/Makefile.inc |
---|
30,4 → 30,5 |
arch/cpu/cpu.c \ |
arch/mm/frame.c \ |
arch/mm/page.c \ |
arch/mm/tlb.c |
arch/mm/tlb.c \ |
arch/fpu_context.c |
/SPARTAN/trunk/arch/mips/src/fpu_context.c |
---|
0,0 → 1,63 |
/* |
# |
# Copyright (C) 2005 Jakub Vana |
# All rights reserved. |
# |
# Redistribution and use in source and binary forms, with or without |
# modification, are permitted provided that the following conditions |
# are met: |
# |
# - Redistributions of source code must retain the above copyright |
# notice, this list of conditions and the following disclaimer. |
# - Redistributions in binary form must reproduce the above copyright |
# notice, this list of conditions and the following disclaimer in the |
# documentation and/or other materials provided with the distribution. |
# - The name of the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# |
*/ |
#include <fpu_context.h> |
void fpu_context_save(void) |
{ |
} |
void fpu_context_restore() |
{ |
} |
void fpu_lazy_context_save() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxsave (%eax) |
popl %eax |
ret |
*/ |
} |
void fpu_lazy_context_restore() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxrstor (%eax) |
popl %eax |
ret |
*/ |
} |
/SPARTAN/trunk/arch/mips/src/fake.s |
---|
32,9 → 32,9 |
.global calibrate_delay_loop |
.global asm_delay_loop |
.global userspace |
.global before_thread_runs |
.global _before_thread_runs_arch |
before_thread_runs: |
before_thread_runs_arch: |
userspace: |
calibrate_delay_loop: |
asm_delay_loop: |
/SPARTAN/trunk/arch/ia32/Makefile.inc |
---|
44,6 → 44,7 |
arch/drivers/i8254.c \ |
arch/drivers/i8259.c \ |
arch/drivers/ega.c \ |
arch/boot/boot.S |
arch/boot/boot.S \ |
arch/fpu_context.c |
/SPARTAN/trunk/arch/ia32/src/fpu_context.c |
---|
0,0 → 1,63 |
/* |
# |
# Copyright (C) 2005 Jakub Vana |
# All rights reserved. |
# |
# Redistribution and use in source and binary forms, with or without |
# modification, are permitted provided that the following conditions |
# are met: |
# |
# - Redistributions of source code must retain the above copyright |
# notice, this list of conditions and the following disclaimer. |
# - Redistributions in binary form must reproduce the above copyright |
# notice, this list of conditions and the following disclaimer in the |
# documentation and/or other materials provided with the distribution. |
# - The name of the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# |
*/ |
#include <fpu_context.h> |
void fpu_context_save(void) |
{ |
} |
void fpu_context_restore() |
{ |
} |
void fpu_lazy_context_save() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxsave (%eax) |
popl %eax |
ret |
*/ |
} |
void fpu_lazy_context_restore() |
{ |
/* |
pushl %eax |
mov 8(%esp),%eax |
fxrstor (%eax) |
popl %eax |
ret |
*/ |
} |
/SPARTAN/trunk/arch/ia32/src/context.s |
---|
79,23 → 79,3 |
ret |
fpu_context_save: |
ret |
fpu_context_restore: |
ret |
fpu_lazy_context_save: |
pushl %eax |
mov 8(%esp),%eax |
fxsave (%eax) |
popl %eax |
ret |
fpu_lazy_context_restore: |
pushl %eax |
mov 8(%esp),%eax |
fxrstor (%eax) |
popl %eax |
ret |
/SPARTAN/trunk/arch/ia32/src/proc/scheduler.c |
---|
31,7 → 31,7 |
#include <proc/thread.h> |
#include <arch.h> |
void before_thread_runs(void) |
void before_thread_runs_arch(void) |
{ |
CPU->arch.tss->esp0 = (__address) &THREAD->kstack[THREAD_STACK_SIZE-8]; |
CPU->arch.tss->ss0 = selector(KDATA_DES); |