Changeset 3f461ecf in mainline
- Timestamp:
- 2011-04-30T13:23:34Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a41577e, f798178
- Parents:
- afdcc60e (diff), 28c4ca7 (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
- Files:
-
- 17 deleted
- 20 edited
- 9 moved
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/Makefile
rafdcc60e r3f461ecf 41 41 CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config 42 42 43 LINKER_SCRIPTS = \ 44 $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld \ 45 $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld 46 43 47 PRE_DEPEND = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) 44 EXTRA_OUTPUT = $(LINKER_SCRIPT )45 EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPT )48 EXTRA_OUTPUT = $(LINKER_SCRIPTS) 49 EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPTS) 46 50 LIBRARY = libc 47 51 … … 133 137 ln -sfn ../$< $@ 134 138 135 $(LI NKER_SCRIPT): $(LINKER_SCRIPT).in139 $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in 136 140 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -E -x c $< | grep -v "^\#" > $@ 141 142 $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in 143 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DLOADER -E -x c $< | grep -v "^\#" > $@ 137 144 138 145 $(COMMON_HEADER_ARCH): $(COMMON_HEADER) -
uspace/lib/c/arch/abs32le/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.c \ 31 arch/$(UARCH)/src/entryjmp.c \ 31 32 arch/$(UARCH)/src/thread_entry.c \ 32 33 arch/$(UARCH)/src/fibril.c \ -
uspace/lib/c/arch/abs32le/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70001000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x1000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .text : { 13 25 *(.text .text.*); -
uspace/lib/c/arch/abs32le/src/entryjmp.c
rafdcc60e r3f461ecf 31 31 32 32 #include <bool.h> 33 #include "arch.h"33 #include <entry_point.h> 34 34 35 void program_run(void *entry_point, void *pcb) 35 /** Jump to program entry point. */ 36 void entry_point_jmp(void *entry_point, void *pcb) 36 37 { 37 38 while (true); -
uspace/lib/c/arch/amd64/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.S \ -
uspace/lib/c/arch/amd64/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 debug PT_NOTE; … … 9 14 10 15 SECTIONS { 16 #ifdef LOADER 17 .interp : { 18 *(.interp); 19 } :interp 20 21 . = 0x70001000 + SIZEOF_HEADERS; 22 #else 11 23 . = 0x1000 + SIZEOF_HEADERS; 12 24 #endif 13 25 .init : { 14 26 *(.init); -
uspace/lib/c/arch/amd64/src/entryjmp.s
rafdcc60e r3f461ecf 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # %rdi contains entry_point 34 34 # %rsi contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 # pcb must be passed in %rdi, use %rdx as a scratch register 39 39 mov %rdi, %rdx -
uspace/lib/c/arch/arm32/Makefile.inc
rafdcc60e r3f461ecf 30 30 ARCH_SOURCES = \ 31 31 arch/$(UARCH)/src/entry.s \ 32 arch/$(UARCH)/src/entryjmp.s \ 32 33 arch/$(UARCH)/src/thread_entry.s \ 33 34 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/arm32/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70001000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x1000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/arm32/src/entryjmp.s
rafdcc60e r3f461ecf 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # r0 contains entry_point 34 34 # r1 contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 # load ras_page address to r2 39 39 ldr r2, =ras_page -
uspace/lib/c/arch/ia32/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.S \ -
uspace/lib/c/arch/ia32/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 debug PT_NOTE; … … 9 14 10 15 SECTIONS { 16 #ifdef LOADER 17 .interp : { 18 *(.interp); 19 } :interp 20 21 . = 0x70001000 + SIZEOF_HEADERS; 22 #else 11 23 . = 0x1000 + SIZEOF_HEADERS; 12 24 #endif 13 25 .init : { 14 26 *(.init); -
uspace/lib/c/arch/ia32/src/entryjmp.s
rafdcc60e r3f461ecf 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 # Jump to aprogram entry point34 program_run:33 # Jump to program entry point 34 entry_point_jmp: 35 35 # Use standard ia32 prologue not to confuse anybody 36 36 push %ebp -
uspace/lib/c/arch/ia64/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.S \ -
uspace/lib/c/arch/ia64/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 5 7 text PT_LOAD FLAGS(5); 8 #else 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x800000000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x4000 + SIZEOF_HEADERS; 11 23 #endif 24 /* 25 * XXX This is just a work around. Problem: .init section does not 26 * have the proper alignment. 27 */ 28 . = ALIGN(., 16); 29 12 30 .init : { 13 31 *(.init); -
uspace/lib/c/arch/ia64/src/entryjmp.s
rafdcc60e r3f461ecf 28 28 29 29 .text 30 .globl program_run30 .globl entry_point_jmp 31 31 32 ## void program_run(void *entry_point, void *pcb);32 ## void entry_point_jmp(void *entry_point, void *pcb); 33 33 # 34 34 # in0 (r32) contains entry_point 35 35 # in1 (r33) contains pcb 36 36 # 37 # Jump to aprogram entry point38 program_run:37 # Jump to program entry point 38 entry_point_jmp: 39 39 # Pass pcb to the entry point in r2 40 40 -
uspace/lib/c/arch/mips32/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/mips32/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70004000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x4000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/mips32/src/entryjmp.s
rafdcc60e r3f461ecf 29 29 .text 30 30 .section .text 31 .global program_run31 .global entry_point_jmp 32 32 .set noreorder 33 33 34 ## void program_run(void *entry_point, void *pcb);34 ## void entry_point_jmp(void *entry_point, void *pcb); 35 35 # 36 36 # $a0 (=$4) contains entry_point 37 37 # $a1 (=$5) contains pcb 38 38 # 39 # Jump to aprogram entry point40 .ent program_run41 program_run:39 # Jump to program entry point 40 .ent entry_point_jmp 41 entry_point_jmp: 42 42 # tmp := entry_point 43 43 move $25, $a0 -
uspace/lib/c/arch/mips32eb/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/ppc32/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/ppc32/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .itnerp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70001000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x1000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/ppc32/src/entryjmp.s
rafdcc60e r3f461ecf 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # %r3 contains entry_point 34 34 # %r4 contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 mtctr %r3 39 39 mr %r6, %r4 # Pass pcb to the entry point in %r6 -
uspace/lib/c/arch/sparc64/Makefile.inc
rafdcc60e r3f461ecf 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/fibril.S \ -
uspace/lib/c/arch/sparc64/_link.ld.in
rafdcc60e r3f461ecf 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70004000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x4000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/sparc64/src/entryjmp.s
rafdcc60e r3f461ecf 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # %o0 contains entry_point 34 34 # %o1 contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 # Pass pcb pointer to entry point in %o1. As it is already 39 39 # there, no action is needed. -
uspace/lib/c/include/entry_point.h
rafdcc60e r3f461ecf 1 1 /* 2 * Copyright (c) 20 08Jiri Svoboda2 * Copyright (c) 2011 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup fs29 /** @addtogroup libc 30 30 * @{ 31 31 */ 32 32 /** @file 33 * @brief34 33 */ 35 34 36 #ifndef L OADER_ARCH_H_37 #define L OADER_ARCH_H_35 #ifndef LIBC_ENTRY_POINT_H_ 36 #define LIBC_ENTRY_POINT_H_ 38 37 39 extern void program_run(void *entry_point, void *pcb); 38 /* Defined in arch/ARCH/src/entryjmp.[c|s] */ 39 void entry_point_jmp(void *, void *); 40 40 41 41 #endif 42 42 43 /** 44 * @} 43 /** @} 45 44 */ -
uspace/srv/loader/Makefile
rafdcc60e r3f461ecf 36 36 -include $(COMMON_MAKEFILE) 37 37 -include $(CONFIG_MAKEFILE) 38 -include arch/$(UARCH)/Makefile.inc39 38 40 LINKER_SCRIPT = arch/$(UARCH)/_link.ld 41 EXTRA_CLEAN = $(LINKER_SCRIPT) 39 LINKER_SCRIPT = $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld 42 40 43 41 EXTRA_CFLAGS = -Iinclude … … 55 53 56 54 include $(USPACE_PREFIX)/Makefile.common 57 58 $(LINKER_SCRIPT): $(LINKER_SCRIPT).in59 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@ -
uspace/srv/loader/elf_load.c
rafdcc60e r3f461ecf 2 2 * Copyright (c) 2006 Sergey Bondari 3 3 * Copyright (c) 2006 Jakub Jermar 4 * Copyright (c) 20 08Jiri Svoboda4 * Copyright (c) 2011 Jiri Svoboda 5 5 * All rights reserved. 6 6 * … … 53 53 #include <smc.h> 54 54 #include <loader/pcb.h> 55 #include <entry_point.h> 55 56 56 57 #include "elf.h" 57 58 #include "elf_load.h" 58 #include "arch.h"59 59 60 60 #define DPRINTF(...) … … 136 136 void elf_run(elf_info_t *info, pcb_t *pcb) 137 137 { 138 program_run(info->entry, pcb);138 entry_point_jmp(info->entry, pcb); 139 139 140 140 /* not reached */
Note:
See TracChangeset
for help on using the changeset viewer.