Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 937 → Rev 938

/kernel/trunk/arch/sparc64/include/elf.h
26,18 → 26,11
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
#ifndef __ia64_ELF_H__
#define __ia64_ELF_H__
#ifndef __sparc64_ELF_H__
#define __sparc64_ELF_H__
 
#include <elf64.h>
 
#define ELF_MACHINE EM_SPARCV9
#define ELF_DATA_ENCODING ELFDATA2MSB
#define ELF_CLASS ELFCLASS64
 
/*
* Main ELF loader function
*/
#define elf_load(header, as) elf64_load(header, as)
 
#endif
/kernel/trunk/arch/sparc64/Makefile.inc
41,6 → 41,8
CFLAGS += -mcpu=ultrasparc -m64
LFLAGS += -no-check-sections -N
 
DEFS += -D__64_BITS__
 
## Own configuration directives
#
 
/kernel/trunk/arch/ia64/include/elf.h
29,15 → 29,8
#ifndef __ia64_ELF_H__
#define __ia64_ELF_H__
 
#include <elf64.h>
 
#define ELF_MACHINE EM_IA_64
#define ELF_DATA_ENCODING ELFDATA2LSB
#define ELF_CLASS ELFCLASS64
 
/*
* Main ELF loader function
*/
#define elf_load(header, as) elf64_load(header, as)
 
#endif
/kernel/trunk/arch/ia64/Makefile.inc
45,7 → 45,7
LFLAGS += -EL
AFLAGS += -mconstant-gp
 
DEFS += -DINIT_ADDRESS=$(INIT_ADDRESS) -DINIT_SIZE=$(INIT_SIZE)
DEFS += -D__64_BITS__ -DINIT_ADDRESS=$(INIT_ADDRESS) -DINIT_SIZE=$(INIT_SIZE)
 
## Compile with page hash table support.
#
/kernel/trunk/arch/ia64/src/ia64.c
66,7 → 66,7
}
 
/** Enter userspace and never return. */
void userspace(void)
void userspace(__address entry)
{
psr_t psr;
rsc_t rsc;
83,7 → 83,7
rsc.pl = PL_USER;
rsc.mode = 3; /* eager mode */
 
switch_to_userspace(UTEXT_ADDRESS, USTACK_ADDRESS+PAGE_SIZE-1, USTACK_ADDRESS, psr.value, rsc.value);
switch_to_userspace(entry, USTACK_ADDRESS+PAGE_SIZE-1, USTACK_ADDRESS, psr.value, rsc.value);
 
while (1) {
;
/kernel/trunk/arch/ppc32/include/types.h
32,11 → 32,14
#define NULL 0
 
typedef signed char __s8;
typedef signed short __s16;
typedef signed long __s32;
typedef signed long long __s64;
 
typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned long __u32;
typedef long long __u64;
typedef unsigned long long __u64;
 
typedef __u32 __address;
typedef __u32 pfn_t;
/kernel/trunk/arch/ppc32/include/elf.h
26,18 → 26,11
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
#ifndef __ia32_ELF_H__
#define __ia32_ELF_H__
#ifndef __ppc32_ELF_H__
#define __ppc32_ELF_H__
 
#include <elf32.h>
 
#define ELF_MACHINE EM_PPC
#define ELF_DATA_ENCODING ELFDATA2MSB
#define ELF_CLASS ELFCLASS32
 
/*
* Main ELF loader function
*/
#define elf_load(header, as) elf32_load(header, as)
 
#endif
/kernel/trunk/arch/ppc32/Makefile.inc
40,6 → 40,8
 
LFLAGS += -no-check-sections -N
 
DEFS += -D__32_BITS__
 
## Own configuration directives
#
 
/kernel/trunk/arch/amd64/_link.ld.in
54,7 → 54,6
}
#ifdef CONFIG_SMP
_hardcoded_unmapped_size = (unmapped_ktext_end - unmapped_ktext_start) + (unmapped_kdata_end - unmapped_kdata_start);
ap_boot = unmapped_ap_boot - BOOT_OFFSET + AP_BOOT_OFFSET;
ap_gdtr = unmapped_ap_gdtr - BOOT_OFFSET + AP_BOOT_OFFSET;
/kernel/trunk/arch/amd64/include/types.h
32,6 → 32,9
#define NULL 0
 
typedef signed char __s8;
typedef signed short __s16;
typedef signed int __s32;
typedef signed long long __s64;
 
typedef unsigned char __u8;
typedef unsigned short __u16;
/kernel/trunk/arch/amd64/include/elf.h
29,15 → 29,8
#ifndef __amd64_ELF_H__
#define __amd64_ELF_H__
 
#include <elf64.h>
 
#define ELF_MACHINE EM_X86_64
#define ELF_DATA_ENCODING ELFDATA2LSB
#define ELF_CLASS ELFCLASS64
 
/*
* Main ELF loader function
*/
#define elf_load(header, as) elf64_load(header, as)
 
#endif
/kernel/trunk/arch/amd64/Makefile.inc
43,7 → 43,7
endif
 
CFLAGS += -fno-unwind-tables -m64 -mcmodel=kernel -mno-red-zone
DEFS += -D_CPU=${CPU}
DEFS += -D_CPU=${CPU} -D__64_BITS__
 
## Accepted CPUs
#
/kernel/trunk/arch/amd64/src/userspace.c
39,7 → 39,7
* Change CPU protection level to 3, enter userspace.
*
*/
void userspace(void)
void userspace(__address entry)
{
ipl_t ipl;
61,7 → 61,7
"i" (USTACK_ADDRESS+THREAD_STACK_SIZE),
"r" (ipl),
"i" (gdtselector(UTEXT_DES) | PL_USER),
"i" (UTEXT_ADDRESS));
"r" (entry));
/* Unreachable */
for(;;);
/kernel/trunk/arch/mips32/include/elf.h
26,18 → 26,11
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
#ifndef __ia32_ELF_H__
#define __ia32_ELF_H__
#ifndef __mips32_ELF_H__
#define __mips32_ELF_H__
 
