Subversion Repositories HelenOS-historic

Rev

Go to most recent revision | Hide changed files | Details | Compare with Previous | Blame | RSS feed

Filtering Options

Rev Age Author Path Log message Diff Changes
115 7088 d 20 h jermar /SPARTAN/trunk/ Implement several assembler functions in gcc's __asm__ notation instead of in .s or .S file.
Gain both better speed and size.
 
/SPARTAN/trunk/arch/ia32/include/asm.h
/SPARTAN/trunk/arch/ia32/include/atomic.h
/SPARTAN/trunk/arch/ia32/src/asm.s
/SPARTAN/trunk/arch/ia32/src/atomic.S
/SPARTAN/trunk/arch/ia32/src/interrupt.c
/SPARTAN/trunk/arch/ia32/src/mm/page.c
/SPARTAN/trunk/arch/ia32/src/mm/tlb.c
/SPARTAN/trunk/arch/ia32/src/smp/apic.c
/SPARTAN/trunk/doc/requirements
/SPARTAN/trunk/src/debug/print.c
/SPARTAN/trunk/src/mm/frame.c
/SPARTAN/trunk/src/mm/heap.c
/SPARTAN/trunk/src/mm/vm.c
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/thread.c
/SPARTAN/trunk/src/synch/semaphore.c
111 7092 d 0 h palkovsky /SPARTAN/trunk/ Code cleanup in scheduler.c thread.c - removed unnecessary spinlock.
atomic_inc, atomic_dec moved to arch/atomic.h instead of arch/smp/atomic.h,
advisable to use even in non-smp mode.
Fixed atomic_inc, atomic_dec in mips architecture.
 
/SPARTAN/trunk/arch/ia32/include/atomic.h
/SPARTAN/trunk/arch/ia32/src/atomic.S
/SPARTAN/trunk/arch/mips/include/atomic.h
/SPARTAN/trunk/arch/ia32/include/smp/atomic.h
/SPARTAN/trunk/arch/ia32/src/smp/atomic.S
/SPARTAN/trunk/arch/mips/include/smp/atomic.h
/SPARTAN/trunk/arch/ia32/Makefile.inc
/SPARTAN/trunk/arch/mips/_link.ld
/SPARTAN/trunk/include/proc/scheduler.h
/SPARTAN/trunk/src/Makefile
/SPARTAN/trunk/src/mm/tlb.c
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/thread.c
/SPARTAN/trunk/src/synch/spinlock.c
/SPARTAN/trunk/src/time/clock.c
/SPARTAN/trunk/test/fpu/fpu1/test.c
/SPARTAN/trunk/test/synch/rwlock1/test.c
/SPARTAN/trunk/test/synch/rwlock2/test.c
/SPARTAN/trunk/test/synch/rwlock3/test.c
/SPARTAN/trunk/test/synch/rwlock4/test.c
/SPARTAN/trunk/test/synch/rwlock5/test.c
/SPARTAN/trunk/test/synch/semaphore1/test.c
/SPARTAN/trunk/test/synch/semaphore2/test.c
107 7095 d 5 h decky /SPARTAN/trunk/src/ doxygen-style comments
cleanups
 
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/task.c
/SPARTAN/trunk/src/proc/thread.c
/SPARTAN/trunk/src/smp/ipi.c
/SPARTAN/trunk/src/time/clock.c
/SPARTAN/trunk/src/time/delay.c
/SPARTAN/trunk/src/time/timeout.c
97 7104 d 7 h jermar /SPARTAN/trunk/ Add context_set() macro to support extended behaviour for architectures with more than one stack (e.g. IA-64).
Now there is one generic context_set() defined in include/context.h and one IA-64 specific defined in arch/ia64/include/context.h.
 
/SPARTAN/trunk/arch/ia64/include/context.h
/SPARTAN/trunk/include/context.h
/SPARTAN/trunk/src/main/main.c
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/thread.c
81 7111 d 23 h jermar /SPARTAN/trunk/ Add SP_DELTA macro for each architecture.
On IA-32, this macro represents two doublewords that must be on the stack when switching to a new stack.
On MIPS, there is no need to fix sp when switching to a new stack.
On IA-64, this macro is used to allocate the 16-byte scratch area.

