Changeset 99de22b in mainline for uspace/lib/libc/arch
- Timestamp:
- 2010-01-15T18:30:25Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- eeb643d
- Parents:
- 387416b (diff), 563d6077 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- uspace/lib/libc/arch
- Files:
-
- 7 added
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/arch/amd64/Makefile.inc
r387416b r99de22b 36 36 ARCH_SOURCES += arch/$(UARCH)/src/syscall.S \ 37 37 arch/$(UARCH)/src/fibril.S \ 38 arch/$(UARCH)/src/tls.c 38 arch/$(UARCH)/src/tls.c \ 39 arch/$(UARCH)/src/stacktrace.S 39 40 41 GCC_CFLAGS += -fno-omit-frame-pointer 40 42 LFLAGS += -N 41 43 -
uspace/lib/libc/arch/amd64/include/fibril.h
r387416b r99de22b 44 44 #define SP_DELTA 16 45 45 46 #define context_set(c, _pc, stack, size, ptls) \ 47 do { \ 48 (c)->pc = (sysarg_t) (_pc); \ 49 (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \ 50 (c)->tls = (sysarg_t) (ptls); \ 51 (c)->rbp = 0; \ 52 } while (0) 53 46 54 /* We include only registers that must be preserved 47 55 * during function call -
uspace/lib/libc/arch/amd64/src/entry.s
r387416b r99de22b 38 38 # 39 39 __entry: 40 # 41 # Create the first stack frame. 42 # 43 pushq $0 44 mov %rsp, %rbp 45 40 46 # %rdi was deliberately chosen as the first argument is also in %rdi 41 47 # Pass PCB pointer to __main (no operation) -
uspace/lib/libc/arch/amd64/src/thread_entry.s
r387416b r99de22b 36 36 __thread_entry: 37 37 # 38 # Create the first stack frame. 39 # 40 pushq $0 41 movq %rsp, %rbp 42 43 # 38 44 # RAX contains address of uarg 39 45 # -
uspace/lib/libc/arch/arm32/Makefile.inc
r387416b r99de22b 37 37 arch/$(UARCH)/src/fibril.S \ 38 38 arch/$(UARCH)/src/tls.c \ 39 arch/$(UARCH)/src/eabi.S 39 arch/$(UARCH)/src/eabi.S \ 40 arch/$(UARCH)/src/stacktrace.S 40 41 41 GCC_CFLAGS += -ffixed-r9 -mtp=soft 42 GCC_CFLAGS += -ffixed-r9 -mtp=soft -mapcs-frame -fno-omit-frame-pointer 42 43 LFLAGS += -N $(SOFTINT_PREFIX)/libsoftint.a 43 44 -
uspace/lib/libc/arch/arm32/include/fibril.h
r387416b r99de22b 58 58 * @param ptls Pointer to the TCB. 59 59 */ 60 #define context_set(c, _pc, stack, size, ptls) \ 61 (c)->pc = (sysarg_t) (_pc); \ 62 (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \ 63 (c)->tls = ((sysarg_t)(ptls)) + sizeof(tcb_t) + ARM_TP_OFFSET; 64 60 #define context_set(c, _pc, stack, size, ptls) \ 61 do { \ 62 (c)->pc = (sysarg_t) (_pc); \ 63 (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \ 64 (c)->tls = ((sysarg_t)(ptls)) + sizeof(tcb_t) + ARM_TP_OFFSET; \ 65 (c)->fp = 0; \ 66 } while (0) 65 67 66 68 /** Fibril context. … … 79 81 uint32_t r7; 80 82 uint32_t r8; 81 uint32_t tls; 83 uint32_t tls; /* r9 */ 82 84 uint32_t r10; 83 uint32_t r11;85 uint32_t fp; /* r11 */ 84 86 } context_t; 85 87 -
uspace/lib/libc/arch/arm32/src/entry.s
r387416b r99de22b 43 43 str r2, [r0] 44 44 45 # 46 # Create the first stack frame. 47 # 48 mov fp, #0 49 mov ip, sp 50 push {fp, ip, lr, pc} 51 sub fp, ip, #4 52 45 53 # Pass pcb_ptr to __main as the first argument (in r0) 46 54 mov r0, r1 -
uspace/lib/libc/arch/arm32/src/thread_entry.s
r387416b r99de22b 35 35 # 36 36 __thread_entry: 37 # 38 # Create the first stack frame. 39 # 40 mov fp, #0 41 mov ip, sp 42 push {fp, ip, lr, pc} 43 sub fp, ip, #4 44 37 45 b __thread_main -
uspace/lib/libc/arch/ia32/Makefile.inc
r387416b r99de22b 37 37 arch/$(UARCH)/src/fibril.S \ 38 38 arch/$(UARCH)/src/tls.c \ 39 arch/$(UARCH)/src/setjmp.S 39 arch/$(UARCH)/src/setjmp.S \ 40 arch/$(UARCH)/src/stacktrace.S 40 41 41 42 GCC_CFLAGS += -march=pentium -
uspace/lib/libc/arch/ia32/include/fibril.h
r387416b r99de22b 44 44 #define SP_DELTA (12) 45 45 46 #define context_set(c, _pc, stack, size, ptls) \ 47 do { \ 48 (c)->pc = (sysarg_t) (_pc); \ 49 (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \ 50 (c)->tls = (sysarg_t) (ptls); \ 51 (c)->ebp = 0; \ 52 } while (0) 53 46 54 /* We include only registers that must be preserved 47 55 * during function call -
uspace/lib/libc/arch/ia32/src/entry.s
r387416b r99de22b 55 55 movl $__syscall_fast, (%eax) 56 56 0: 57 # 58 # Create the first stack frame. 59 # 60 pushl $0 61 movl %esp, %ebp 57 62 58 63 # Pass the PCB pointer to __main as the first argument -
uspace/lib/libc/arch/ia32/src/thread_entry.s
r387416b r99de22b 42 42 43 43 # 44 # Create the first stack frame. 45 # 46 pushl $0 47 mov %esp, %ebp 48 49 # 44 50 # EAX contains address of uarg. 45 51 # -
uspace/lib/libc/arch/ia64/Makefile.inc
r387416b r99de22b 36 36 arch/$(UARCH)/src/fibril.S \ 37 37 arch/$(UARCH)/src/tls.c \ 38 arch/$(UARCH)/src/ddi.c 38 arch/$(UARCH)/src/ddi.c \ 39 arch/$(UARCH)/src/stacktrace.S 39 40 40 41 GCC_CFLAGS += -fno-unwind-tables -
uspace/lib/libc/arch/mips32/Makefile.inc
r387416b r99de22b 35 35 ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \ 36 36 arch/$(UARCH)/src/fibril.S \ 37 arch/$(UARCH)/src/tls.c 37 arch/$(UARCH)/src/tls.c \ 38 arch/$(UARCH)/src/stacktrace.S 38 39 39 40 GCC_CFLAGS += -mips3 -
uspace/lib/libc/arch/mips32eb/Makefile.inc
r387416b r99de22b 35 35 ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \ 36 36 arch/$(UARCH)/src/fibril.S \ 37 arch/$(UARCH)/src/tls.c 37 arch/$(UARCH)/src/tls.c \ 38 arch/$(UARCH)/src/stacktrace.S 38 39 39 40 GCC_CFLAGS += -mips3 -
uspace/lib/libc/arch/ppc32/Makefile.inc
r387416b r99de22b 35 35 ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \ 36 36 arch/$(UARCH)/src/fibril.S \ 37 arch/$(UARCH)/src/tls.c 37 arch/$(UARCH)/src/tls.c \ 38 arch/$(UARCH)/src/stacktrace.S 38 39 39 40 GCC_CFLAGS += -mcpu=powerpc -msoft-float -m32 -
uspace/lib/libc/arch/ppc32/src/entry.s
r387416b r99de22b 38 38 # 39 39 __entry: 40 # 41 # Create the first stack frame. 42 # 43 li %r3, 0 44 stw %r3, 0(%r1) 45 stwu %r1, -16(%r1) 46 40 47 # Pass the PCB pointer to __main() as the first argument. 41 48 # The first argument is passed in r3. -
uspace/lib/libc/arch/ppc32/src/thread_entry.s
r387416b r99de22b 35 35 # 36 36 __thread_entry: 37 # 38 # Create the first stack frame. 39 # 40 li %r4, 0 41 stw %r4, 0(%r1) 42 stwu %r1, -16(%r1) 43 37 44 b __thread_main 38 45 -
uspace/lib/libc/arch/sparc64/Makefile.inc
r387416b r99de22b 34 34 35 35 ARCH_SOURCES += arch/$(UARCH)/src/fibril.S \ 36 arch/$(UARCH)/src/tls.c 36 arch/$(UARCH)/src/tls.c \ 37 arch/$(UARCH)/src/stacktrace.S 37 38 38 39 GCC_CFLAGS += -mcpu=ultrasparc -m64 -
uspace/lib/libc/arch/sparc64/include/fibril.h
r387416b r99de22b 46 46 #endif 47 47 48 #define context_set(c, _pc, stack, size, ptls) \ 49 (c)->pc = ((uintptr_t) _pc) - 8; \ 50 (c)->sp = ((uintptr_t) stack) + ALIGN_UP((size), \ 51 STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA); \ 52 (c)->fp = -STACK_BIAS; \ 53 (c)->tp = ptls 48 #define context_set(c, _pc, stack, size, ptls) \ 49 do { \ 50 (c)->pc = ((uintptr_t) _pc) - 8; \ 51 (c)->sp = ((uintptr_t) stack) + ALIGN_UP((size), \ 52 STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA); \ 53 (c)->fp = -STACK_BIAS; \ 54 (c)->tp = ptls; \ 55 } while (0) 54 56 55 57 /* -
uspace/lib/libc/arch/sparc64/src/entry.s
r387416b r99de22b 39 39 # 40 40 __entry: 41 # 42 # Create the first stack frame. 43 # 44 save %sp, -176, %sp 45 flushw 46 add %g0, -0x7ff, %fp 47 41 48 # Pass pcb_ptr as the first argument to __main() 42 mov % o1, %o049 mov %i1, %o0 43 50 sethi %hi(_gp), %l7 44 51 call __main -
uspace/lib/libc/arch/sparc64/src/fibril.S
r387416b r99de22b 35 35 36 36 context_save: 37 # 38 # We rely on the kernel to flush our active register windows to memory 39 # should a thread switch occur. 40 # 37 41 CONTEXT_SAVE_ARCH_CORE %o0 38 42 retl … … 42 46 # 43 47 # Flush all active windows. 44 # This is essential, because CONTEXT_LOAD overwrites 45 # %sp of CWP - 1 with the value written to %fp of CWP. 46 # Flushing all active windows mitigates this problem 47 # as CWP - 1 becomes the overlap window. 48 # 48 # This is essential, because CONTEXT_RESTORE_ARCH_CORE overwrites %sp of 49 # CWP - 1 with the value written to %fp of CWP. Flushing all active 50 # windows mitigates this problem as CWP - 1 becomes the overlap window. 51 # 49 52 flushw 50 53 -
uspace/lib/libc/arch/sparc64/src/thread_entry.s
r387416b r99de22b 35 35 # 36 36 __thread_entry: 37 # 38 # Create the first stack frame. 39 # 40 save %sp, -176, %sp 41 flushw 42 add %g0, -0x7ff, %fp 43 37 44 sethi %hi(_gp), %l7 38 45 call __thread_main ! %o0 contains address of uarg
Note:
See TracChangeset
for help on using the changeset viewer.