diff options
Diffstat (limited to 'sim/ppc/emul_chirp.h')
-rw-r--r-- | sim/ppc/emul_chirp.h | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/sim/ppc/emul_chirp.h b/sim/ppc/emul_chirp.h deleted file mode 100644 index 6e431ba4d31..00000000000 --- a/sim/ppc/emul_chirp.h +++ /dev/null @@ -1,74 +0,0 @@ -/* This file is part of the program psim. - - Copyright (C) 1994-1997, Andrew Cagney <cagney@highland.com.au> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see <http://www.gnu.org/licenses/>. - - */ - - -#ifndef _EMUL_CHIRP_H_ -#define _EMUL_CHIRP_H_ - -/* EMUL_CHIRP: - - The emulation of the OpenBoot client interface (as defined in 1275) - illustrates how it is possible for PSIM to implement an interface - that is both running in virtual memory and is called using a - standard function call interface. - - The OpenBoot client interface is implemented by using two - instructions: - - client_interface: - <emul_call> - blr - - A client program makes a function call to `client_interface' using - the `bl' instruction. The simulator will then execute the - <emul_call> instruction (which calls emul_chirp) and then the `blr' - which will return to the caller. - - In addition to providing the `client_interface' entry point, while - a client request is being handled, emul_chirp patches (well it will - one day) the data access exception vector with a <emul_call> - instruction. By doing this, emul_chirp is able to catch and handle - any invalid data accesses it makes while emulating a client call. - - When such an exception occures, emul_chirp is able to recover by - restoring the processor and then calling the clients callback - interface so that the client can recover from the data exception. - - Handling this are the emul_chirp states: - - serving---. - / | - Emulation compleated ^ v Client makes call to - - restore int vectors | | emulated interface - ^ v - patch exception vectors - | / - `-emulating-. emulating the request - / | - | v Emulation encounters - Client callback recovers ^ | data access exception - from data exception and | v - re-enable vm - returns. ^ | - call client callback - - restart request | / - `--faulting - */ - - -extern const os_emul emul_chirp; - -#endif |