#include <elf32.h>
 
#define ELF_MACHINE EM_MIPS
#define ELF_DATA_ENCODING ELFDATA2MSB
#define ELF_CLASS ELFCLASS32
 
/*
* Main ELF loader function
*/
#define elf_load(header, as) elf32_load(header, as)
 
#endif
/kernel/trunk/arch/mips32/Makefile.inc
41,12 → 41,12
endif
 
KERNEL_LOAD_ADDRESS = 0x80100000
INIT_ADDRESS = 0x20000000
INIT_ADDRESS = 0x81000000
INIT_SIZE = 65536
 
CFLAGS += -mno-abicalls -G 0 -fno-zero-initialized-in-bss
 
DEFS += -DMACHINE=${MIPS_MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS} -DINIT_ADDRESS=${INIT_ADDRESS} -DINIT_SIZE=${INIT_SIZE}
DEFS += -D__32_BITS__ -DMACHINE=${MIPS_MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS} -DINIT_ADDRESS=${INIT_ADDRESS} -DINIT_SIZE=${INIT_SIZE}
 
## Compile with hierarchical page tables support.
#
80,7 → 80,7
BFD_NAME=elf32-tradlittlemips
BFD = ecoff-littlemips
CFLAGS += -DARCH_HAS_FPU -mips3
INIT_ADDRESS = 0x1800000
INIT_ADDRESS = 0x81800000
endif
ifeq ($(MIPS_MACHINE),bgxemul)
BFD_NAME=elf32-bigmips
88,7 → 88,7
TARGET = mips-sgi-irix5
TOOLCHAIN_DIR = /usr/local/mips/bin
CFLAGS += -EB -DBIG_ENDIAN -DARCH_HAS_FPU -mips3
INIT_ADDRESS = 0x1800000
INIT_ADDRESS = 0x81800000
endif
ifeq ($(MIPS_MACHINE),simics)
# SIMICS 4kc emulation is broken, although for instructions
/kernel/trunk/arch/mips32/src/mips32.c
118,13 → 118,13
*/
__address supervisor_sp __attribute__ ((section (".text")));
 
void userspace(void)
void userspace(__address entry)
{
/* EXL=1, UM=1, IE=1 */
cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit |
cp0_status_um_bit |
cp0_status_ie_enabled_bit));
cp0_epc_write(UTEXT_ADDRESS);
cp0_epc_write(entry);
userspace_asm(USTACK_ADDRESS+PAGE_SIZE);
while (1)
;
/kernel/trunk/arch/ia32/include/types.h
32,11 → 32,14
#define NULL 0
 
typedef signed char __s8;
typedef signed short __s16;
typedef signed long __s32;
typedef signed long long __s64;
 
typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned long __u32;
typedef long long __u64;
typedef unsigned long long __u64;
 
typedef __u32 __address;
typedef __u32 pfn_t;
/kernel/trunk/arch/ia32/include/elf.h
29,15 → 29,8
#ifndef __ia32_ELF_H__
#define __ia32_ELF_H__
 
#include <elf32.h>
 
#define ELF_MACHINE EM_386
#define ELF_DATA_ENCODING ELFDATA2LSB
#define ELF_CLASS ELFCLASS32
 
/*
* Main ELF loader function
*/
#define elf_load(header, as) elf32_load(header, as)
 
#endif
/kernel/trunk/arch/ia32/Makefile.inc
42,7 → 42,7
IA32_CPU = pentium4
endif
 
DEFS += -D_CPU=${IA32_CPU}
DEFS += -D_CPU=${IA32_CPU} -D__32_BITS__
 
## Accepted CPUs
#
/kernel/trunk/arch/ia32/src/userspace.c
39,7 → 39,7
* Change CPU protection level to 3, enter userspace.
*
*/
void userspace(void)
void userspace(__address entry)
{
ipl_t ipl;
60,7 → 60,7
"pushl %4\n"
"iret"
:
: "i" (selector(UDATA_DES) | PL_USER), "r" (USTACK_ADDRESS+(THREAD_STACK_SIZE)), "r" (ipl), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS)
: "i" (selector(UDATA_DES) | PL_USER), "r" (USTACK_ADDRESS+(THREAD_STACK_SIZE)), "r" (ipl), "i" (selector(UTEXT_DES) | PL_USER), "r" (entry)
: "eax");
/* Unreachable */