IA-64 work.
Changes in start.S. More changes to come.
Define memcopy().

Janitorial fixes.
Add missing #include <panic.h> to rwlock4/test.c.
Remove wrong use of inline keyword from both declaration and definition of l_apic_id().
 
/SPARTAN/trunk/arch/ia32/include/context.h
/SPARTAN/trunk/arch/ia32/include/smp/apic.h
/SPARTAN/trunk/arch/ia32/src/smp/apic.c
/SPARTAN/trunk/arch/ia64/include/context.h
/SPARTAN/trunk/arch/ia64/src/asm.S
/SPARTAN/trunk/arch/ia64/src/start.S
/SPARTAN/trunk/arch/mips/include/context.h
/SPARTAN/trunk/src/main/main.c
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/thread.c
/SPARTAN/trunk/test/synch/rwlock4/test.c
76 7116 d 23 h jermar /SPARTAN/trunk/ For each architecture, add function/macro FADDR that calculates absolute address of a function referenced by void (* f)(void).
IA-32 and MIPS gcc's use direct addressing (f == FADDR(f)) while IA-64 gcc uses indirect addressing (f != FADDR(f)).

Tweaks in IA-64 Makefile.inc to declare constant gp and main Makefile to consider ASFLAGS when compiling .s targets.
 
/SPARTAN/trunk/arch/ia32/include/faddr.h
/SPARTAN/trunk/arch/ia64/include/faddr.h
/SPARTAN/trunk/arch/mips/include/faddr.h
/SPARTAN/trunk/arch/ia64/Makefile.inc
/SPARTAN/trunk/src/Makefile
/SPARTAN/trunk/src/main/main.c
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/thread.c
73 7117 d 22 h vana /SPARTAN/trunk/ Finished FPU lazy context switching - first version. I have not tested it and there are many things which must be changed when
it runs first time OK.
 
/SPARTAN/trunk/arch/ia32/include/interrupt.h
/SPARTAN/trunk/arch/ia32/src/fpu_context.c
/SPARTAN/trunk/arch/ia32/src/interrupt.c
/SPARTAN/trunk/arch/ia32/src/pm.c
/SPARTAN/trunk/doc/TODO
/SPARTAN/trunk/include/fpu_context.h
/SPARTAN/trunk/include/proc/thread.h
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/thread.c
22 7142 d 1 h jermar /SPARTAN/trunk/ Added before_thread_runs() to cope with TSS of user space tasks.  
/SPARTAN/trunk/arch/ia32/src/proc
/SPARTAN/trunk/arch/ia32/src/proc/scheduler.c
/SPARTAN/trunk/arch/ia32/Makefile.inc
/SPARTAN/trunk/arch/ia32/src/cpu/cpu.c
/SPARTAN/trunk/arch/ia32/src/interrupt.c
/SPARTAN/trunk/arch/ia32/src/pm.c
/SPARTAN/trunk/arch/ia32/src/userspace.c
/SPARTAN/trunk/arch/mips/src/fake.s
/SPARTAN/trunk/include/proc/scheduler.h
/SPARTAN/trunk/src/Makefile.config
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/thread.c
16 7149 d 3 h jermar /SPARTAN/trunk/ Switch from mm-based 'the' mechanism to macro-based 'cpu_private_data[CPU_ID_ARCH]' mechanism.
Added l_apic_id() and some other minor APIC changes.
Move gdtr to K_DATA_START section.
Move K_DATA_START section immediately behind K_TEXT_START section so that real-mode addresses work even with growing size of kernel code.
 
