Convert to use genassym.cf and genassym.sh, as other ports do.

This commit is contained in:
fredette 2001-11-30 15:58:24 +00:00
parent af0a38f1d6
commit b9b98bff66
2 changed files with 175 additions and 232 deletions

View File

@ -1,232 +0,0 @@
/* $NetBSD: genassym.c,v 1.1 2001/04/06 15:05:56 fredette Exp $ */
/*
* Copyright (c) 1994, 1995 Gordon W. Ross
* Copyright (c) 1993 Adam Glass
* Copyright (c) 1982, 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* from: @(#)genassym.c 8.3 (Berkeley) 1/4/94
*/
/*
* This program is designed so that it can be both:
* (1) Run on the native machine to generate assym.h
* (2) Converted to assembly that genassym.awk will
* translate into the same assym.h as (1) does.
* The second method is done as follows:
* m68k-xxx-gcc [options] -S .../genassym.c
* awk -f genassym.awk < genassym.s > assym.h
*
* Using actual C code here (instead of genassym.cf)
* has the advantage that "make depend" automatically
* tracks dependencies of this C code on the (many)
* header files used here. Also, the awk script used
* to convert the assembly output to assym.h is much
* smaller and simpler than sys/kern/genassym.sh.
*
* Both this method and the genassym.cf method have the
* disadvantage that they depend on gcc-specific features.
* This method depends on the format of assembly output for
* data, and the genassym.cf method depends on features of
* the gcc asm() statement (inline assembly).
*/
#include "opt_compat_svr4.h"
#include <sys/param.h>
#include <sys/cdefs.h>
#include <sys/errno.h>
#include <sys/proc.h>
#include <sys/syscall.h>
#include <uvm/uvm_extern.h>
#ifdef COMPAT_SVR4
#include <compat/svr4/svr4_syscall.h>
#include <compat/svr4/svr4_ucontext.h>
#endif
#include <machine/cpu.h>
#include <machine/dvma.h>
#include <machine/mon.h>
#include <machine/pcb.h>
#include <machine/pmap.h>
#include <machine/psl.h>
#include <machine/pte.h>
#include <machine/vmparam.h>
#include <sun2/sun2/buserr.h>
#include <sun2/sun2/control.h>
#include <sun2/sun2/fc.h>
#include <sun2/sun2/enable.h>
/* Note: Avoid /usr/include for cross compilation! */
extern void printf __P((const char *fmt, ...));
extern void exit __P((int));
#define def(name, value) { name, value }
#ifdef __STDC__
#define def1(name) def(#name, name)
#else
#define def1(name) def("name", name)
#endif
#define offsetof(type, member) ((size_t)(&((type *)0)->member))
/*
* Note: genassym.awk cares about the form of this structure,
* as well as the names and placement of the "asdefs" array
* and the "nassefs" variable below. Clever, but fragile.
*/
struct nv {
char n[28];
int v;
};
struct nv assyms[] = {
/* XXX: for copy.s */
def("M68010", 1),
/* bus error stuff */
def1(BUSERR_REG),
def1(BUSERR_PROTERR),
/* 68k isms */
def1(PSL_LOWIPL),
def1(PSL_HIGHIPL),
def1(PSL_USER),
def1(PSL_S),
def("PSL_TS", PSL_T | PSL_S),
def1(FC_CONTROL),
def1(FC_SUPERD),
def1(FC_USERD),
/* sun2 control space isms */
def1(SCONTEXT_REG),
def1(CONTEXT_REG),
def1(CONTEXT_NUM),
def1(SYSTEM_ENAB),
def1(SEGMAP_BASE),
def1(ENA_INTS),
/* sun2 memory map */
def1(USRSTACK),
def1(SUN2_MONSTART),
def1(SUN2_PROM_BASE),
def1(SUN2_MONEND),
/* kernel-isms */
def1(KERNBASE),
def1(USPACE),
def1(NBPG),
def1(NBSG),
/* system calls */
def1(SYS_exit),
def1(SYS___sigreturn14),
def1(SYS_compat_13_sigreturn13),
/* errno-isms */
def1(EFAULT),
def1(ENAMETOOLONG),
/* trap types: locore.s includes trap.h */
/*
* unix structure-isms
*/
/* proc fields and values */
def("P_FORW", offsetof(struct proc, p_forw)),
def("P_BACK", offsetof(struct proc, p_back)),
def("P_VMSPACE", offsetof(struct proc, p_vmspace)),
def("P_ADDR", offsetof(struct proc, p_addr)),
def("P_PRIORITY", offsetof(struct proc, p_priority)),
def("P_STAT", offsetof(struct proc, p_stat)),
def("P_WCHAN", offsetof(struct proc, p_wchan)),
def("P_FLAG", offsetof(struct proc, p_flag)),
def("P_MDFLAG", offsetof(struct proc, p_md.md_flags)),
def("P_MDREGS", offsetof(struct proc, p_md.md_regs)),
def1(SRUN),
def1(SONPROC),
/* XXX: HP-UX trace bit? */
/* VM/pmap structure fields */
def("VM_PMAP", offsetof(struct vmspace, vm_map.pmap)),
def("PM_CTXNUM", offsetof(struct pmap, pm_ctxnum)),
/* pcb offsets */
def("PCB_FLAGS", offsetof(struct pcb, pcb_flags)),
def("PCB_PS", offsetof(struct pcb, pcb_ps)),
def("PCB_USP", offsetof(struct pcb, pcb_usp)),
def("PCB_REGS", offsetof(struct pcb, pcb_regs[0])),
def("PCB_ONFAULT", offsetof(struct pcb, pcb_onfault)),
def("PCB_FPCTX", offsetof(struct pcb, pcb_fpregs)),
def("SIZEOF_PCB", sizeof(struct pcb)),
/* exception frame offset/sizes */
def("FR_SP", offsetof(struct trapframe, tf_regs[15])),
def("FR_ADJ", offsetof(struct trapframe, tf_stackadj)),
def("FR_HW", offsetof(struct trapframe, tf_sr)),
def("FR_SIZE", sizeof(struct trapframe)),
/* FP frame offsets */
def("FPF_REGS", offsetof(struct fpframe, fpf_regs[0])),
def("FPF_FPCR", offsetof(struct fpframe, fpf_fpcr)),
/* SVR4 binary compatibility */
#ifdef COMPAT_SVR4
def("SVR4_SIGF_HANDLER", offsetof(struct svr4_sigframe, sf_handler)),
def("SVR4_SIGF_UC", offsetof(struct svr4_sigframe, sf_uc)),
def1(SVR4_SYS_context),
def1(SVR4_SYS_exit),
def1(SVR4_SETCONTEXT),
#endif
};
int nassyms = sizeof(assyms)/sizeof(assyms[0]);
main()
{
char *name;
int i, val;
for (i = 0; i < nassyms; i++) {
name = assyms[i].n;
val = assyms[i].v;
printf("#define\t%s\t%d\n", name, val);
}
exit(0);
}

