PERFORCE change 106362 for review
Suleiman Souhlal
ssouhlal at FreeBSD.org
Tue Sep 19 14:25:29 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=106362
Change 106362 by ssouhlal at ssouhlal-maho on 2006/09/19 21:24:24
Add ELF sysvec/brands for mips.
Affected files ...
.. //depot/projects/mips2/src/sys/mips/include/md_var.h#3 edit
.. //depot/projects/mips2/src/sys/mips/mips/elf_machdep.c#3 edit
.. //depot/projects/mips2/src/sys/mips/mips/locore.S#14 edit
.. //depot/projects/mips2/src/sys/mips/mips/machdep.c#20 edit
Differences ...
==== //depot/projects/mips2/src/sys/mips/include/md_var.h#3 (text+ko) ====
@@ -28,6 +28,9 @@
#ifndef _MACHINE_MD_VAR_H_
#define _MACHINE_MD_VAR_H_
+extern char sigcode[];
+extern int szsigcode;
+
extern vm_offset_t kstack0;
extern vm_paddr_t kstack0_phys;
==== //depot/projects/mips2/src/sys/mips/mips/elf_machdep.c#3 (text+ko) ====
@@ -26,10 +26,82 @@
*/
#include <sys/param.h>
+#include <sys/kernel.h>
#include <sys/systm.h>
+#include <sys/exec.h>
+#include <sys/imgact.h>
#include <sys/linker.h>
-#include <sys/imgact.h>
+#include <sys/sysent.h>
#include <sys/imgact_elf.h>
+#include <sys/syscall.h>
+#include <sys/signalvar.h>
+
+#include <vm/vm.h>
+#include <vm/pmap.h>
+#include <vm/vm_param.h>
+
+#include <machine/elf.h>
+#include <machine/md_var.h>
+
+struct sysentvec elf32_freebsd_sysvec = {
+ SYS_MAXSYSCALL,
+ sysent,
+ 0,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ __elfN(freebsd_fixup),
+ sendsig,
+ sigcode,
+ &szsigcode,
+ NULL,
+ "FreeBSD ELF32",
+ __elfN(coredump),
+ NULL,
+ MINSIGSTKSZ,
+ PAGE_SIZE,
+ VM_MIN_ADDRESS,
+ VM_MAXUSER_ADDRESS,
+ USRSTACK,
+ PS_STRINGS,
+ VM_PROT_ALL,
+ exec_copyout_strings,
+ exec_setregs,
+ NULL
+};
+
+static Elf32_Brandinfo freebsd_brand_info = {
+ ELFOSABI_FREEBSD,
+ EM_MIPS,
+ "FreeBSD",
+ NULL,
+ "/libexec/ld-elf.so.1",
+ &elf32_freebsd_sysvec,
+ NULL,
+ 0,
+ };
+
+SYSINIT(elf32, SI_SUB_EXEC, SI_ORDER_ANY,
+ (sysinit_cfunc_t) elf32_insert_brand_entry,
+ &freebsd_brand_info);
+
+static Elf32_Brandinfo freebsd_brand_oinfo = {
+ ELFOSABI_FREEBSD,
+ EM_MIPS,
+ "FreeBSD",
+ NULL,
+ "/usr/libexec/ld-elf.so.1",
+ &elf32_freebsd_sysvec,
+ NULL,
+ 0,
+ };
+
+SYSINIT(oelf32, SI_SUB_EXEC, SI_ORDER_ANY,
+ (sysinit_cfunc_t) elf32_insert_brand_entry,
+ &freebsd_brand_oinfo);
+
void
elf32_dump_thread(struct thread *td, void *dst, size_t *off)
==== //depot/projects/mips2/src/sys/mips/mips/locore.S#14 (text+ko) ====
@@ -114,3 +114,12 @@
nop
/* NOTREACHED */
+
+ASM_ENTRY(sigcode)
+ break
+
+esigcode:
+ .data
+ .global szsigcode
+szsigcode:
+ .long esigcode-sigcode
==== //depot/projects/mips2/src/sys/mips/mips/machdep.c#20 (text+ko) ====
@@ -87,6 +87,12 @@
SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL);
void
+sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
+{
+ __asm __volatile("break");
+}
+
+void
mips_init(void)
{
int i;
More information about the p4-projects
mailing list