Blame include/os9k.h

Packit Service 72eb06
/* os9k.h  -  OS-9000 i386 module header definitions
Packit Service 72eb06
   Copyright (C) 2000-2018 Free Software Foundation, Inc.
Packit Service 72eb06
Packit Service 72eb06
This file is part of GNU CC.
Packit Service 72eb06
   
Packit Service 72eb06
GNU CC is free software; you can redistribute it and/or modify
Packit Service 72eb06
it under the terms of the GNU General Public License as published by
Packit Service 72eb06
the Free Software Foundation; either version 2, or (at your option)
Packit Service 72eb06
any later version.
Packit Service 72eb06
Packit Service 72eb06
GNU CC is distributed in the hope that it will be useful,
Packit Service 72eb06
but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 72eb06
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 72eb06
GNU General Public License for more details.
Packit Service 72eb06
Packit Service 72eb06
You should have received a copy of the GNU General Public License
Packit Service 72eb06
along with GNU CC; see the file COPYING.  If not, write to
Packit Service 72eb06
the Free Software Foundation, 51 Franklin Street - Fifth Floor,
Packit Service 72eb06
Boston, MA 02110-1301, USA.  */
Packit Service 72eb06

Packit Service 72eb06
#if !defined(_MODULE_H)
Packit Service 72eb06
#define _MODULE_H
Packit Service 72eb06
Packit Service 72eb06
#define _MPF386
Packit Service 72eb06
Packit Service 72eb06
/* Size of common header less parity field.  */
Packit Service 72eb06
#define N_M_PARITY  (sizeof(mh_com)-sizeof(unisgned short))
Packit Service 72eb06
#define OLD_M_PARITY 46
Packit Service 72eb06
#define M_PARITY N_M_PARITY
Packit Service 72eb06
Packit Service 72eb06
#ifdef _MPF68K
Packit Service 72eb06
#define MODSYNC 0x4afc		/* Module header sync code for 680x0 processors.  */
Packit Service 72eb06
#endif
Packit Service 72eb06
Packit Service 72eb06
#ifdef _MPF386
Packit Service 72eb06
#define MODSYNC 0x4afc		/* Module header sync code for 80386 processors.  */
Packit Service 72eb06
#endif
Packit Service 72eb06
Packit Service 72eb06
#define MODREV	1		/* Module format revision 1.  */
Packit Service 72eb06
#define CRCCON	0x800063	/* CRC polynomial constant.  */
Packit Service 72eb06
Packit Service 72eb06
/* Module access permission values.  */
Packit Service 72eb06
#define MP_OWNER_READ	0x0001
Packit Service 72eb06
#define MP_OWNER_WRITE	0x0002
Packit Service 72eb06
#define MP_OWNER_EXEC	0x0004
Packit Service 72eb06
#define MP_GROUP_READ	0x0010
Packit Service 72eb06
#define MP_GROUP_WRITE	0x0020
Packit Service 72eb06
#define MP_GROUP_EXEC	0x0040
Packit Service 72eb06
#define MP_WORLD_READ	0x0100
Packit Service 72eb06
#define MP_WORLD_WRITE	0x0200
Packit Service 72eb06
#define MP_WORLD_EXEC	0x0400
Packit Service 72eb06
#define MP_WORLD_ACCESS	0x0777
Packit Service 72eb06
#define MP_OWNER_MASK	0x000f
Packit Service 72eb06
#define MP_GROUP_MASK	0x00f0
Packit Service 72eb06
#define MP_WORLD_MASK	0x0f00
Packit Service 72eb06
#define MP_SYSTM_MASK	0xf000
Packit Service 72eb06
Packit Service 72eb06
/* Module Type/Language values.  */
Packit Service 72eb06
#define MT_ANY		0
Packit Service 72eb06
#define MT_PROGRAM	0x0001
Packit Service 72eb06
#define MT_SUBROUT	0x0002
Packit Service 72eb06
#define MT_MULTI	0x0003
Packit Service 72eb06
#define MT_DATA		0x0004
Packit Service 72eb06
#define MT_TRAPLIB	0x000b
Packit Service 72eb06
#define MT_SYSTEM	0x000c
Packit Service 72eb06
#define MT_FILEMAN	0x000d
Packit Service 72eb06
#define MT_DEVDRVR	0x000e 
Packit Service 72eb06
#define MT_DEVDESC	0x000f
Packit Service 72eb06
#define MT_MASK		0xff00
Packit Service 72eb06
Packit Service 72eb06
#define ML_ANY		0
Packit Service 72eb06
#define ML_OBJECT	1
Packit Service 72eb06
#define ML_ICODE	2
Packit Service 72eb06
#define ML_PCODE	3
Packit Service 72eb06
#define ML_CCODE	4
Packit Service 72eb06
#define ML_CBLCODE	5
Packit Service 72eb06
#define ML_FRTNCODE	6
Packit Service 72eb06
#define ML_MASK		0x00ff
Packit Service 72eb06
Packit Service 72eb06
#define mktypelang(type, lang)	(((type) << 8) | (lang))
Packit Service 72eb06
Packit Service 72eb06
/* Module Attribute values.  */
Packit Service 72eb06
#define MA_REENT	0x80
Packit Service 72eb06
#define MA_GHOST	0x40
Packit Service 72eb06
#define MA_SUPER	0x20
Packit Service 72eb06
#define MA_MASK		0xff00
Packit Service 72eb06
#define MR_MASK		0x00ff
Packit Service 72eb06
Packit Service 72eb06
#define mkattrevs(attr, revs)	(((attr) << 8) | (revs))
Packit Service 72eb06
Packit Service 72eb06
#define m_user 		m_owner.grp_usr.usr
Packit Service 72eb06
#define m_group 	m_owner.grp_usr.grp
Packit Service 72eb06
#define m_group_user	m_owner.group_user
Packit Service 72eb06
Packit Service 72eb06
/* Macro definitions for accessing module header fields.  */
Packit Service 72eb06
#define MODNAME(mod) ((u_char*)((u_char*)mod + ((Mh_com)mod)->m_name))
Packit Service 72eb06
#if 0
Packit Service 72eb06
/* Appears not to be used, and the u_int32 typedef is gone (because it
Packit Service 72eb06
   conflicted with a Mach header.  */
