Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rochester!cornell!uw-beaver!mit-eddie!ll-xn!cit-vax!ucla-cs!zen!ucbvax!decvax!decwrl!pyramid!voder!apple!lsr From: lsr@apple.UUCP (Larry Rosenstein) Newsgroups: comp.sys.m68k Subject: Re: How does one implement VM in a 68000? Message-ID: <1251@apple.UUCP> Date: Thu, 2-Jul-87 12:26:11 EDT Article-I.D.: apple.1251 Posted: Thu Jul 2 12:26:11 1987 Date-Received: Sat, 4-Jul-87 07:03:37 EDT References: <1029@bloom-beacon.MIT.EDU> <2351@hoptoad.uucp> Reply-To: lsr@apple.UUCP (Larry Rosenstein) Organization: Advanced Technology Group, Apple Computer Lines: 27 In article <2351@hoptoad.uucp> gnu@hoptoad.uucp (John Gilmore) writes: > >On the Macintosh, I understand that Apple did something similar for >procedure calls to non-resident libraries; they figured out what the >chip would do with an instruction like "jsr a0@" to a bad address, and >if it happens, they fix it up. Half true. This was done on the Lisa, not the Macintosh. Procedure calls and returns only involved a limited number of instructions, and the O/S knew how to restart them. This gave us the ability to dynamically load and unload code segments. Since references to data segments could be done with a variety of instructions, the Lisa O/S could not dynamically load data segments. (The Lisa also used the stack expansion technique described earlier.) The Macintosh dynamically loads segments using a totally different scheme, and cannot (easily) unload a segment is being used somewhere on the call stack. -- Larry Rosenstein Object Specialist Apple Computer AppleLink: Rosenstein1 UUCP: {sun, voder, nsc, mtxinu, dual}!apple!lsr CSNET: lsr@Apple.com