/SPARTAN/trunk/arch/ia32/Makefile.inc
/SPARTAN/trunk/arch/ia32/_link.ld
/SPARTAN/trunk/arch/ia32/boot/boot.ld
/SPARTAN/trunk/arch/ia32/include/cpu.h
/SPARTAN/trunk/arch/ia32/include/smp/apic.h
/SPARTAN/trunk/arch/ia32/src/cpu/cpu.c
/SPARTAN/trunk/arch/ia32/src/pm.c
/SPARTAN/trunk/arch/ia32/src/smp/apic.c
/SPARTAN/trunk/arch/mips/include/cpu.h
/SPARTAN/trunk/include/arch.h
/SPARTAN/trunk/include/cpu.h
/SPARTAN/trunk/include/typedefs.h
/SPARTAN/trunk/src/Makefile.config
/SPARTAN/trunk/src/cpu/cpu.c
/SPARTAN/trunk/src/main/main.c
/SPARTAN/trunk/src/proc/thread.c
15 7150 d 1 h jermar /SPARTAN/trunk/ Introduce macros CPU, THREAD, TASK and use them to replace the->cpu, the->thread, the->task.
Later on, this will make it possible to reference *current* cpu, thread and/or task without the aid from virtual memory.
 
/SPARTAN/trunk/arch/ia32/src/cpu/cpu.c
/SPARTAN/trunk/arch/ia32/src/drivers/i8042.c
/SPARTAN/trunk/arch/ia32/src/drivers/i8254.c
/SPARTAN/trunk/arch/ia32/src/drivers/i8259.c
/SPARTAN/trunk/arch/ia32/src/smp/apic.c
/SPARTAN/trunk/arch/ia32/src/userspace.c
/SPARTAN/trunk/arch/mips/src/cpu/cpu.c
/SPARTAN/trunk/arch/mips/src/exception.c
/SPARTAN/trunk/arch/mips/src/mm/tlb.c
/SPARTAN/trunk/include/arch.h
/SPARTAN/trunk/src/cpu/cpu.c
/SPARTAN/trunk/src/lib/func.c
/SPARTAN/trunk/src/main/kinit.c
/SPARTAN/trunk/src/main/main.c
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/task.c
/SPARTAN/trunk/src/proc/thread.c
/SPARTAN/trunk/src/synch/rwlock.c
/SPARTAN/trunk/src/synch/spinlock.c
/SPARTAN/trunk/src/synch/waitq.c
/SPARTAN/trunk/src/time/clock.c
/SPARTAN/trunk/src/time/delay.c
/SPARTAN/trunk/src/time/timeout.c
/SPARTAN/trunk/test/synch/rwlock2/test.c
/SPARTAN/trunk/test/synch/rwlock3/test.c
/SPARTAN/trunk/test/synch/rwlock4/test.c
/SPARTAN/trunk/test/synch/rwlock5/test.c
/SPARTAN/trunk/test/synch/semaphore1/test.c
/SPARTAN/trunk/test/synch/semaphore2/test.c
10 7193 d 8 h jermar /SPARTAN/trunk/ Be more careful when sending IPI on UP configured as SMP.  
/SPARTAN/trunk/src/smp
/SPARTAN/trunk/src/smp/ipi.c
/SPARTAN/trunk/arch/ia32/src/smp/ipi.c
/SPARTAN/trunk/include/smp/ipi.h
/SPARTAN/trunk/src/Makefile
/SPARTAN/trunk/src/proc/thread.c
8 7195 d 8 h jermar /SPARTAN/trunk/src/proc/ Use ipi_broadcast() instead of l_apic_broadcast_custom_ipi().  
/SPARTAN/trunk/src/proc/thread.c
7 7195 d 8 h jermar /SPARTAN/trunk/ New IPI for waking up idle CPU's halted in scheduler.
Added architecture-independent ipi_broadcast().
 
