Changeset de6b301 in mainline
- Timestamp:
- 2006-03-12T18:27:33Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f972b89
- Parents:
- a82500ce
- Files:
-
- 1 added
- 4 deleted
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified Makefile ¶
ra82500ce rde6b301 121 121 generic/src/lib/memstr.c \ 122 122 generic/src/lib/sort.c \ 123 generic/src/lib/elf32.c \ 124 generic/src/lib/elf64.c \ 123 generic/src/lib/elf.c \ 125 124 generic/src/debug/print.c \ 126 125 generic/src/debug/symtab.c \ -
TabularUnified arch/amd64/Makefile.inc ¶
ra82500ce rde6b301 44 44 45 45 CFLAGS += -fno-unwind-tables -m64 -mcmodel=kernel -mno-red-zone 46 DEFS += -D_CPU=${CPU} 46 DEFS += -D_CPU=${CPU} -D__64_BITS__ 47 47 48 48 ## Accepted CPUs -
TabularUnified arch/amd64/_link.ld.in ¶
ra82500ce rde6b301 55 55 56 56 #ifdef CONFIG_SMP 57 58 57 _hardcoded_unmapped_size = (unmapped_ktext_end - unmapped_ktext_start) + (unmapped_kdata_end - unmapped_kdata_start); 59 58 ap_boot = unmapped_ap_boot - BOOT_OFFSET + AP_BOOT_OFFSET; -
TabularUnified arch/amd64/include/elf.h ¶
ra82500ce rde6b301 30 30 #define __amd64_ELF_H__ 31 31 32 #include <elf64.h>33 34 32 #define ELF_MACHINE EM_X86_64 35 33 #define ELF_DATA_ENCODING ELFDATA2LSB 36 34 #define ELF_CLASS ELFCLASS64 37 35 38 /*39 * Main ELF loader function40 */41 #define elf_load(header, as) elf64_load(header, as)42 43 36 #endif -
TabularUnified arch/amd64/include/types.h ¶
ra82500ce rde6b301 33 33 34 34 typedef signed char __s8; 35 typedef signed short __s16; 36 typedef signed int __s32; 37 typedef signed long long __s64; 35 38 36 39 typedef unsigned char __u8; -
TabularUnified arch/amd64/src/userspace.c ¶
ra82500ce rde6b301 40 40 * 41 41 */ 42 void userspace( void)42 void userspace(__address entry) 43 43 { 44 44 ipl_t ipl; … … 62 62 "r" (ipl), 63 63 "i" (gdtselector(UTEXT_DES) | PL_USER), 64 " i" (UTEXT_ADDRESS));64 "r" (entry)); 65 65 66 66 /* Unreachable */ -
TabularUnified arch/ia32/Makefile.inc ¶
ra82500ce rde6b301 43 43 endif 44 44 45 DEFS += -D_CPU=${IA32_CPU} 45 DEFS += -D_CPU=${IA32_CPU} -D__32_BITS__ 46 46 47 47 ## Accepted CPUs -
TabularUnified arch/ia32/include/elf.h ¶
ra82500ce rde6b301 30 30 #define __ia32_ELF_H__ 31 31 32 #include <elf32.h>33 34 32 #define ELF_MACHINE EM_386 35 33 #define ELF_DATA_ENCODING ELFDATA2LSB 36 34 #define ELF_CLASS ELFCLASS32 37 35 38 /*39 * Main ELF loader function40 */41 #define elf_load(header, as) elf32_load(header, as)42 43 36 #endif -
TabularUnified arch/ia32/include/types.h ¶
ra82500ce rde6b301 33 33 34 34 typedef signed char __s8; 35 typedef signed short __s16; 36 typedef signed long __s32; 37 typedef signed long long __s64; 35 38 36 39 typedef unsigned char __u8; 37 40 typedef unsigned short __u16; 38 41 typedef unsigned long __u32; 39 typedef long long __u64;42 typedef unsigned long long __u64; 40 43 41 44 typedef __u32 __address; -
TabularUnified arch/ia32/src/userspace.c ¶
ra82500ce rde6b301 40 40 * 41 41 */ 42 void userspace( void)42 void userspace(__address entry) 43 43 { 44 44 ipl_t ipl; … … 61 61 "iret" 62 62 : 63 : "i" (selector(UDATA_DES) | PL_USER), "r" (USTACK_ADDRESS+(THREAD_STACK_SIZE)), "r" (ipl), "i" (selector(UTEXT_DES) | PL_USER), " i" (UTEXT_ADDRESS)63 : "i" (selector(UDATA_DES) | PL_USER), "r" (USTACK_ADDRESS+(THREAD_STACK_SIZE)), "r" (ipl), "i" (selector(UTEXT_DES) | PL_USER), "r" (entry) 64 64 : "eax"); 65 65 -
TabularUnified arch/ia64/Makefile.inc ¶
ra82500ce rde6b301 46 46 AFLAGS += -mconstant-gp 47 47 48 DEFS += -D INIT_ADDRESS=$(INIT_ADDRESS) -DINIT_SIZE=$(INIT_SIZE)48 DEFS += -D__64_BITS__ -DINIT_ADDRESS=$(INIT_ADDRESS) -DINIT_SIZE=$(INIT_SIZE) 49 49 50 50 ## Compile with page hash table support. -
TabularUnified arch/ia64/include/elf.h ¶
ra82500ce rde6b301 30 30 #define __ia64_ELF_H__ 31 31 32 #include <elf64.h>33 34 32 #define ELF_MACHINE EM_IA_64 35 33 #define ELF_DATA_ENCODING ELFDATA2LSB 36 34 #define ELF_CLASS ELFCLASS64 37 35 38 /*39 * Main ELF loader function40 */41 #define elf_load(header, as) elf64_load(header, as)42 43 36 #endif -
TabularUnified arch/ia64/src/ia64.c ¶
ra82500ce rde6b301 67 67 68 68 /** Enter userspace and never return. */ 69 void userspace( void)69 void userspace(__address entry) 70 70 { 71 71 psr_t psr; … … 84 84 rsc.mode = 3; /* eager mode */ 85 85 86 switch_to_userspace( UTEXT_ADDRESS, USTACK_ADDRESS+PAGE_SIZE-1, USTACK_ADDRESS, psr.value, rsc.value);86 switch_to_userspace(entry, USTACK_ADDRESS+PAGE_SIZE-1, USTACK_ADDRESS, psr.value, rsc.value); 87 87 88 88 while (1) { -
TabularUnified arch/mips32/Makefile.inc ¶
ra82500ce rde6b301 42 42 43 43 KERNEL_LOAD_ADDRESS = 0x80100000 44 INIT_ADDRESS = 0x 2000000044 INIT_ADDRESS = 0x81000000 45 45 INIT_SIZE = 65536 46 46 47 47 CFLAGS += -mno-abicalls -G 0 -fno-zero-initialized-in-bss 48 48 49 DEFS += -D MACHINE=${MIPS_MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS} -DINIT_ADDRESS=${INIT_ADDRESS} -DINIT_SIZE=${INIT_SIZE}49 DEFS += -D__32_BITS__ -DMACHINE=${MIPS_MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS} -DINIT_ADDRESS=${INIT_ADDRESS} -DINIT_SIZE=${INIT_SIZE} 50 50 51 51 ## Compile with hierarchical page tables support. … … 81 81 BFD = ecoff-littlemips 82 82 CFLAGS += -DARCH_HAS_FPU -mips3 83 INIT_ADDRESS = 0x 180000083 INIT_ADDRESS = 0x81800000 84 84 endif 85 85 ifeq ($(MIPS_MACHINE),bgxemul) … … 89 89 TOOLCHAIN_DIR = /usr/local/mips/bin 90 90 CFLAGS += -EB -DBIG_ENDIAN -DARCH_HAS_FPU -mips3 91 INIT_ADDRESS = 0x 180000091 INIT_ADDRESS = 0x81800000 92 92 endif 93 93 ifeq ($(MIPS_MACHINE),simics) -
TabularUnified arch/mips32/include/elf.h ¶
ra82500ce rde6b301 27 27 */ 28 28 29 #ifndef __ia32_ELF_H__ 30 #define __ia32_ELF_H__ 31 32 #include <elf32.h> 29 #ifndef __mips32_ELF_H__ 30 #define __mips32_ELF_H__ 33 31 34 32 #define ELF_MACHINE EM_MIPS … … 36 34 #define ELF_CLASS ELFCLASS32 37 35 38 /*39 * Main ELF loader function40 */41 #define elf_load(header, as) elf32_load(header, as)42 43 36 #endif -
TabularUnified arch/mips32/src/mips32.c ¶
ra82500ce rde6b301 119 119 __address supervisor_sp __attribute__ ((section (".text"))); 120 120 121 void userspace( void)121 void userspace(__address entry) 122 122 { 123 123 /* EXL=1, UM=1, IE=1 */ … … 125 125 cp0_status_um_bit | 126 126 cp0_status_ie_enabled_bit)); 127 cp0_epc_write( UTEXT_ADDRESS);127 cp0_epc_write(entry); 128 128 userspace_asm(USTACK_ADDRESS+PAGE_SIZE); 129 129 while (1) -
TabularUnified arch/ppc32/Makefile.inc ¶
ra82500ce rde6b301 41 41 LFLAGS += -no-check-sections -N 42 42 43 DEFS += -D__32_BITS__ 44 43 45 ## Own configuration directives 44 46 # -
TabularUnified arch/ppc32/include/elf.h ¶
ra82500ce rde6b301 27 27 */ 28 28 29 #ifndef __ia32_ELF_H__ 30 #define __ia32_ELF_H__ 31 32 #include <elf32.h> 29 #ifndef __ppc32_ELF_H__ 30 #define __ppc32_ELF_H__ 33 31 34 32 #define ELF_MACHINE EM_PPC … … 36 34 #define ELF_CLASS ELFCLASS32 37 35 38 /*39 * Main ELF loader function40 */41 #define elf_load(header, as) elf32_load(header, as)42 43 36 #endif -
TabularUnified arch/ppc32/include/types.h ¶
ra82500ce rde6b301 33 33 34 34 typedef signed char __s8; 35 typedef signed short __s16; 36 typedef signed long __s32; 37 typedef signed long long __s64; 35 38 36 39 typedef unsigned char __u8; 37 40 typedef unsigned short __u16; 38 41 typedef unsigned long __u32; 39 typedef long long __u64;42 typedef unsigned long long __u64; 40 43 41 44 typedef __u32 __address; -
TabularUnified arch/sparc64/Makefile.inc ¶
ra82500ce rde6b301 41 41 CFLAGS += -mcpu=ultrasparc -m64 42 42 LFLAGS += -no-check-sections -N 43 44 DEFS += -D__64_BITS__ 43 45 44 46 ## Own configuration directives -
TabularUnified arch/sparc64/include/elf.h ¶
ra82500ce rde6b301 27 27 */ 28 28 29 #ifndef __ia64_ELF_H__ 30 #define __ia64_ELF_H__ 31 32 #include <elf64.h> 29 #ifndef __sparc64_ELF_H__ 30 #define __sparc64_ELF_H__ 33 31 34 32 #define ELF_MACHINE EM_SPARCV9 … … 36 34 #define ELF_CLASS ELFCLASS64 37 35 38 /*39 * Main ELF loader function40 */41 #define elf_load(header, as) elf64_load(header, as)42 43 36 #endif -
TabularUnified contrib/conf/msim.conf ¶
ra82500ce rde6b301 8 8 add rwm mainmem 0x00100000 16M load "kernel/kernel.bin" 9 9 add rom startmem 0x1fc00000 1k load "kernel/load.bin" 10 add rwm init 0x 20000000 1M load "uspace/init/init"10 add rwm init 0x01000000 1M load "uspace/init/init" 11 11 12 12 add dprinter printer 0x10000000 -
TabularUnified contrib/conf/ski.conf ¶
ra82500ce rde6b301 1 1 load HelenOS/boot/kernel.bin 2 romload HelenOS/ boot/init 0x4000002 romload HelenOS/uspace/init/init 0x400000 -
TabularUnified contrib/conf/spmips.conf ¶
ra82500ce rde6b301 23 23 (0x180003ff, tty0, 0, 7, 1), 24 24 (0x1c000000, hfs0, 0, 0, 16), 25 (0x 20000000, initmem0, 0, 0, 0x20000))25 (0x01000000, initmem0, 0, 0, 0x20000)) 26 26 } 27 27 -
TabularUnified generic/include/elf.h ¶
ra82500ce rde6b301 31 31 32 32 #include <arch/elf.h> 33 33 #include <arch/types.h> 34 #include <mm/as.h> 35 36 /** 37 * current ELF version 38 */ 39 #define EV_CURRENT 1 40 41 /** 42 * ELF types 43 */ 44 #define ET_NONE 0 /* No type */ 45 #define ET_REL 1 /* Relocatable file */ 46 #define ET_EXEC 2 /* Executable */ 47 #define ET_DYN 3 /* Shared object */ 48 #define ET_CORE 4 /* Core */ 49 #define ET_LOPROC 0xff00 /* Processor specific */ 50 #define ET_HIPROC 0xffff /* Processor specific */ 51 52 /** 53 * ELF machine types 54 */ 55 #define EM_NO 0 /* No machine */ 56 #define EM_SPARC 2 /* SPARC */ 57 #define EM_386 3 /* i386 */ 58 #define EM_MIPS 8 /* MIPS RS3000 */ 59 #define EM_MIPS_RS3_LE 10 /* MIPS RS3000 LE */ 60 #define EM_PPC 20 /* PPC32 */ 61 #define EM_PPC64 21 /* PPC64 */ 62 #define EM_SPARCV9 43 /* SPARC64 */ 63 #define EM_IA_64 50 /* IA-64 */ 64 #define EM_X86_64 62 /* AMD64/EMT64 */ 65 66 /** 67 * ELF identification indexes 68 */ 69 #define EI_MAG0 0 70 #define EI_MAG1 1 71 #define EI_MAG2 2 72 #define EI_MAG3 3 73 #define EI_CLASS 4 /* File class */ 74 #define EI_DATA 5 /* Data encoding */ 75 #define EI_VERSION 6 /* File version */ 76 #define EI_OSABI 7 77 #define EI_ABIVERSION 8 78 #define EI_PAD 9 /* Start of padding bytes */ 79 #define EI_NIDENT 16 /* ELF identification table size */ 80 81 /** 82 * ELF magic number 83 */ 84 #define ELFMAG0 0x7f 85 #define ELFMAG1 'E' 86 #define ELFMAG2 'L' 87 #define ELFMAG3 'F' 88 89 /** 90 * ELF file classes 91 */ 92 #define ELFCLASSNONE 0 93 #define ELFCLASS32 1 94 #define ELFCLASS64 2 95 96 /** 97 * ELF data encoding types 98 */ 99 #define ELFDATANONE 0 100 #define ELFDATA2LSB 1 /* Least significant byte first (little endian) */ 101 #define ELFDATA2MSB 2 /* Most signigicant byte first (big endian) */ 102 103 /** 104 * ELF error return codes 105 */ 106 #define EE_OK 0 /* No error */ 107 #define EE_INVALID 1 /* Invalid ELF image */ 108 #define EE_MEMORY 2 /* Cannot allocate address space */ 109 #define EE_INCOMPATIBLE 3 /* ELF image is not compatible with current architecture */ 110 #define EE_UNSUPPORTED 4 /* Non-supported ELF (e.g. dynamic ELFs) */ 111 #define EE_IRRECOVERABLE 5 112 113 /** 114 * ELF section types 115 */ 116 #define SHT_NULL 0 117 #define SHT_PROGBITS 1 118 #define SHT_SYMTAB 2 119 #define SHT_STRTAB 3 120 #define SHT_RELA 4 121 #define SHT_HASH 5 122 #define SHT_DYNAMIC 6 123 #define SHT_NOTE 7 124 #define SHT_NOBITS 8 125 #define SHT_REL 9 126 #define SHT_SHLIB 10 127 #define SHT_DYNSYM 11 128 #define SHT_LOOS 0x60000000 129 #define SHT_HIOS 0x6fffffff 130 #define SHT_LOPROC 0x70000000 131 #define SHT_HIPROC 0x7fffffff 132 #define SHT_LOUSER 0x80000000 133 #define SHT_HIUSER 0xffffffff 134 135 /** 136 * ELF section flags 137 */ 138 #define SHF_WRITE 0x1 139 #define SHF_ALLOC 0x2 140 #define SHF_EXECINSTR 0x4 141 #define SHF_MASKPROC 0xf0000000 142 143 /** 144 * Symbol binding 145 */ 146 #define STB_LOCAL 0 147 #define STB_GLOBAL 1 148 #define STB_WEAK 2 149 #define STB_LOPROC 13 150 #define STB_HIPROC 15 151 152 /** 153 * Symbol types 154 */ 155 #define STT_NOTYPE 0 156 #define STT_OBJECT 1 157 #define STT_FUNC 2 158 #define STT_SECTION 3 159 #define STT_FILE 4 160 #define STT_LOPROC 13 161 #define STT_HIPROC 15 162 163 /** 164 * Program segment types 165 */ 166 #define PT_NULL 0 167 #define PT_LOAD 1 168 #define PT_DYNAMIC 2 169 #define PT_INTERP 3 170 #define PT_NOTE 4 171 #define PT_SHLIB 5 172 #define PT_PHDR 6 173 #define PT_LOPROC 0x70000000 174 #define PT_HIPROC 0x7fffffff 175 176 /** 177 * Program segment attributes. 178 */ 179 #define PF_X 1 180 #define PF_W 2 181 #define PF_R 4 182 183 /** 184 * ELF data types 185 * 186 * These types are found to be identical in both 32-bit and 64-bit 187 * ELF object file specifications. They are the only types used 188 * in ELF header. 189 */ 190 typedef __u64 elf_xword; 191 typedef __s64 elf_sxword; 192 typedef __u32 elf_word; 193 typedef __s32 elf_sword; 194 typedef __u16 elf_half; 195 196 /** 197 * 32-bit ELF data types. 198 * 199 * These types are specific for 32-bit format. 200 */ 201 typedef __u32 elf32_addr; 202 typedef __u32 elf32_off; 203 204 /** 205 * 64-bit ELF data types. 206 * 207 * These types are specific for 64-bit format. 208 */ 209 typedef __u64 elf64_addr; 210 typedef __u64 elf64_off; 211 212 /** ELF header */ 213 struct elf32_header { 214 __u8 e_ident[EI_NIDENT]; 215 elf_half e_type; 216 elf_half e_machine; 217 elf_word e_version; 218 elf32_addr e_entry; 219 elf32_off e_phoff; 220 elf32_off e_shoff; 221 elf_word e_flags; 222 elf_half e_ehsize; 223 elf_half e_phentsize; 224 elf_half e_phnum; 225 elf_half e_shentsize; 226 elf_half e_shnum; 227 elf_half e_shstrndx; 228 }; 229 struct elf64_header { 230 __u8 e_ident[EI_NIDENT]; 231 elf_half e_type; 232 elf_half e_machine; 233 elf_word e_version; 234 elf64_addr e_entry; 235 elf64_off e_phoff; 236 elf64_off e_shoff; 237 elf_word e_flags; 238 elf_half e_ehsize; 239 elf_half e_phentsize; 240 elf_half e_phnum; 241 elf_half e_shentsize; 242 elf_half e_shnum; 243 elf_half e_shstrndx; 244 }; 245 246 /* 247 * ELF section header 248 */ 249 struct elf32_section_header { 250 elf_word sh_name; 251 elf_word sh_type; 252 elf_word sh_flags; 253 elf32_addr sh_addr; 254 elf32_off sh_offset; 255 elf_word sh_size; 256 elf_word sh_link; 257 elf_word sh_info; 258 elf_word sh_addralign; 259 elf_word sh_entsize; 260 }; 261 struct elf64_section_header { 262 elf_word sh_name; 263 elf_word sh_type; 264 elf_xword sh_flags; 265 elf64_addr sh_addr; 266 elf64_off sh_offset; 267 elf_xword sh_size; 268 elf_word sh_link; 269 elf_word sh_info; 270 elf_xword sh_addralign; 271 elf_xword sh_entsize; 272 }; 273 274 /* 275 * ELF symbol table entry 276 */ 277 struct elf32_symbol { 278 elf_word st_name; 279 elf32_addr st_value; 280 elf_word st_size; 281 __u8 st_info; 282 __u8 st_other; 283 elf_half st_shndx; 284 }; 285 struct elf64_symbol { 286 elf_word st_name; 287 __u8 st_info; 288 __u8 st_other; 289 elf_half st_shndx; 290 elf64_addr st_value; 291 elf_xword st_size; 292 }; 293 294 /* 295 * ELF program header entry 296 */ 297 struct elf32_ph_entry { 298 elf_word p_type; 299 elf32_off p_offset; 300 elf32_addr p_vaddr; 301 elf32_addr p_paddr; 302 elf_word p_filesz; 303 elf_word p_memsz; 304 elf_word p_flags; 305 elf_word p_align; 306 }; 307 struct elf64_ph_entry { 308 elf_word p_type; 309 elf_word p_flags; 310 elf64_off p_offset; 311 elf64_addr p_vaddr; 312 elf64_addr p_paddr; 313 elf_xword p_filesz; 314 elf_xword p_memsz; 315 elf_xword p_align; 316 }; 317 318 #ifdef __32_BITS__ 319 typedef struct elf32_header elf_header_t; 320 typedef struct elf32_section_header elf_section_header_t; 321 typedef struct elf32_symbol elf_symbol_t; 322 typedef struct elf32_ph_entry elf_ph_entry_t; 34 323 #endif 324 #ifdef __64_BITS__ 325 typedef struct elf64_header elf_header_t; 326 typedef struct elf64_section_header elf_section_header_t; 327 typedef struct elf64_symbol elf_symbol_t; 328 typedef struct elf64_ph_entry elf_ph_entry_t; 329 #endif 330 331 extern int elf_load(elf_header_t *header, as_t * as); 332 extern char *elf_error(int rc); 333 334 #endif -
TabularUnified generic/include/userspace.h ¶
ra82500ce rde6b301 30 30 #define __USERSPACE_H__ 31 31 32 extern void userspace(void) __attribute__ ((noreturn)); /**< Switch to user-space (CPU user priviledge level) */ 32 #include <arch/types.h> 33 34 extern void userspace(__address entry) __attribute__ ((noreturn)); /**< Switch to user-space (CPU user priviledge level) */ 33 35 34 36 #endif -
TabularUnified generic/src/main/kinit.c ¶
ra82500ce rde6b301 47 47 #include <interrupt.h> 48 48 #include <console/kconsole.h> 49 #include <elf.h> 49 50 50 51 #ifdef CONFIG_SMP … … 72 73 as_t *as; 73 74 as_area_t *a; 74 __address frame; 75 count_t frames; 76 int i; 75 int rc; 77 76 task_t *u; 78 77 … … 151 150 if (!as) 152 151 panic("as_create\n"); 153 u = task_create(as); 154 if (!u) 155 panic("task_create\n"); 156 t = thread_create(uinit, NULL, u, THREAD_USER_STACK); 157 if (!t) 158 panic("thread_create\n"); 152 153 rc = elf_load((elf_header_t *) config.init_addr, as); 154 if (rc != EE_OK) { 155 printf("elf_load failed: %s\n", elf_error(rc)); 156 } else { 157 u = task_create(as); 158 if (!u) 159 panic("task_create\n"); 160 t = thread_create(uinit, (void *)((elf_header_t *) config.init_addr)->e_entry, u, THREAD_USER_STACK); 161 if (!t) 162 panic("thread_create\n"); 159 163 160 /* 161 * Create the text as_area and initialize its mapping. 162 */ 163 164 frame = config.init_addr; 165 if (IS_KA(frame)) 166 frame = KA2PA(frame); 164 /* 165 * Create the data as_area. 166 */ 167 a = as_area_create(as, AS_AREA_STACK, 1, USTACK_ADDRESS); 168 if (!a) 169 panic("as_area_create: stack\n"); 167 170 168 frames = SIZE2FRAMES(config.init_size); 169 170 a = as_area_create(as, AS_AREA_TEXT, frames, UTEXT_ADDRESS); 171 if (!a) 172 panic("as_area_create: text\n"); 173 174 for (i = 0; i < frames; i++) 175 as_set_mapping(as, UTEXT_ADDRESS + i * PAGE_SIZE, frame + i * FRAME_SIZE); 176 177 /* 178 * Create the data as_area. 179 */ 180 a = as_area_create(as, AS_AREA_STACK, 1, USTACK_ADDRESS); 181 if (!a) 182 panic("as_area_create: stack\n"); 183 184 thread_ready(t); 171 thread_ready(t); 172 } 185 173 } 186 174 -
TabularUnified generic/src/main/uinit.c ¶
ra82500ce rde6b301 33 33 #include <print.h> 34 34 35 36 35 void uinit(void *arg) 37 36 { 38 37 printf("USER task, uinit thread: kernel mode\n"); 39 userspace( );38 userspace((__address)(arg)); 40 39 }
Note:
See TracChangeset
for help on using the changeset viewer.