Subject: Re: SIMH runs NetBSD/vax
To: Eric Smith <eric@brouhaha.com>
From: Olaf Seibert <rhialto@polderland.nl>
List: port-vax
Date: 03/15/2002 22:53:22
On Fri 15 Mar 2002 at 10:13:21 -0800, Eric Smith wrote:
> Changing the semantics of VAX instructions (even effective NOPs) still
> sounds like a bad idea to me.  And it's completely unnecessary, since
> simulators like SIMH can be updated to simply detect the existing busy
> wait loop and do the right thing, without needing any changes to the OS.

I notice that the idle loop in -current is shorter than in 1.5.x. The
newer version is, I would say, much easier to detect because it is a
very tight loop which should be fairly easy to detect:

from sys/arch/vax/vax/subr.s,v 1.61 2002/02/10 22:06:45 thorpej Exp $

1:	tstl	_C_LABEL(sched_whichqs)	# Anything ready to run?
	beql	1b			# no, run the idle loop again.

The idle loop I saw with 1.5 was testing 2 variables in the loop:

from sys/arch/vax/vax/subr.s,v 1.48.2.1 2000/08/02 20:01:54 ragge Exp $	

1:	tstl	_uvm+UVM_PAGE_IDLE_ZERO
	beql	2f
#if 0
	calls	$0,_uvm_pageidlezero
#endif
2:	tstl	_sched_whichqs		# Anything ready to run?
	beql	1b			# no, continue to loop

This construct is of course a lot more difficult to detect efficiently,
although the branch forward over 0 bytes might provide a clue.

I am looking through the source of SIMH to see if it is easy to put in a
quick hack for this, but it doesn't look like it.

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert - rhialto@polder --They that can give up essential 
\X/ land.nl --liberty to purchase a little temporary safety
--------------deserve neither liberty or safety. - Benjamin Franklin, 1759
---People will accept your ideas much more readily if you tell them that
---Benjamin Franklin said it first. - Unknown