/SPARTAN/trunk/arch/ia32/src/smp/ipi.c
/SPARTAN/trunk/include/smp
/SPARTAN/trunk/arch/ia32/Makefile.inc
/SPARTAN/trunk/arch/ia32/include/interrupt.h
/SPARTAN/trunk/arch/ia32/src/ia32.c
/SPARTAN/trunk/arch/ia32/src/interrupt.c
/SPARTAN/trunk/arch/ia32/src/mm/tlb.c
/SPARTAN/trunk/src/mm/tlb.c
/SPARTAN/trunk/src/proc/thread.c
1 7200 d 2 h jermar /SPARTAN/ Initial import  
/SPARTAN
/SPARTAN/branches
/SPARTAN/tags
/SPARTAN/trunk
/SPARTAN/trunk/arch
/SPARTAN/trunk/arch/ia32
/SPARTAN/trunk/arch/ia32/Makefile.inc
/SPARTAN/trunk/arch/ia32/_link.ld
/SPARTAN/trunk/arch/ia32/boot
/SPARTAN/trunk/arch/ia32/boot/Makefile
/SPARTAN/trunk/arch/ia32/boot/boot.S
/SPARTAN/trunk/arch/ia32/boot/boot.ld
/SPARTAN/trunk/arch/ia32/include
/SPARTAN/trunk/arch/ia32/include/ap.h
/SPARTAN/trunk/arch/ia32/include/apic.h
/SPARTAN/trunk/arch/ia32/include/asm.h
/SPARTAN/trunk/arch/ia32/include/atomic.h
/SPARTAN/trunk/arch/ia32/include/context.h
/SPARTAN/trunk/arch/ia32/include/cpu.h
/SPARTAN/trunk/arch/ia32/include/cpuid.h
/SPARTAN/trunk/arch/ia32/include/ega.h
/SPARTAN/trunk/arch/ia32/include/i8042.h
/SPARTAN/trunk/arch/ia32/include/i8254.h
/SPARTAN/trunk/arch/ia32/include/i8259.h
/SPARTAN/trunk/arch/ia32/include/interrupt.h
/SPARTAN/trunk/arch/ia32/include/mm
/SPARTAN/trunk/arch/ia32/include/mm/frame.h
/SPARTAN/trunk/arch/ia32/include/mm/page.h
/SPARTAN/trunk/arch/ia32/include/mm/vm.h
/SPARTAN/trunk/arch/ia32/include/mp.h
/SPARTAN/trunk/arch/ia32/include/pm.h
/SPARTAN/trunk/arch/ia32/include/thread.h
/SPARTAN/trunk/arch/ia32/include/types.h
/SPARTAN/trunk/arch/ia32/src
/SPARTAN/trunk/arch/ia32/src/asm.s
/SPARTAN/trunk/arch/ia32/src/boot
/SPARTAN/trunk/arch/ia32/src/boot/boot.S
/SPARTAN/trunk/arch/ia32/src/context.s
/SPARTAN/trunk/arch/ia32/src/cpu
/SPARTAN/trunk/arch/ia32/src/cpu/cpu.c
/SPARTAN/trunk/arch/ia32/src/cpuid.s
/SPARTAN/trunk/arch/ia32/src/debug
/SPARTAN/trunk/arch/ia32/src/debug/panic.s
/SPARTAN/trunk/arch/ia32/src/delay.s
/SPARTAN/trunk/arch/ia32/src/drivers
/SPARTAN/trunk/arch/ia32/src/drivers/ega.c
/SPARTAN/trunk/arch/ia32/src/drivers/i8042.c
/SPARTAN/trunk/arch/ia32/src/drivers/i8254.c
/SPARTAN/trunk/arch/ia32/src/drivers/i8259.c
/SPARTAN/trunk/arch/ia32/src/ia32.c
/SPARTAN/trunk/arch/ia32/src/interrupt.c
/SPARTAN/trunk/arch/ia32/src/mm
/SPARTAN/trunk/arch/ia32/src/mm/frame.c
/SPARTAN/trunk/arch/ia32/src/mm/page.c
/SPARTAN/trunk/arch/ia32/src/mm/tlb.c
/SPARTAN/trunk/arch/ia32/src/pm.c
/SPARTAN/trunk/arch/ia32/src/smp
/SPARTAN/trunk/arch/ia32/src/smp/ap.S
/SPARTAN/trunk/arch/ia32/src/smp/apic.c
/SPARTAN/trunk/arch/ia32/src/smp/atomic.S
/SPARTAN/trunk/arch/ia32/src/smp/mp.c
/SPARTAN/trunk/arch/ia32/src/userspace.c
/SPARTAN/trunk/arch/mips
/SPARTAN/trunk/arch/mips/Makefile.inc
/SPARTAN/trunk/arch/mips/_link.ld
/SPARTAN/trunk/arch/mips/boot
/SPARTAN/trunk/arch/mips/boot/Makefile
/SPARTAN/trunk/arch/mips/boot/boot.s
/SPARTAN/trunk/arch/mips/include
/SPARTAN/trunk/arch/mips/include/asm
/SPARTAN/trunk/arch/mips/include/asm.h
/SPARTAN/trunk/arch/mips/include/asm/macro.h
/SPARTAN/trunk/arch/mips/include/atomic.h
/SPARTAN/trunk/arch/mips/include/cache.h
/SPARTAN/trunk/arch/mips/include/context.h
/SPARTAN/trunk/arch/mips/include/cp0.h
/SPARTAN/trunk/arch/mips/include/cpu.h
/SPARTAN/trunk/arch/mips/include/exception.h
/SPARTAN/trunk/arch/mips/include/interrupt.h
/SPARTAN/trunk/arch/mips/include/mm
/SPARTAN/trunk/arch/mips/include/mm/frame.h
/SPARTAN/trunk/arch/mips/include/mm/page.h
/SPARTAN/trunk/arch/mips/include/mm/tlb.h
/SPARTAN/trunk/arch/mips/include/mm/vm.h
/SPARTAN/trunk/arch/mips/include/thread.h
/SPARTAN/trunk/arch/mips/include/types.h
/SPARTAN/trunk/arch/mips/src
/SPARTAN/trunk/arch/mips/src/asm.s
/SPARTAN/trunk/arch/mips/src/cache.c
/SPARTAN/trunk/arch/mips/src/context.S
/SPARTAN/trunk/arch/mips/src/cpu
/SPARTAN/trunk/arch/mips/src/cpu/cpu.c
/SPARTAN/trunk/arch/mips/src/exception.c
/SPARTAN/trunk/arch/mips/src/fake.s
/SPARTAN/trunk/arch/mips/src/interrupt.c
/SPARTAN/trunk/arch/mips/src/lib
/SPARTAN/trunk/arch/mips/src/lib/memstr.c
/SPARTAN/trunk/arch/mips/src/mips.c
/SPARTAN/trunk/arch/mips/src/mm
/SPARTAN/trunk/arch/mips/src/mm/frame.c
/SPARTAN/trunk/arch/mips/src/mm/page.c
/SPARTAN/trunk/arch/mips/src/mm/tlb.c
/SPARTAN/trunk/arch/mips/src/panic.s
/SPARTAN/trunk/arch/mips/src/putchar.c
/SPARTAN/trunk/arch/mips/src/start.S
/SPARTAN/trunk/arch/powerpc
/SPARTAN/trunk/arch/powerpc/Makefile.inc
/SPARTAN/trunk/arch/powerpc/_link.ld
/SPARTAN/trunk/arch/powerpc/boot
/SPARTAN/trunk/arch/powerpc/boot/Makefile
/SPARTAN/trunk/arch/powerpc/boot/boot.s
/SPARTAN/trunk/arch/powerpc/src
/SPARTAN/trunk/arch/powerpc/src/powerpc.c
/SPARTAN/trunk/doc
/SPARTAN/trunk/doc/TODO
/SPARTAN/trunk/doc/mips
/SPARTAN/trunk/doc/preemption
/SPARTAN/trunk/doc/requirements
/SPARTAN/trunk/doc/synchronization
/SPARTAN/trunk/include
/SPARTAN/trunk/include/arch.h
/SPARTAN/trunk/include/config.h
/SPARTAN/trunk/include/context.h
/SPARTAN/trunk/include/cpu.h
/SPARTAN/trunk/include/func.h
/SPARTAN/trunk/include/list.h
/SPARTAN/trunk/include/main
/SPARTAN/trunk/include/main/kinit.h
/SPARTAN/trunk/include/main/uinit.h
/SPARTAN/trunk/include/memstr.h
/SPARTAN/trunk/include/mm
/SPARTAN/trunk/include/mm/frame.h
/SPARTAN/trunk/include/mm/heap.h
/SPARTAN/trunk/include/mm/page.h
/SPARTAN/trunk/include/mm/tlb.h
/SPARTAN/trunk/include/mm/vm.h
/SPARTAN/trunk/include/panic.h
/SPARTAN/trunk/include/print.h
/SPARTAN/trunk/include/proc
/SPARTAN/trunk/include/proc/scheduler.h
/SPARTAN/trunk/include/proc/task.h
/SPARTAN/trunk/include/proc/thread.h
/SPARTAN/trunk/include/putchar.h
/SPARTAN/trunk/include/synch
/SPARTAN/trunk/include/synch/condvar.h
/SPARTAN/trunk/include/synch/mutex.h
/SPARTAN/trunk/include/synch/rwlock.h
/SPARTAN/trunk/include/synch/semaphore.h
/SPARTAN/trunk/include/synch/spinlock.h
/SPARTAN/trunk/include/synch/synch.h
/SPARTAN/trunk/include/synch/waitq.h
/SPARTAN/trunk/include/test.h
/SPARTAN/trunk/include/time
/SPARTAN/trunk/include/time/clock.h
/SPARTAN/trunk/include/time/delay.h
/SPARTAN/trunk/include/time/timeout.h
/SPARTAN/trunk/include/typedefs.h
/SPARTAN/trunk/include/userspace.h
/SPARTAN/trunk/src
/SPARTAN/trunk/src/Makefile
/SPARTAN/trunk/src/Makefile.config
/SPARTAN/trunk/src/cpu
/SPARTAN/trunk/src/cpu/cpu.c
/SPARTAN/trunk/src/debug
/SPARTAN/trunk/src/debug/print.c
/SPARTAN/trunk/src/lib
/SPARTAN/trunk/src/lib/func.c
/SPARTAN/trunk/src/lib/list.c
/SPARTAN/trunk/src/main
/SPARTAN/trunk/src/main/kinit.c
/SPARTAN/trunk/src/main/main.c
/SPARTAN/trunk/src/main/uinit.c
/SPARTAN/trunk/src/mm
/SPARTAN/trunk/src/mm/frame.c
/SPARTAN/trunk/src/mm/heap.c
/SPARTAN/trunk/src/mm/page.c
/SPARTAN/trunk/src/mm/tlb.c
/SPARTAN/trunk/src/mm/vm.c
/SPARTAN/trunk/src/proc
/SPARTAN/trunk/src/proc/scheduler.c
/SPARTAN/trunk/src/proc/task.c
/SPARTAN/trunk/src/proc/thread.c
/SPARTAN/trunk/src/synch
/SPARTAN/trunk/src/synch/condvar.c
/SPARTAN/trunk/src/synch/mutex.c
/SPARTAN/trunk/src/synch/rwlock.c
/SPARTAN/trunk/src/synch/semaphore.c
/SPARTAN/trunk/src/synch/spinlock.c
/SPARTAN/trunk/src/synch/waitq.c
/SPARTAN/trunk/src/time
/SPARTAN/trunk/src/time/clock.c
/SPARTAN/trunk/src/time/delay.c
/SPARTAN/trunk/src/time/timeout.c
/SPARTAN/trunk/test
/SPARTAN/trunk/test/synch
/SPARTAN/trunk/test/synch/rwlock1
/SPARTAN/trunk/test/synch/rwlock1/test.c
/SPARTAN/trunk/test/synch/rwlock2
/SPARTAN/trunk/test/synch/rwlock2/test.c
/SPARTAN/trunk/test/synch/rwlock3
/SPARTAN/trunk/test/synch/rwlock3/test.c
/SPARTAN/trunk/test/synch/rwlock4
/SPARTAN/trunk/test/synch/rwlock4/test.c
/SPARTAN/trunk/test/synch/rwlock5
/SPARTAN/trunk/test/synch/rwlock5/test.c
/SPARTAN/trunk/test/synch/semaphore1
/SPARTAN/trunk/test/synch/semaphore1/test.c
/SPARTAN/trunk/test/synch/semaphore2
/SPARTAN/trunk/test/synch/semaphore2/test.c