fis-gtm/sr_port/op_hardret.c

39 lines
1.1 KiB
C

/****************************************************************
* *
* Copyright 2001 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "rtnhdr.h"
#include "stack_frame.h"
#include "op.h"
#include "unwind_nocounts.h"
#include "dm_setup.h"
GBLREF stack_frame *frame_pointer;
void op_hardret(void)
{
bool dmode;
dmode = unwind_nocounts();
assert(frame_pointer->old_frame_pointer);
assert(SFT_COUNT == frame_pointer->type);
/* QUIT in dmode should
+ re-install SFT_DM frame that would have been unwound by unwind_nocounts
+ not unwind the associated SFT_COUNT frame that lies below SFT_DM frame
to re-enter dmode and to preserve all mvals associated with level-1. */
if (!dmode)
op_unwind();
else
dm_setup();
return;
}/* eor */