ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.N.b.tar.gz#/lib/gcc-lib/m68k-next-nextstep3/2.7.2.2.f.2/include/mach/m68k/vm_param.h

This is vm_param.h in view mode; [Download] [Up]

/* 
 * Copyright (c) 1987 NeXT, Inc.
 *
 * HISTORY
 * 15-May-91  Gregg Kellogg (gk) at NeXT
 *	Converted NeXT_ stuff to m68k_ stuff.
 */ 

#ifndef	_MACH_M68K_VM_PARAM_
#define	_MACH_M68K_VM_PARAM_

#import <bsd/sys/types.h>

#define BYTE_SIZE	8	/* byte size in bits */
#define BYTE_MSF	1	/* Most significant byte first in word */

/*
 *	These are variables so we can change the page size by just rebooting.
 */

#ifndef	ASSEMBLER
extern int
	m68k_page_size,		/* bytes per m68k page */
	m68k_page_mask,		/* mask for page offset */
	m68k_page_shift,	/* number of bits to shift for pages */
	m68k_is,		/* initial shift: # of high VA bits to skip */
	m68k_tia,		/* table index a */
	m68k_tib,		/* table index b */
	m68k_pt1_entries,	/* number of entries per level 1 page table */
	m68k_pt2_entries,
	m68k_pt1_size,		/* size of a single level 1 page table */
	m68k_pt2_size,
	m68k_pt1_shift,		/* bits to shift for pt1 index */
	m68k_pt2_shift,
	m68k_pt1_mask,		/* mask to apply for pt1 index */
	m68k_pt2_mask,
	m68k_pt2_maps;		/* a single pt2 maps this much VA space */
#endif

/*
 *	Most ports place the kernel in the high half of the total
 *	32-bit virtual address (VA) space, the u-area and kernel stack
 *	just below that and the user space starting at virtual
 *	location zero.  We disagree with this for several reasons
 *	(on the VAX the hardware gives you no choice).  The user
 *	should be able to address the entire 4GB virtual space now
 *	that Mach makes better use of virtual memory concepts
 *	(mapped files, shared memory, copy-on-write etc.) -- we need
 *	the extra 2GB for these things.
 *
 *	Some processes may also want to use the MMU transparent
 *	translation (tt) registers to access devices (e.g. video memory)
 *	without constantly invalidating the MMU address translation cache.
 *	Because the MMU tt registers map chunks of VA space directly to
 *	their corresponding physical address (PA) spaces this fragments
 *	the space even more and we'll need more VA space to compensate for it.
 *	Another goal is catching illegal zero pointer references
 *	in both the kernel and user address spaces.
 *	We'd also like to use the MMU tt registers to bypass address
 *	translation for the kernel text, data, bss and system page table
 *	areas.
 */

#define	M68K_MIN_PAGE_SIZE	8192
#define	M68K_MAX_PAGE_SIZE	32768

#define	VM_MIN_ADDRESS	((vm_offset_t) 0)
#define	VM_MAX_ADDRESS	((vm_offset_t) 0xfffffffc)

/* allow 64 MB of kernel virtual space */
#define VM_MIN_KERNEL_ADDRESS	((vm_offset_t) 0x10000000)
#define VM_MAX_KERNEL_ADDRESS	((vm_offset_t) 0x14000000)

#define	M68K_KERNEL_TEXT_ADDR	0x04000000

#define INTSTACK_SIZE		4096		/* interrupt stack size */
#define	KERNSTACK_SIZE		4096		/* kernel stack size
						 * Don't use this, use
						 * KERNEL_STACK_SIZE from
						 * <kern/kernel_stack.h>
						 */
#define	MAX_REGIONS		8		/* max regions of memory */

/*
 *	Convert bytes to pages and convert pages to bytes.
 *	No rounding is used.
 */

#define	m68k_btop(x)	(((unsigned)(x)) >> m68k_page_shift)
#define	m68k_ptob(x)	(((unsigned)(x)) << m68k_page_shift)

/*
 *	Round off or truncate to the nearest page.  These will work
 *	for either addresses or counts.  (i.e. 1 byte rounds to 1 page
 *	bytes.
 */

#define m68k_round_page(x)	((((unsigned)(x)) + m68k_page_size - 1) & \
					~(m68k_page_size-1))
#define m68k_trunc_page(x)	(((unsigned)(x)) & ~(m68k_page_size-1))

/*
 *	Conversion between m68k pages and VM pages.
 */

#define trunc_m68k_to_vm(p)	(atop(trunc_page(m68k_ptob(p))))
#define round_m68k_to_vm(p)	(atop(round_page(m68k_ptob(p))))

/*
 * Maximum alignment required by any data type for this architecture.
 * (Use 4 bytes for performance reasons....)
 */
#define	MAX_DATA_ALIGNMENT	4		/* 4 bytes */
#endif

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.