From: law@schirf.cs.utah.edu (Jeffrey A Law)
Newsgroups: gnu.gcc.bug
Subject: ipc_input1111bug.c
Date: 11 Nov 92 15:07:55 GMT
Article-I.D.: schirf.10097.721494475
Reply-To: law@cs.utah.edu
Distribution: gnu
Organization: Gnus Not Usenet

configuration i386-mach.

Compile with gcc-2.3.1 "-O" to make cc1 core dump:

typedef	unsigned int	vm_offset_t;
typedef	unsigned int	vm_size_t;
typedef	int		kern_return_t;
typedef int		boolean_t;
typedef unsigned int mach_port_t;
typedef mach_port_t *mach_port_array_t;
typedef unsigned int mach_port_right_t;
typedef unsigned int mach_port_type_t;
typedef mach_port_type_t *mach_port_type_array_t;
typedef unsigned int mach_port_urefs_t;
typedef int mach_port_delta_t;			 
typedef unsigned int mach_port_seqno_t;		 
typedef unsigned int mach_port_mscount_t;	 
typedef unsigned int mach_port_msgcount_t;	 
typedef unsigned int mach_port_rights_t;	 
typedef struct mach_port_status {
	mach_port_t		mps_pset;	 
	mach_port_seqno_t	mps_seqno;	 
	mach_port_mscount_t	mps_mscount;	 
	mach_port_msgcount_t	mps_qlimit;	 
	mach_port_msgcount_t	mps_msgcount;	 
	mach_port_rights_t	mps_sorights;	 
	boolean_t		mps_srights;	 
	boolean_t		mps_pdrequest;	 
	boolean_t		mps_nsrequest;	 
} mach_port_status_t;
typedef struct old_mach_port_status {
	mach_port_t		mps_pset;	 
	mach_port_mscount_t	mps_mscount;	 
	mach_port_msgcount_t	mps_qlimit;	 
	mach_port_msgcount_t	mps_msgcount;	 
	mach_port_rights_t	mps_sorights;	 
	boolean_t		mps_srights;	 
	boolean_t		mps_pdrequest;	 
	boolean_t		mps_nsrequest;	 
} old_mach_port_status_t;
typedef int 		port_name_t;		 
typedef port_name_t	port_set_name_t;	 
typedef port_name_t	*port_name_array_t;
typedef int		port_type_t;		 
typedef port_type_t	*port_type_array_t;
typedef	port_name_t	port_t;			 
typedef	port_t		port_rcv_t;		 
typedef	port_t		port_own_t;		 
typedef	port_t		port_all_t;		 
typedef	port_t		*port_array_t;
typedef unsigned int mach_msg_timeout_t;
typedef unsigned int mach_msg_bits_t;
typedef	unsigned int mach_msg_size_t;
typedef unsigned int mach_msg_seqno_t;
typedef int mach_msg_id_t;
typedef	struct {
    mach_msg_bits_t	msgh_bits;
    mach_msg_size_t	msgh_size;
    mach_port_t		msgh_remote_port;
    mach_port_t		msgh_local_port;
    mach_port_seqno_t	msgh_seqno;
    mach_msg_id_t	msgh_id;
} mach_msg_header_t;
typedef unsigned int mach_msg_type_name_t;
typedef unsigned int mach_msg_type_size_t;
typedef unsigned int mach_msg_type_number_t;
typedef struct  {
    unsigned int	msgt_name : 8,
			msgt_size : 8,
			msgt_number : 12,
			msgt_inline : 1,
			msgt_longform : 1,
			msgt_deallocate : 1,
			msgt_unused : 1;
} mach_msg_type_t;
typedef	struct	{
    mach_msg_type_t	msgtl_header;
    unsigned short	msgtl_name;
    unsigned short	msgtl_size;
    unsigned int	msgtl_number;
} mach_msg_type_long_t;
typedef int mach_msg_option_t;
typedef kern_return_t mach_msg_return_t;
extern mach_msg_return_t
mach_msg_trap
   (mach_msg_header_t *msg,
    mach_msg_option_t option,
    mach_msg_size_t send_size,
    mach_msg_size_t rcv_size,
    mach_port_t rcv_name,
    mach_msg_timeout_t timeout,
    mach_port_t notify);
extern mach_msg_return_t
mach_msg
   (mach_msg_header_t *msg,
    mach_msg_option_t option,
    mach_msg_size_t send_size,
    mach_msg_size_t rcv_size,
    mach_port_t rcv_name,
    mach_msg_timeout_t timeout,
    mach_port_t notify);
typedef	unsigned int	msg_size_t;
typedef	struct {
		unsigned int	msg_unused : 24,
				msg_simple : 8;
		msg_size_t	msg_size;
		int		msg_type;
		port_t		msg_local_port;
		port_t		msg_remote_port;
		int		msg_id;
} msg_header_t;
typedef struct  {
	unsigned int	msg_type_name : 8,		 
			msg_type_size : 8,		 
			msg_type_number : 12,		 
			msg_type_inline : 1,		 
			msg_type_longform : 1,		 
			msg_type_deallocate : 1,	 
			msg_type_unused : 1;
} msg_type_t;
typedef	struct	{
	msg_type_t	msg_type_header;
	unsigned short	msg_type_long_name;
	unsigned short	msg_type_long_size;
	unsigned int	msg_type_long_number;
} msg_type_long_t;
typedef	unsigned int	msg_timeout_t;
typedef	int		msg_option_t;
typedef	int		msg_return_t;
msg_return_t	msg_send(
	msg_header_t	*header,
	msg_option_t	option,
	msg_timeout_t	timeout);
msg_return_t	msg_receive(
	msg_header_t	*header,
	msg_option_t	option,
	msg_timeout_t	timeout);
msg_return_t	msg_rpc(
	msg_header_t	*header,	 
	msg_option_t	option,
	msg_size_t	rcv_size,
	msg_timeout_t	send_timeout,
	msg_timeout_t	rcv_timeout);
msg_return_t	msg_send_trap(
	msg_header_t	*header,
	msg_option_t	option,
	msg_size_t	send_size,
	msg_timeout_t	timeout);
msg_return_t	msg_receive_trap(
	msg_header_t	*header,
	msg_option_t	option,
	msg_size_t	rcv_size,
	port_name_t	rcv_name,
	msg_timeout_t	timeout);