View File

@ -0,0 +1,175 @@
# $NetBSD: genassym.cf,v 1.1 2001/11/30 15:58:24 fredette Exp $
#
# Copyright (c) 1994, 1995 Gordon W. Ross
# Copyright (c) 1993 Adam Glass
# Copyright (c) 1982, 1990, 1993
# The Regents of the University of California. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by the University of
# California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# from: @(#)genassym.c 8.3 (Berkeley) 1/4/94
#
if defined(_KERNEL) && !defined(_LKM)
include "opt_compat_svr4.h"
endif
include <sys/param.h>
include <sys/cdefs.h>
include <sys/errno.h>
include <sys/proc.h>
include <sys/syscall.h>
include <uvm/uvm_extern.h>
ifdef COMPAT_SVR4
include <compat/svr4/svr4_syscall.h>
include <compat/svr4/svr4_ucontext.h>
endif
include <machine/cpu.h>
include <machine/dvma.h>
include <machine/mon.h>
include <machine/pcb.h>
include <machine/pmap.h>
include <machine/psl.h>
include <machine/pte.h>
include <machine/vmparam.h>
include <sun2/sun2/buserr.h>
include <sun2/sun2/control.h>
include <sun2/sun2/fc.h>
include <sun2/sun2/enable.h>
include <dev/ic/am9513reg.h>
# XXX: for copy.s
define M68010 1
# bus error stuff
define BUSERR_REG BUSERR_REG
define BUSERR_PROTERR BUSERR_PROTERR
# 68k isms
define PSL_LOWIPL PSL_LOWIPL
define PSL_HIGHIPL PSL_HIGHIPL
define PSL_USER PSL_USER
define PSL_S PSL_S
define PSL_TS PSL_T | PSL_S
define FC_CONTROL FC_CONTROL
define FC_SUPERD FC_SUPERD
define FC_USERD FC_USERD
# sun2 control space isms
define SCONTEXT_REG SCONTEXT_REG
define CONTEXT_REG CONTEXT_REG
define CONTEXT_NUM CONTEXT_NUM
define SYSTEM_ENAB SYSTEM_ENAB
define ENA_INTS ENA_INTS
define SEGMAP_BASE SEGMAP_BASE
# sun2 memory map
define USRSTACK USRSTACK
define SUN2_MONSTART SUN2_MONSTART
define SUN2_PROM_BASE SUN2_PROM_BASE
define SUN2_MONEND SUN2_MONEND
# sun2 clock
define AM9513_CLK_CMD AM9513_CLK_CMD
define SUN2_CLK_TIMER_CLEAR_OUTPUT AM9513_CMD_CLEAR_OUTPUT(AM9513_TIMER2)
# kernel-isms
define KERNBASE KERNBASE
define USPACE USPACE
define NBPG NBPG
define NBSG NBSG
# system calls
define SYS_exit SYS_exit
define SYS___sigreturn14 SYS___sigreturn14
define SYS_compat_13_sigreturn13 SYS_compat_13_sigreturn13
# errno-isms
define EFAULT EFAULT
define ENAMETOOLONG ENAMETOOLONG
# trap types: locore.s includes trap.h
#
# unix structure-isms
#
# proc fields and values
define P_FORW offsetof(struct proc, p_forw)
define P_BACK offsetof(struct proc, p_back)
define P_VMSPACE offsetof(struct proc, p_vmspace)
define P_ADDR offsetof(struct proc, p_addr)
define P_PRIORITY offsetof(struct proc, p_priority)
define P_STAT offsetof(struct proc, p_stat)
define P_WCHAN offsetof(struct proc, p_wchan)
define P_FLAG offsetof(struct proc, p_flag)
define P_MDFLAG offsetof(struct proc, p_md.md_flags)
define P_MDREGS offsetof(struct proc, p_md.md_regs)
define SRUN SRUN
define SONPROC SONPROC
# XXX: HP-UX trace bit?
# VM/pmap structure fields
define VM_PMAP offsetof(struct vmspace, vm_map.pmap)
define PM_CTXNUM offsetof(struct pmap, pm_ctxnum)
# pcb offsets
define PCB_FLAGS offsetof(struct pcb, pcb_flags)
define PCB_PS offsetof(struct pcb, pcb_ps)
define PCB_USP offsetof(struct pcb, pcb_usp)
define PCB_REGS offsetof(struct pcb, pcb_regs[0])
define PCB_ONFAULT offsetof(struct pcb, pcb_onfault)
define PCB_FPCTX offsetof(struct pcb, pcb_fpregs)
define SIZEOF_PCB sizeof(struct pcb)
# exception frame offset/sizes
define FR_SP offsetof(struct trapframe, tf_regs[15])
define FR_ADJ offsetof(struct trapframe, tf_stackadj)
define FR_HW offsetof(struct trapframe, tf_sr)
define FR_SIZE sizeof(struct trapframe)
# FP frame offsets
define FPF_REGS offsetof(struct fpframe, fpf_regs[0])
define FPF_FPCR offsetof(struct fpframe, fpf_fpcr)
# SVR4 binary compatibility
ifdef COMPAT_SVR4
define SVR4_SIGF_HANDLER offsetof(struct svr4_sigframe, sf_handler)
define SVR4_SIGF_UC offsetof(struct svr4_sigframe, sf_uc)
define SVR4_SYS_context SVR4_SYS_context
define SVR4_SYS_exit SVR4_SYS_exit
define SVR4_SETCONTEXT SVR4_SETCONTEXT
endif