Packit Service 72eb06
#define MODSIZE(mod) ((u_int32)((Mh_com)mod)->m_size)
Packit Service 72eb06
#endif /* 0 */
Packit Service 72eb06
#define MHCOM_BYTES_SIZE 80
Packit Service 72eb06
#define N_BADMAG(a) (((a)->a_info) != MODSYNC)
Packit Service 72eb06
Packit Service 72eb06
typedef struct mh_com
Packit Service 72eb06
{
Packit Service 72eb06
  /* Sync bytes ($4afc).  */
Packit Service 72eb06
  unsigned char m_sync[2];
Packit Service 72eb06
  unsigned char m_sysrev[2];	/* System revision check value.  */
Packit Service 72eb06
  unsigned char m_size[4];	/* Module size.  */
Packit Service 72eb06
  unsigned char m_owner[4];	/* Group/user id.  */
Packit Service 72eb06
  unsigned char m_name[4];	/* Offset to module name.  */
Packit Service 72eb06
  unsigned char m_access[2];	/* Access permissions.  */
Packit Service 72eb06
  unsigned char m_tylan[2];	/* Type/lang.  */
Packit Service 72eb06
  unsigned char m_attrev[2];	/* Rev/attr.  */
Packit Service 72eb06
  unsigned char m_edit[2];	/* Edition.  */
Packit Service 72eb06
  unsigned char m_needs[4];	/* Module hardware requirements flags. (reserved).  */
Packit Service 72eb06
  unsigned char m_usage[4];	/* Comment string offset.  */
Packit Service 72eb06
  unsigned char m_symbol[4];	/* Symbol table offset.  */
Packit Service 72eb06
  unsigned char m_exec[4];	/* Offset to execution entry point.  */
Packit Service 72eb06
  unsigned char m_excpt[4];	/* Offset to exception entry point.  */
Packit Service 72eb06
  unsigned char m_data[4];	/* Data storage requirement.  */
Packit Service 72eb06
  unsigned char m_stack[4];	/* Stack size.  */
Packit Service 72eb06
  unsigned char m_idata[4];	/* Offset to initialized data.  */
Packit Service 72eb06
  unsigned char m_idref[4];	/* Offset to data reference lists.  */
Packit Service 72eb06
  unsigned char m_init[4];	/* Initialization routine offset.  */
Packit Service 72eb06
  unsigned char m_term[4];	/* Termination routine offset.  */
Packit Service 72eb06
  unsigned char m_ident[2];	/* Ident code for ident program.  */
Packit Service 72eb06
  char          m_spare[8];	/* Reserved bytes.  */
Packit Service 72eb06
  unsigned char m_parity[2]; 	/* Header parity.  */
Packit Service 72eb06
} mh_com,*Mh_com;
Packit Service 72eb06
Packit Service 72eb06
/* Executable memory module.  */
Packit Service 72eb06
typedef mh_com *Mh_exec,mh_exec;
Packit Service 72eb06
Packit Service 72eb06
/* Data memory module.  */
Packit Service 72eb06
typedef mh_com *Mh_data,mh_data;
Packit Service 72eb06
Packit Service 72eb06
/* File manager memory module.  */
Packit Service 72eb06
typedef mh_com *Mh_fman,mh_fman;
Packit Service 72eb06
Packit Service 72eb06
/* Device driver module.  */
Packit Service 72eb06
typedef mh_com *Mh_drvr,mh_drvr;
Packit Service 72eb06
Packit Service 72eb06
/* Trap handler module.  */
Packit Service 72eb06
typedef	mh_com mh_trap, *Mh_trap;
Packit Service 72eb06
Packit Service 72eb06
/* Device descriptor module.  */
Packit Service 72eb06
typedef	mh_com *Mh_dev,mh_dev;
Packit Service 72eb06
Packit Service 72eb06
/* Configuration module.  */
Packit Service 72eb06
typedef mh_com *Mh_config, mh_config;
Packit Service 72eb06
Packit Service 72eb06
#if 0 
Packit Service 72eb06
Packit Service 72eb06
#if !defined(_MODDIR_H)
Packit Service 72eb06
/* Go get _os_fmod (and others).  */
Packit Service 72eb06
#include <moddir.h>
Packit Service 72eb06
#endif
Packit Service 72eb06
Packit Service 72eb06
error_code _os_crc (void *, u_int32, int *);
Packit Service 72eb06
error_code _os_datmod (char *, u_int32, u_int16 *, u_int16 *, u_int32, void **, mh_data **);
Packit Service 72eb06
error_code _os_get_moddir (void *, u_int32 *);
Packit Service 72eb06
error_code _os_initdata (mh_com *, void *);
Packit Service 72eb06
error_code _os_link (char **, mh_com **, void **, u_int16 *, u_int16 *);
Packit Service 72eb06
error_code _os_linkm (mh_com *, void **, u_int16 *, u_int16 *);
Packit Service 72eb06
error_code _os_load (char *, mh_com **, void **, u_int32, u_int16 *, u_int16 *, u_int32);
Packit Service 72eb06
error_code _os_mkmodule (char *, u_int32, u_int16 *, u_int16 *, u_int32, void **, mh_com **, u_int32);
Packit Service 72eb06
error_code _os_modaddr (void *, mh_com **);
Packit Service 72eb06
error_code _os_setcrc (mh_com *);
Packit Service 72eb06
error_code _os_slink (u_int32, char *, void **, void **, mh_com **);
Packit Service 72eb06
error_code _os_slinkm (u_int32, mh_com *, void **, void **);
Packit Service 72eb06
error_code _os_unlink (mh_com *);
Packit Service 72eb06
error_code _os_unload (char *, u_int32);
Packit Service 72eb06
error_code _os_tlink (u_int32, char *, void **, mh_trap **, void *, u_int32);
Packit Service 72eb06
error_code _os_tlinkm (u_int32, mh_com *, void **, void *, u_int32);
Packit Service 72eb06
error_code _os_iodel (mh_com *);
Packit Service 72eb06
error_code _os_vmodul (mh_com *, mh_com *, u_int32);
Packit Service 72eb06
#endif /* 0 */
Packit Service 72eb06
Packit Service 72eb06
#endif