msg_return_t	msg_rpc_trap(
	msg_header_t	*header,	 
	msg_option_t	option,
	msg_size_t	send_size,
	msg_size_t	rcv_size,
	msg_timeout_t	send_timeout,
	msg_timeout_t	rcv_timeout);
extern void Assert();
int	master_cpu;	 
extern vm_offset_t kalloc();
extern vm_offset_t kget();
extern void kfree();
extern void kalloc_init();
typedef struct ipc_marequest {
	struct ipc_space *imar_space;
	mach_port_t imar_name;
	struct ipc_port *imar_soright;
	struct ipc_marequest *imar_next;
} *ipc_marequest_t;
extern void
ipc_marequest_init();
extern unsigned int
ipc_marequest_info( );
extern mach_msg_return_t
ipc_marequest_create( 
);
extern void
ipc_marequest_cancel( );
extern void
ipc_marequest_rename( 
);
extern void
ipc_marequest_destroy( );
typedef int		vm_prot_t;
extern vm_size_t	page_size;	 
extern vm_size_t	page_mask;	 
extern int		page_shift;	 
extern vm_size_t	mem_size;	 
extern vm_offset_t	first_addr;	 
extern vm_offset_t	last_addr;	 
typedef	mach_port_t	memory_object_t;
typedef	mach_port_t	memory_object_control_t;
typedef	mach_port_t	memory_object_name_t;
typedef	int		memory_object_copy_strategy_t;
typedef	int		memory_object_return_t;
struct slock {
	int		lock_data;	 
};
typedef struct slock	simple_lock_data_t;
typedef struct slock	*simple_lock_t;
struct lock {
	unsigned int	read_count:16,	 
			want_upgrade:1,	 
			want_write:1,	 
			waiting:1,	 
			can_sleep:1,	 
			:0;
	char		*thread;	 
	int		recursion_depth; 
};
typedef struct lock	lock_data_t;
typedef struct lock	*lock_t;
extern void		lock_init();
extern void		lock_sleepable();
extern void		lock_write();
extern void		lock_read();
extern void		lock_done();
extern boolean_t	lock_read_to_write();
extern void		lock_write_to_read();
extern boolean_t	lock_try_write();
extern boolean_t	lock_try_read();
extern boolean_t	lock_try_read_to_write();
extern void		lock_set_recursive();
extern void		lock_clear_recursive();
struct queue_entry {
	struct queue_entry	*next;		 
	struct queue_entry	*prev;		 
};
typedef struct queue_entry	*queue_t;
typedef	struct queue_entry	queue_head_t;
typedef	struct queue_entry	queue_chain_t;
typedef	struct queue_entry	*queue_entry_t;
void		enqueue_head();
void		enqueue_tail();
queue_entry_t	dequeue_head();
queue_entry_t	dequeue_tail();
void		remqueue();
struct mpqueue_head {
	struct queue_entry	head;		 
	struct slock		lock;		 
};
typedef struct mpqueue_head	mpqueue_head_t;
typedef struct vm_external {
    	int		existence_size;	 
	char		*existence_map;	 
	int		existence_count; 
} *vm_external_t;
typedef int	vm_external_state_t;
extern void		vm_external_module_initialize();
extern vm_external_t	vm_external_create();	 
extern void vm_external_destroy();		 
extern void		vm_external_state_set(); 
extern vm_external_state_t _vm_external_state_get();
typedef struct xmm_obj *	pager_request_t;
struct vm_object {
	queue_chain_t		memq;		 
	vm_size_t		size;		 
	short			ref_count;	 
	short			resident_page_count;
	struct vm_object	*copy;		 
	struct vm_object	*shadow;	 
	vm_offset_t		shadow_offset;	 
	struct ipc_port		*pager;		 
	vm_offset_t		paging_offset;	 
	pager_request_t		pager_request;	 
	struct ipc_port		*pager_name;	 
	memory_object_copy_strategy_t
				copy_strategy;	 
	unsigned int
				absent_count;	 
	unsigned int  
				all_wanted;	 
	unsigned int
				paging_in_progress:16,
	 		pager_created:1, 
	 		pager_initialized:1, 
	 		pager_ready:1,	 
	 		can_persist:1,	 
	 		internal:1,	 
	 		temporary:1,	 
	 		alive:1,	 
	 		lock_in_progress : 1,
	 		lock_restart : 1,
	 		use_old_pageout : 1,
	 		use_shared_copy : 1, 
	 		shadowed: 1;	 
	queue_chain_t		cached_list;	 
	vm_offset_t		last_alloc;	 
	vm_external_t		existence_info;
};
typedef struct vm_object	*vm_object_t;
extern
vm_object_t	kernel_object;		 
extern void		vm_object_bootstrap();
extern void		vm_object_init();
extern void		vm_object_terminate();
extern vm_object_t	vm_object_allocate();
extern void		vm_object_reference();
extern void		vm_object_deallocate();
extern void		vm_object_pmap_protect();
extern void		vm_object_pmap_remove();
extern void		vm_object_page_remove();
extern void		vm_object_shadow();
extern void		vm_object_collapse();
extern vm_object_t	vm_object_lookup();
extern vm_object_t	vm_object_lookup_name();
extern struct ipc_port	*vm_object_name();
extern void		vm_object_remove();
extern boolean_t	vm_object_copy_temporary();
extern kern_return_t	vm_object_copy_strategically();
extern kern_return_t	vm_object_copy_slowly();
extern vm_object_t	vm_object_enter();
extern void		vm_object_pager_create();
extern void		vm_object_destroy();
extern void		vm_object_print();
extern vm_object_t	vm_object_request_object();
typedef struct zone {
	int		count;		 
	vm_offset_t	free_elements;
	vm_size_t	cur_size;	 
	vm_size_t	max_size;	 
	vm_size_t	elem_size;	 
	vm_size_t	alloc_size;	 
	boolean_t	doing_alloc;	 
	char		*zone_name;	 
	unsigned int
	 	pageable :1,	 
	 	sleepable :1,	 
	  exhaustible :1,	 
	 	collectable :1,	 
	 	expandable :1;	 
	lock_data_t	complex_lock;	 
	struct zone *	next_zone;	 
} *zone_t;
extern void		zone_gc();
extern void		consider_zone_gc();
extern vm_offset_t	zalloc();
extern vm_offset_t	zget();
extern zone_t		zinit();
extern void		zfree();
extern void		zchange();
extern void		zcollectable();
extern vm_offset_t	zdata;
extern vm_offset_t	zdata_size;
extern void		zcram();
extern void		zone_bootstrap();
extern void		zone_init();
extern void	sched_init();
extern void	assert_wait();
extern void	clear_wait();
extern void	thread_sleep();
extern void	thread_wakeup();		 
extern void	thread_wakeup_prim();
extern boolean_t thread_invoke();
extern void	thread_block();
extern void	thread_run();
extern void	thread_set_timeout();
extern void	thread_setrun();
extern void	thread_dispatch();
extern void	thread_continue();
extern void	thread_go();
extern void	thread_will_wait();
extern void	thread_will_wait_with_timeout();
extern boolean_t thread_handoff();
extern void	recompute_priorities();
extern void	thread_bootstrap_return();
extern void	thread_exception_return();
extern void	thread_syscall_return();
extern struct thread *switch_context();
extern void	stack_handoff();
extern void	stack_alloc();
extern boolean_t stack_alloc_try();
extern void	stack_free();
struct vm_page {
	queue_chain_t	pageq;		 
	queue_chain_t	listq;		 
	struct vm_page	*next;		 
	vm_object_t	object;		 
	vm_offset_t	offset;		 
	unsigned int	wire_count:16,	 
	 	inactive:1,	 
			active:1,	 
			laundry:1,	 
			free:1,		 
			reference:1,	 
			:0;		 
	unsigned int
	 	busy:1,		 
			wanted:1,	 
			tabled:1,	 
			fictitious:1,	 
			private:1,	 
			absent:1,	 
			error:1,	 
			dirty:1,	 
			precious:1,	 
			overwriting:1,	 
			:0;
	vm_offset_t	phys_addr;	 
	vm_prot_t	page_lock;	 
	vm_prot_t	unlock_request;	 
};
typedef struct vm_page	*vm_page_t;
extern
vm_page_t	vm_page_queue_free;	 
extern
vm_page_t	vm_page_queue_fictitious;	 
extern
queue_head_t	vm_page_queue_active;	 
extern
queue_head_t	vm_page_queue_inactive;	 
extern
vm_offset_t	first_phys_addr;	 
extern
vm_offset_t	last_phys_addr;		 
extern
int	vm_page_free_count;	 
extern
int	vm_page_fictitious_count; 
extern
int	vm_page_active_count;	 
extern
int	vm_page_inactive_count;	 
extern
int	vm_page_wire_count;	 
extern
int	vm_page_free_target;	 
extern
int	vm_page_free_min;	 
extern
int	vm_page_inactive_target; 
extern
int	vm_page_free_reserved;	 
extern
int	vm_page_laundry_count;	 
extern unsigned int	vm_page_free_wanted;
extern vm_offset_t	vm_page_fictitious_addr;
extern void		vm_page_bootstrap();
extern void		vm_page_module_init();
extern void		vm_page_create();
extern vm_page_t	vm_page_lookup();
extern vm_page_t	vm_page_grab_fictitious();
extern void		vm_page_release_fictitious();
extern boolean_t	vm_page_convert();
extern void		vm_page_more_fictitious();
extern vm_page_t	vm_page_grab();
extern void		vm_page_release();
extern void		vm_page_wait();
extern vm_page_t	vm_page_alloc();
extern void		vm_page_attach();
extern void		vm_page_init();
extern void		vm_page_free();
extern void		vm_page_activate();
extern void		vm_page_deactivate();
extern void		vm_page_rename();
extern void		vm_page_insert();
extern void		vm_page_remove();
extern void		vm_page_zero_fill();
extern void		vm_page_copy();
extern void		vm_page_wire();
extern void		vm_page_unwire();
extern void		vm_set_page_size();
extern unsigned int	vm_page_info();
extern void vm_page_check_queues();
typedef int		vm_inherit_t;	 
struct vm_statistics {
	long	pagesize;		 
	long	free_count;		 
	long	active_count;		 
	long	inactive_count;		 
	long	wire_count;		 
	long	zero_fill_count;	 
	long	reactivations;		 
	long	pageins;		 
	long	pageouts;		 
	long	faults;			 
	long	cow_faults;		 
	long	lookups;		 
	long	hits;			 
};
typedef struct vm_statistics	*vm_statistics_t;
typedef struct vm_statistics	vm_statistics_data_t;
extern vm_statistics_data_t	vm_stat;
struct pmap_statistics {
	long		resident_count;	 
	long		wired_count;	 
	long		pageins;	 
};
typedef struct pmap_statistics	*pmap_statistics_t;
typedef struct pmap_statistics	pmap_statistics_data_t;
typedef unsigned int	pt_entry_t;
typedef	volatile long	cpu_set;	 
struct pmap {
	pt_entry_t	*dirbase;	 
	int		ref_count;	 
	struct pmap_statistics	stats;	 
	cpu_set		cpus_using;	 
};
typedef struct pmap	*pmap_t;
pt_entry_t	*pmap_pte();
extern vm_offset_t	pmap_steal_memory();	 
extern unsigned int	pmap_free_pages();	 
extern void		pmap_startup();		 
extern void		pmap_init();		 
extern boolean_t	pmap_next_page();	 
extern void		pmap_virtual_space();	 
extern pmap_t		pmap_create();		 
extern void		pmap_reference();	 
extern void		pmap_destroy();		 
extern void		pmap_enter();		 
extern void		pmap_remove();		 
extern void		pmap_protect();		 
extern void		pmap_activate();	 
extern void		pmap_deactivate();	 
extern void		pmap_page_protect();	 
extern void		pmap_clear_reference();	 
extern boolean_t	pmap_is_referenced();	 
extern void		pmap_clear_modify();	 
extern boolean_t	pmap_is_modified();	 
extern void		pmap_statistics();	 
extern vm_offset_t	pmap_extract();		 
extern boolean_t	pmap_access();		 
extern void		pmap_collect();		 
extern void		pmap_change_wiring();	 
extern pmap_t	kernel_pmap;			 
typedef union vm_map_object {
	struct vm_object	*vm_object;	 
	struct vm_map		*sub_map;	 
} vm_map_object_t;
struct vm_map_links {
	struct vm_map_entry	*prev;		 
	struct vm_map_entry	*next;		 
	vm_offset_t		start;		 
	vm_offset_t		end;		 
};
struct vm_map_entry {
	struct vm_map_links	links;		 
	union vm_map_object	object;		 
	vm_offset_t		offset;		 
	unsigned int
	 		is_shared:1,	 
	 		is_sub_map:1,	 
	 		in_transition:1,  
	 		needs_wakeup:1,   
	 		needs_copy:1;	 
	vm_prot_t		protection;	 
	vm_prot_t		max_protection;	 
	vm_inherit_t		inheritance;	 
	unsigned short		wired_count;	 
	unsigned short		user_wired_count;  
};
typedef struct vm_map_entry	*vm_map_entry_t;
struct vm_map_header {
	struct vm_map_links	links;		 
	int			nentries;	 
	boolean_t		entries_pageable;
};
typedef struct vm_map {
	lock_data_t		lock;		 
	struct vm_map_header	hdr;		 
	pmap_t			pmap;		 
	vm_size_t		size;		 
	int			ref_count;	 
	vm_map_entry_t		hint;		 
	vm_map_entry_t		first_free;	 
	boolean_t		wait_for_space;	 
	boolean_t		wiring_required; 
	unsigned int		timestamp;	 
} *vm_map_t;
typedef struct vm_map_version {
	unsigned int	main_timestamp;
} vm_map_version_t;
typedef struct vm_map_copy {
	int			type;
	vm_offset_t		offset;
	vm_size_t		size;
	union {
	    struct vm_map_header	hdr;	 
	    struct {				 
	    	vm_object_t		object;
		vm_size_t		index;	 
	    } c_o;
	    struct {				 
		int			npages;
		boolean_t		pages_loose;
		kern_return_t		(*cont)();
		char			*cont_args;
		vm_page_t		page_list[8 ];
	    } c_p;
	} c_u;
} *vm_map_copy_t;
typedef	struct {
	vm_map_t	map;
	vm_offset_t	src_addr;
	vm_size_t	src_len;
	vm_offset_t	destroy_addr;
	vm_size_t	destroy_len;
	boolean_t	steal_pages;
}  vm_map_copyin_args_data_t, *vm_map_copyin_args_t;
extern vm_offset_t	kentry_data;
extern vm_offset_t	kentry_data_size;
extern int		kentry_count;
extern void		vm_map_init();		 
extern vm_map_t		vm_map_create();	 
extern vm_map_t		vm_map_fork();		 
extern void		vm_map_reference();	 
extern void		vm_map_deallocate();	 
extern kern_return_t	vm_map_enter();		 
extern kern_return_t	vm_map_find_entry();	 
extern kern_return_t	vm_map_remove();	 
extern kern_return_t	vm_map_protect();	 
extern kern_return_t	vm_map_inherit();	 
extern void		vm_map_print();		 
extern kern_return_t	vm_map_lookup();	 
extern boolean_t	vm_map_verify();	 
extern kern_return_t	vm_map_copyin_common();	 
extern kern_return_t	vm_map_copyin_page_list(); 
extern kern_return_t	vm_map_copyout();	 
extern kern_return_t	vm_map_copy_overwrite(); 
extern void		vm_map_copy_discard();	 
extern kern_return_t	vm_map_copy_discard_cont(); 
extern kern_return_t	vm_map_machine_attribute();
extern kern_return_t	vm_map_pageable_common();
extern vm_object_t	vm_submap_object;
typedef struct ipc_kmsg {
	struct ipc_kmsg *ikm_next, *ikm_prev;
	vm_size_t ikm_size;
	ipc_marequest_t ikm_marequest;
	vm_page_t ikm_page;
	vm_map_copy_t ikm_copy;
	unsigned long ikm_source_node;
	union {
		boolean_t ikmu_norma_acked;	 
		boolean_t ikmu_has_dest_right;	 
	} ikmu;
	mach_msg_header_t ikm_header;
} *ipc_kmsg_t;
extern ipc_kmsg_t ipc_kmsg_cache[1 ];
typedef unsigned int ast_t;
extern volatile ast_t need_ast[1 ];
extern void ast_taken();
struct run_queue {
	queue_head_t		runq[32			];	 
	int			low;		 
	int			count;		 
};
typedef struct run_queue	*run_queue_t;
extern struct run_queue	*rem_runq();
extern struct thread	*choose_thread();
extern queue_head_t	action_queue;	 
 ;
