Path: utzoo!utgpu!utstat!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!bloom-beacon!apple!amdcad!crackle!tim From: tim@crackle.amd.com (Tim Olson) Newsgroups: comp.arch Subject: Re: RISC & context switches Message-ID: <24431@amdcad.AMD.COM> Date: 13 Feb 89 19:46:26 GMT References: <784@atanasoff.cs.iastate.edu> <7239@june.cs.washington.edu> <89Feb12.125852est.10867@ephemeral.ai.toronto.edu> <1101@wasatch.UUCP> Sender: news@amdcad.AMD.COM Reply-To: tim@amd.com (Tim Olson) Organization: Advanced Micro Devices, Inc. Sunnyvale CA Lines: 25 Summary: Expires: Sender: Followup-To: In article <1101@wasatch.UUCP> moore%cdr.utah.edu.UUCP@wasatch.UUCP (Tim Moore) writes: | In article <89Feb12.125852est.10867@ephemeral.ai.toronto.edu> bradb@ai.toronto.edu (Brad Brown) writes: | | )There is a somewhat related problem when you make a subroutine call -- | )the calling function usually has to save its registers so it gets it's | )"context" restored when the function returns. Machines like MIPS have | )made use of their very large number of registers (192?) by having a pointer | )to one of the registers that is effectively the base pointer for the | )stack of registers that the currently executing function can use. | | You're confusing MIPS and SPARC here. The MIPS chips have a fairly | conventional set of general registers; SPARC has a large file of | registers that are divided into "windows" in the manner you describe. I think he was talking about the Am29000 (192 registers). The 29k has 64 globals and 128 locals, all of which are accessible by the instructions. An internal stack pointer allows a register-window implementation that uses variable-sized windows (tailored to the size of each individual function's needs), rather than the fixed-sized windows of the SPARC. -- Tim Olson Advanced Micro Devices (tim@crackle.amd.com)