<<>> <> <> <> <<>> DIRECTORY SPARCArchitecture, SPARCManger; SPARCBreakpoint: CEDAR DEFINITIONS ~ { <<>> <> <> <> << -- allocate a register window and a register save area.>> <> <> << -- save_regs(@registerSaveArea).>> <> <> <> << -- clientProc(clientData).>> <> <> << -- restore_regs(@registerSaveArea).>> <> << -- deallocate the register window and register save area.>> <<>> <> registerSaveArea: NAT ~ 64 * BYTES[SPARCArchitecture.SPARCContents]; <<64 words for saving the rest of the registers.>> <> <> PatchStruct: TYPE ~ MACHINE DEPENDENT RECORD [ closureCaller: ClosureCaller, manger: SPARCManger.Manger ]; ClosureCaller: TYPE ~ MACHINE DEPENDENT RECORD [ save: SPARCArchitecture.SPARCInstruction, callSaveRegs: SPARCArchitecture.SPARCInstruction, argSaveAreaOnce: SPARCArchitecture.SPARCInstruction, <> argHiClientData: SPARCArchitecture.SPARCInstruction, callClientProc: SPARCArchitecture.SPARCInstruction, argLoClientData: SPARCArchitecture.SPARCInstruction, <> callRestoreRegs: SPARCArchitecture.SPARCInstruction, argSaveAreaAgain: SPARCArchitecture.SPARCInstruction, <> restore: SPARCArchitecture.SPARCInstruction ]; }.