extern int		min_quantum;	 
struct shift {
	int	shift1;
	int	shift2;
};
typedef	struct shift	*shift_t, shift_data_t;
extern unsigned	sched_tick;
struct processor_set {
	struct	run_queue	runq;		 
	queue_head_t		idle_queue;	 
	int			idle_count;	 
	queue_head_t		processors;	 
	int			processor_count;	 
	boolean_t		empty;		 
	queue_head_t		tasks;		 
	int			task_count;	 
	queue_head_t		threads;	 
	int			thread_count;	 
	int			ref_count;	 
	queue_chain_t		all_psets;	 
	boolean_t		active;		 
	struct ipc_port	*	pset_self;	 
	struct ipc_port *	pset_name_self;	 
	int			max_priority;	 
	int			set_quantum;	 
	long			mach_factor;	 
	long			load_average;	 
	long			sched_load;	 
};
typedef	struct processor_set *processor_set_t;
extern struct processor_set	default_pset;
struct processor {
	struct run_queue runq;		 
	queue_chain_t	processor_queue;  
	int		state;		 
	struct thread	*next_thread;	 
	struct thread	*idle_thread;	 
	int		quantum;	 
	boolean_t	first_quantum;	 
	int		last_quantum;	 
	processor_set_t	processor_set;	 
	processor_set_t processor_set_next;	 
	queue_chain_t	processors;	 
	struct ipc_port *processor_self;	 
	int		slot_num;	 
};
typedef struct processor *processor_t;
extern struct processor	processor_array[1 ];
extern queue_head_t		all_psets;
extern int			all_psets_count;
 ;
extern processor_t	master_processor;
extern processor_t	processor_ptr[1 ];
typedef mach_port_t	*processor_array_t;
typedef mach_port_t	*processor_set_array_t;
typedef mach_port_t	*processor_set_name_array_t;
struct time_value {
	long	seconds;
	long	microseconds;
};
typedef	struct time_value	time_value_t;
typedef struct mapped_time_value {
	long seconds;
	long microseconds;
	long check_seconds;
} mapped_time_value_t;
typedef	vm_offset_t	eml_routine_t;
typedef struct eml_dispatch {
	int		ref_count;	 
	int 		disp_count; 	 
	int		disp_min;	 
	eml_routine_t	disp_vector[1];	 
} *eml_dispatch_t;
typedef vm_offset_t	*emulation_vector_t;  
struct task {
	int		ref_count;	 
	boolean_t	active;		 
	vm_map_t	map;		 
	queue_chain_t	pset_tasks;	 
	int		suspend_count;	 
	queue_head_t	thread_list;	 
	int		thread_count;	 
	processor_set_t	processor_set;	 
	boolean_t	may_assign;	 
	boolean_t	assign_active;	 
	int		user_stop_count;	 
	int		priority;		 
	time_value_t	total_user_time;
	time_value_t	total_system_time;
	boolean_t	task_profiled;   
	struct prof_data *profil_buffer; 
	struct ipc_port *itk_self;	 
	struct ipc_port *itk_sself;	 
	struct ipc_port *itk_exception;	 
	struct ipc_port *itk_bootstrap;	 
	struct ipc_port *itk_registered[4	];
	struct ipc_space *itk_space;
	struct 	eml_dispatch	*eml_dispatch;
	long		child_node;	 
};
typedef struct task *task_t;
typedef	mach_port_t *task_array_t;
extern kern_return_t	task_create();
extern kern_return_t	task_terminate();
extern kern_return_t	task_suspend();
extern kern_return_t	task_resume();
extern kern_return_t	task_threads();
extern kern_return_t	task_ports();
extern kern_return_t	task_info();
extern kern_return_t	task_get_special_port();
extern kern_return_t	task_set_special_port();
extern kern_return_t	task_assign();
extern kern_return_t	task_assign_default();
extern void		task_init();
extern void		task_reference();
extern void		task_deallocate();
extern kern_return_t	task_hold();
extern kern_return_t	task_dowait();
extern kern_return_t	task_release();
extern kern_return_t	task_halt();
extern kern_return_t	task_suspend_nowait();
extern task_t		kernel_task_create();
extern task_t	kernel_task;
extern unsigned long elapsed_ticks;  
extern int	hz;		 
extern int	tick;		 
struct timer_elt {
	queue_chain_t	chain;		 
	int		(*fcn)();	 
	char *		param;		 
	unsigned long	ticks;		 
	int		set;		 
};
typedef	struct timer_elt	timer_elt_data_t;
typedef	struct timer_elt	*timer_elt_t;
extern void		set_timeout();
extern boolean_t	reset_timeout();
extern void		timeout();
extern boolean_t	untimeout();
struct timer {
	unsigned	low_bits;
	unsigned	high_bits;
	unsigned	high_bits_check;
	unsigned	tstamp;
};
typedef struct timer		timer_data_t;
typedef	struct timer		*timer_t;
extern timer_t		current_timer[1 ];
extern timer_data_t	kernel_timer[1 ];
struct timer_save {
	unsigned	low;
	unsigned	high;
};
typedef struct timer_save	timer_save_data_t, *timer_save_t;
extern void		timer_read();
extern void		thread_read_times();
extern unsigned		timer_delta();
struct i386_fp_save	{
	unsigned short	fp_control;	 
	unsigned short	fp_unused_1;
	unsigned short	fp_status;	 
	unsigned short	fp_unused_2;
	unsigned short	fp_tag;		 
	unsigned short	fp_unused_3;
	unsigned int	fp_eip;		 
	unsigned short	fp_cs;		 
	unsigned short	fp_opcode;	 
	unsigned int	fp_dp;		 
	unsigned short	fp_ds;		 
	unsigned short	fp_unused_4;
};
struct i386_fp_regs {
	unsigned short	fp_reg_word[5][8];
};
struct i386_tss {
	int		back_link;	 
	int		esp0;		 
	int		ss0;		 
	int		esp1;		 
	int		ss1;		 
	int		esp2;		 
	int		ss2;		 
	int		cr3;		 
	int		eip;
	int		eflags;
	int		eax;
	int		ecx;
	int		edx;
	int		ebx;
	int		esp;		 
	int		ebp;
	int		esi;
	int		edi;
	int		es;
	int		cs;
	int		ss;		 
	int		ds;
	int		fs;
	int		gs;
	int		ldt;		 
	unsigned short	trace_trap;	 
	unsigned short	io_bit_map_offset;
};
typedef	unsigned char	isa_iopb[((((0x3ff		+1)+(8)-1)/(8)) ) ];
struct iopb_tss {
	struct i386_tss	tss;		 
	isa_iopb	bitmap;		 
	unsigned int	barrier;	 
	queue_head_t	io_port_list;	 
	int		iopb_desc[2];	 
};
typedef	struct iopb_tss	*iopb_tss_t;
struct i386_saved_state {
	unsigned int	gs;
	unsigned int	fs;
	unsigned int	es;
	unsigned int	ds;
	unsigned int	edi;
	unsigned int	esi;
	unsigned int	ebp;
	unsigned int	cr2;		 
	unsigned int	ebx;
	unsigned int	edx;
	unsigned int	ecx;
	unsigned int	eax;
	unsigned int	trapno;
	unsigned int	err;
	unsigned int	eip;
	unsigned int	cs;
	unsigned int	efl;
	unsigned int	uesp;
	unsigned int	ss;
	struct v86_segs {
	    unsigned int v86_es;	 
	    unsigned int v86_ds;
	    unsigned int v86_fs;
	    unsigned int v86_gs;
	} v86_segs;
};
struct i386_exception_link {
	struct i386_saved_state *saved_state;
};
struct i386_kernel_state {
	int			k_ebx;	 
	int			k_esp;
	int			k_ebp;
	int			k_edi;
	int			k_esi;
	int			k_eip;
};
struct i386_fpsave_state {
	boolean_t		fp_valid;
	struct i386_fp_save	fp_save_state;
	struct i386_fp_regs	fp_regs;
};
struct v86_assist_state {
	vm_offset_t		int_table;
	unsigned short		int_count;
	unsigned short		flags;	 
};
struct i386_interrupt_state {
	int	es;
	int	ds;
	int	edx;
	int	ecx;
	int	eax;
	int	eip;
	int	cs;
	int	efl;
};
struct i386_machine_state {
	iopb_tss_t		io_tss;
	struct user_ldt	*	ldt;
	struct i386_fpsave_state *ifps;
	struct v86_assist_state	v86s;
};
typedef struct pcb {
	struct i386_interrupt_state iis[2];	 
	struct i386_saved_state iss;
	struct i386_machine_state ims;
} *pcb_t;
struct thread {
	queue_chain_t	links;		 
	run_queue_t	runq;		 
	task_t		task;		 
	queue_chain_t	thread_list;	 
	queue_chain_t	pset_threads;	 
	int		ref_count;	 
	pcb_t		pcb;		 
	vm_offset_t	kernel_stack;	 
	vm_offset_t	stack_privilege; 
	int		wait_event;	 
	int		suspend_count;	 
	kern_return_t	wait_result;	 
	boolean_t	wake_active;	 
	int		state;		 
	void		(*swap_func)();	 
	int		priority;	 
	int		max_priority;	 
	int		sched_pri;	 
	int		depress_priority;  
	unsigned int	cpu_usage;	 
	unsigned int	sched_usage;	 
	unsigned int	sched_stamp;	 
	vm_offset_t	recover;	 
	boolean_t	vm_privilege;	 
	int		user_stop_count;	 
	struct thread *ith_next, *ith_prev;
	mach_msg_return_t ith_state;
	union {
		mach_msg_size_t msize;		 
		struct ipc_kmsg *kmsg;		 
	} data;
	mach_port_seqno_t ith_seqno;		 
	struct ipc_kmsg_queue {
		struct ipc_kmsg *ikmq_base;
	} ith_messages;
	struct ipc_port *ith_self;	 
	struct ipc_port *ith_sself;	 
	struct ipc_port *ith_exception;	 
	struct ipc_port *ith_reply;	 
	mach_port_t ith_mig_reply;	 
	struct ipc_port *ith_rpc_reply;	 
	union {
		struct {
			mach_msg_header_t *msg;
			mach_msg_option_t option;
			mach_msg_size_t rcv_size;
			mach_msg_timeout_t timeout;
			mach_port_t notify;
			struct ipc_object *object;
			struct ipc_mqueue *mqueue;
		} receive;
		struct {
			struct ipc_port *port;
			int exc;
			int code;
			int subcode;
		} exception;
		char *other;		 
	} saved;
	timer_data_t	user_timer;	 
	timer_data_t	system_timer;	 
	timer_save_data_t user_timer_save;   
	timer_save_data_t system_timer_save;   
	unsigned int	cpu_delta;	 
	unsigned int	sched_delta;	 
	timer_elt_data_t timer;		 
	timer_elt_data_t depress_timer;	 
	boolean_t	thread_profiled; 
	boolean_t	thread_profiled_own;
	struct prof_data *profil_buffer; 
	boolean_t	active;		 
	int		ast;    	 
	processor_set_t	processor_set;	 
	processor_t	bound_processor;	 
};
typedef struct thread *thread_t;
typedef	mach_port_t *thread_array_t;
extern thread_t active_threads[1 ];		 
extern vm_offset_t active_stacks[1 ];	 
extern kern_return_t	thread_create();
extern kern_return_t	thread_terminate();
extern kern_return_t	thread_suspend();
extern kern_return_t	thread_resume();
extern kern_return_t	thread_abort();
extern kern_return_t	thread_get_state();
extern kern_return_t	thread_set_state();
extern kern_return_t	thread_get_special_port();
extern kern_return_t	thread_set_special_port();
extern kern_return_t	thread_info();
extern kern_return_t	thread_assign();
extern kern_return_t	thread_assign_default();
extern void		thread_init();
extern void		thread_reference();
extern void		thread_deallocate();
extern void		thread_hold();
extern kern_return_t	thread_dowait();
extern void		thread_release();
extern kern_return_t	thread_halt();
extern void		thread_halt_self();
extern void		thread_set_own_priority();
extern thread_t		kernel_thread();
extern void		reaper_thread();
typedef struct ipc_kmsg_queue *ipc_kmsg_queue_t;
extern void
ipc_kmsg_enqueue( );
extern ipc_kmsg_t
ipc_kmsg_dequeue( );
extern void
ipc_kmsg_rmqueue( );
extern ipc_kmsg_t
ipc_kmsg_queue_next( );
extern void
ipc_kmsg_destroy( );
extern void
ipc_kmsg_clean( );
extern void
ipc_kmsg_free( );
extern mach_msg_return_t
ipc_kmsg_get( );
extern mach_msg_return_t
ipc_kmsg_get_from_kernel( 
);
extern mach_msg_return_t
ipc_kmsg_put( );
extern void
ipc_kmsg_put_to_kernel( );
extern mach_msg_return_t
ipc_kmsg_copyin_header( );
extern mach_msg_return_t
ipc_kmsg_copyin( );
extern void
ipc_kmsg_copyin_from_kernel( );
extern mach_msg_return_t
ipc_kmsg_copyout_header( );
extern mach_msg_return_t
ipc_kmsg_copyout_object( 
);
extern mach_msg_return_t
ipc_kmsg_copyout_body( );
extern mach_msg_return_t
ipc_kmsg_copyout( );
extern mach_msg_return_t
ipc_kmsg_copyout_pseudo( );
extern void
ipc_kmsg_copyout_dest( );
extern mach_msg_return_t
ipc_kmsg_copyin_compat( );
extern mach_msg_return_t
ipc_kmsg_copyout_compat( );
typedef unsigned int ipc_kobject_t;
typedef unsigned int ipc_kobject_type_t;
extern struct ipc_kmsg *
ipc_kobject_server( );
extern void
ipc_kobject_set( );
extern void
ipc_kobject_destroy( );
typedef unsigned int ipc_object_refs_t;
typedef unsigned int ipc_object_bits_t;
typedef unsigned int ipc_object_type_t;
typedef struct ipc_object {
	ipc_object_refs_t io_references;
	ipc_object_bits_t io_bits;
} *ipc_object_t;
extern zone_t ipc_object_zones[	2		];
extern void
ipc_object_reference( );
extern void
ipc_object_release( );
extern kern_return_t
ipc_object_translate( 
);
extern kern_return_t
ipc_object_alloc_dead( );
extern kern_return_t
ipc_object_alloc_dead_name( );
extern kern_return_t
ipc_object_alloc( 
);
extern kern_return_t
ipc_object_alloc_name( 
);
extern mach_msg_type_name_t
ipc_object_copyin_type( );
extern kern_return_t
ipc_object_copyin( 
);
extern void
ipc_object_copyin_from_kernel( );
extern void
ipc_object_destroy( );
extern kern_return_t
ipc_object_copyout( 
);
extern kern_return_t
ipc_object_copyout_name( 
);
extern void
ipc_object_copyout_dest( 
);
extern kern_return_t
ipc_object_rename( );
extern mach_msg_type_name_t
ipc_object_copyout_type_compat( );
extern kern_return_t
ipc_object_copyin_compat( 
);
extern kern_return_t
ipc_object_copyin_header( 
);
extern kern_return_t
ipc_object_copyout_compat( 
);
extern kern_return_t
ipc_object_copyout_name_compat( 
);
extern void
ipc_object_print( );
typedef thread_t ipc_thread_t;
typedef struct ipc_thread_queue {
	ipc_thread_t ithq_base;
} *ipc_thread_queue_t;
extern void
ipc_thread_enqueue( );
extern ipc_thread_t
ipc_thread_dequeue( );
extern void
ipc_thread_rmqueue( );
typedef struct ipc_mqueue {
	struct ipc_kmsg_queue imq_messages;
	struct ipc_thread_queue imq_threads;
} *ipc_mqueue_t;
extern void
ipc_mqueue_init( );
extern void
ipc_mqueue_move( );
extern void
ipc_mqueue_changed( );
extern mach_msg_return_t
ipc_mqueue_send( );
extern mach_msg_return_t
ipc_mqueue_receive( 
);
typedef unsigned int ipc_table_index_t;	 
typedef unsigned int ipc_table_elems_t;	 
typedef struct ipc_table_size {
	ipc_table_elems_t its_size;	 
} *ipc_table_size_t;
extern ipc_table_size_t ipc_table_entries;
extern ipc_table_size_t ipc_table_dnrequests;
extern void
ipc_table_init();
extern vm_offset_t
ipc_table_alloc( );
extern vm_offset_t
ipc_table_realloc( );
extern void
ipc_table_free( );
typedef unsigned int ipc_port_timestamp_t;
typedef struct ipc_port {
	struct ipc_object ip_object;
	union {
		struct ipc_space *receiver;
		struct ipc_port *destination;
		ipc_port_timestamp_t timestamp;
	} data;
	mach_port_t ip_receiver_name;
	ipc_kobject_t ip_kobject;
	mach_port_mscount_t ip_mscount;
	mach_port_rights_t ip_srights;
	mach_port_rights_t ip_sorights;
	struct ipc_port *ip_nsrequest;
	struct ipc_port *ip_pdrequest;
	struct ipc_port_request *ip_dnrequests;
	struct ipc_pset *ip_pset;
	mach_port_seqno_t ip_seqno;		 
	unsigned short ip_msgcount;		 
	unsigned short ip_qlimit;		 
	struct ipc_mqueue ip_messages;
	struct ipc_thread_queue ip_blocked;
	unsigned long ip_norma_uid;
	unsigned long ip_norma_dest_node;
	long ip_norma_stransit;
	long ip_norma_sotransit;
	long ip_norma_xmm_object_refs;
	boolean_t ip_norma_is_proxy;
	boolean_t ip_norma_is_special;
	boolean_t ip_norma_atrium_waiter;
	boolean_t ip_norma_forward;              
	boolean_t ip_norma_sync;                 
	struct ipc_port *ip_norma_atrium;
	struct ipc_port *ip_norma_queue_next;
	struct ipc_port *ip_norma_xmm_object;
	struct ipc_port *ip_norma_next;
	long ip_norma_spare1;
	long ip_norma_spare2;
	long ip_norma_spare3;
	long ip_norma_spare4;
} *ipc_port_t;
typedef ipc_table_index_t ipc_port_request_index_t;
typedef struct ipc_port_request {
	union {
		struct ipc_port *port;
		ipc_port_request_index_t index;
	} notify;
	union {
		mach_port_t name;
		struct ipc_table_size *size;
	} name;
} *ipc_port_request_t;
extern ipc_port_timestamp_t ipc_port_timestamp_data;
extern ipc_port_timestamp_t
ipc_port_timestamp();
extern kern_return_t
ipc_port_dnrequest( 
);
extern kern_return_t
ipc_port_dngrow( );
extern ipc_port_t
ipc_port_dncancel( );
extern void
ipc_port_pdrequest( );
extern void
ipc_port_nsrequest( 
);
extern void
ipc_port_set_qlimit( );
extern void
ipc_port_set_seqno( );
extern void
ipc_port_clear_receiver( );
extern void
ipc_port_init( );
extern kern_return_t
ipc_port_alloc( );
extern kern_return_t
ipc_port_alloc_name( );
extern void
ipc_port_destroy( );
extern boolean_t
ipc_port_check_circularity( );
extern ipc_port_t
ipc_port_lookup_notify( );
extern ipc_port_t
ipc_port_make_send( );
extern ipc_port_t
ipc_port_copy_send( );
extern mach_port_t
ipc_port_copyout_send( );
extern void
ipc_port_release_send( );
extern ipc_port_t
ipc_port_make_sonce( );
extern void
ipc_port_release_sonce( );
extern void
ipc_port_release_receive( );
extern ipc_port_t
ipc_port_alloc_special( );
extern void
ipc_port_dealloc_special( );
extern kern_return_t
ipc_port_alloc_compat( );
extern mach_port_t
ipc_port_copyout_send_compat( );
extern mach_port_t
ipc_port_copyout_receiver( );
extern void
ipc_port_print( );
extern void		kmem_init();
extern kern_return_t	kmem_alloc();
extern kern_return_t	kmem_alloc_pageable();
extern kern_return_t	kmem_alloc_wired();
extern kern_return_t	kmem_alloc_aligned();
extern kern_return_t	kmem_realloc();
extern void		kmem_free();
extern vm_map_t		kmem_suballoc();
extern kern_return_t	kmem_io_map_copyout();
extern void		kmem_io_map_deallocate();
extern vm_map_t	kernel_map;
extern vm_map_t	kernel_pageable_map;
extern vm_map_t ipc_kernel_map;
extern ipc_port_t		host_special_port[	40 ];
struct netvec {
	unsigned long	addr;
	unsigned long	size;
};
typedef	char *	va_list;
struct pginfo {
	unsigned long	pg_msgh_offset;
	boolean_t	pg_page_first;
	boolean_t	pg_page_last;
	boolean_t	pg_copy_last;
	unsigned long	pg_copy_offset;
	unsigned long	pg_copy_size;
	unsigned long	pg_first_seqid;
	unsigned long	pg_remote_port;	 
	unsigned long	pg_copy_index;	 
	unsigned long	pg_copy_npages;	 
	unsigned long	pg_msgh_id;	 
};
struct netipc_hdr {
	unsigned long	checksum;
	unsigned long	type;
	unsigned long	seqid;
	struct pginfo	pg;
	unsigned long	remote;
	unsigned long	ctl;
	unsigned long	ctl_seqid;
	kern_return_t	ctl_status;
	unsigned long	ctl_data;
	unsigned long	incarnation;
};
extern void netipc_thread_lock();
extern void netipc_thread_unlock();
extern void netipc_copy_ungrab();
typedef struct netipc_packet		*netipc_packet_t;
struct netipc_packet {
	unsigned long	dp_type;
	unsigned long	dp_remote;
	unsigned long	dp_seqid;
	unsigned long	dp_first_seqid;
	unsigned long	dp_last_seqid;
	unsigned long	dp_last_unacked;
	ipc_kmsg_t	dp_kmsg;
	unsigned long	dp_offset;
	netipc_packet_t	dp_next;
	ipc_port_t	dp_remote_port;
	vm_map_copy_t	dp_copy;
	unsigned long	dp_copy_index;
	unsigned long	dp_copy_npages;
	unsigned long	dp_copy_last;
	unsigned long	dp_page_list_base;
	boolean_t	dp_has_continuation;
	boolean_t	dp_being_continued;
	boolean_t	dp_reconstruct_complete;
};
typedef struct netipc_packet_state {
	netipc_packet_t		netipc_packet;
	netipc_packet_t		suspended_packet;
	ipc_port_t		suspended_ports;
	unsigned int		state;
} *netipc_packet_state_t;
struct netipc_packet_state netipc_packet_state[	256	];
extern void		netipc_start();
extern boolean_t	norma_ipc_prepare_dest();
extern void		norma_ipc_send_dest();
extern unsigned long	norma_ipc_send_port();
static boolean_t	dp_advance();
netipc_packet_t		netipc_packet_allocate();
void			netipc_packet_deallocate();
void			netipc_set_node_state();
void norma_ipc_queue_port();
zone_t			netipc_packet_zone;
ipc_kmsg_t		netipc_kmsg_cache;
vm_size_t		netipc_kmsg_first_half;
int			netipc_kmsg_cache_hits;		 
int			netipc_kmsg_cache_misses;	 
int			netipc_kmsg_splits;		 
struct netipc_hdr	send_hdr_p;
struct netipc_hdr	send_hdr_k;
struct netipc_hdr	send_hdr_m;
struct netipc_hdr	send_hdr_o;
struct netvec		netvec_p[3];
struct netvec		netvec_k[3];
struct netvec		netvec_m[3];
struct netvec		netvec_o[3];
struct vm_map_copy	netipc_kmsg_more_copy;
struct vm_map_copy	netipc_ool_ports_copy;
unsigned int netipc_output_replenish_cleaned = 0;
extern kern_return_t vm_map_copy_discard_cont();
netipc_send_page(remote, dp)
	unsigned long remote;
	register netipc_packet_t dp;
{
	vm_page_t *page_list;
	unsigned long align;
	unsigned long length;
	unsigned long offset;
	char	*__ntr_func_name__ = "netipc_send_page" ;
	offset = 0;
	align = dp->dp_copy->offset & page_mask;
	if (dp->dp_copy_index < dp->dp_copy_npages - 1) {
		length = page_size	;
	} else {
		length = ((dp->dp_copy->size + align) & page_mask);
		if (length == 0) {
			length = page_size	;
		} else {
			length = ((((unsigned long)(length)) + (4  - 1)
) & ~(4  - 1) ) ;
		}
	}
	do { 	if (!(((((unsigned long)(offset)) & (4  - 1) ) == 0) ))
Assert("../../../../../src/mk/kernel/norma/ipc_output.c", 1246);
} while (	((boolean_t) 0)  )  ;
	do { 	if (!(((((unsigned long)(length)) & (4  - 1) ) == 0) ))
Assert("../../../../../src/mk/kernel/norma/ipc_output.c", 1247);
} while (	((boolean_t) 0)  )  ;
	do { 	if (!(length > 0))
Assert("../../../../../src/mk/kernel/norma/ipc_output.c", 1248);
} while (	((boolean_t) 0)  )  ;
	do { 	if (!(length <= page_size	))
Assert("../../../../../src/mk/kernel/norma/ipc_output.c", 1249);
} while (	((boolean_t) 0)  )  ;
	netipc_set_node_state(&send_hdr_p.type, remote);
	send_hdr_p.pg.pg_copy_offset = align;
	send_hdr_p.pg.pg_msgh_offset = dp->dp_offset;
	send_hdr_p.pg.pg_copy_size = dp->dp_copy->size;
	send_hdr_p.pg.pg_page_first = (dp->dp_copy_index == 0);
	send_hdr_p.pg.pg_page_last = (dp->dp_copy_index ==
				      dp->dp_copy_npages - 1);
	send_hdr_p.pg.pg_copy_last = dp->dp_copy_last;
	send_hdr_p.seqid = dp->dp_seqid;
	send_hdr_p.pg.pg_first_seqid = dp->dp_first_seqid;
	send_hdr_p.pg.pg_remote_port = (unsigned long)
		dp->dp_remote_port->ip_norma_uid;
	send_hdr_p.pg.pg_copy_index = (unsigned long) dp->dp_copy_index;
	send_hdr_p.pg.pg_msgh_id = (unsigned long)
		dp->dp_kmsg->ikm_header.msgh_id;
	send_hdr_p.pg.pg_copy_npages = (unsigned long) dp->dp_copy_npages;
	page_list = &dp->dp_copy->	c_u.c_p.page_list [dp->dp_copy_index];
	if (offset + length > page_size	) {
		vm_offset_t first_half = page_size	 - offset;
		netvec_p[1].addr =
(((vm_offset_t)((page_list[0])->phys_addr) + ((vm_offset_t) 0xc0000000)
)  )  + offset;
		netvec_p[1].size = first_half;
		netvec_p[2].addr =
(((vm_offset_t)((page_list[1])->phys_addr) + ((vm_offset_t) 0xc0000000) )  ) ;
		netvec_p[2].size = length - first_half;
		netipc_send_with_timeout(remote, netvec_p, 3,
					 (unsigned long) dp, dp->dp_seqid);
	} else {
		netvec_p[1].addr =
(((vm_offset_t)((page_list[0])->phys_addr) + ((vm_offset_t) 0xc0000000)
)  )  + offset;
		netvec_p[1].size = length;
		netipc_send_with_timeout(remote, netvec_p, 2,
					 (unsigned long) dp, dp->dp_seqid);
	}
}
Newsgroups: gnu.gcc.bug