summaryrefslogblamecommitdiffstats
path: root/private/mvdm/softpc.new/base/ccpu386/c_stack.h
blob: e1722d75da242726729c8107b159be0d695c5e53 (plain) (tree)




















































































































































                                                       
/*[

c_stack.h

LOCAL CHAR SccsID[]="@(#)c_stack.h	1.11 03/03/95";

Stack (and related SP/BP access) Support.
-----------------------------------------

]*/


/*
   SP/BP indicator for stack checking operations.
 */
#define USE_SP FALSE
#define USE_BP TRUE

/*
   Useful defines for tpop(),validate_stack_exists(),
   validate_stack_space() and change_SP() parameters.
 */
#define NR_ITEMS_1 1
#define NR_ITEMS_2 2
#define NR_ITEMS_3 3
#define NR_ITEMS_4 4
#define NR_ITEMS_5 5
#define NR_ITEMS_6 6
#define NR_ITEMS_8 8
#define NR_ITEMS_9 9

#define STACK_ITEM_1 (IUM32)0
#define STACK_ITEM_2 (IUM32)1
#define STACK_ITEM_3 (IUM32)2
#define STACK_ITEM_4 (IUM32)3
#define STACK_ITEM_5 (IUM32)4
#define STACK_ITEM_6 (IUM32)5
#define STACK_ITEM_7 (IUM32)6
#define STACK_ITEM_8 (IUM32)7
#define STACK_ITEM_9 (IUM32)8

#define NULL_BYTE_OFFSET (IUM32)0


IMPORT VOID byte_change_SP
       
IPT1(
	IS32, delta

   );

IMPORT VOID change_SP
       
IPT1(
	IS32, items

   );

IMPORT IU32 get_current_BP IPT0();

IMPORT IU32 GetStackPointer IPT0();

IMPORT VOID set_current_BP
       
IPT1(
	IU32, new_bp

   );

IMPORT VOID set_current_SP
       
IPT1(
	IU32, new_sp

   );

IMPORT IU32 spop IPT0();

IMPORT VOID spush
       
IPT1(
	IU32, data

   );

#ifdef PIG
IMPORT VOID spush_flags
       
IPT1(
	IU32, data

   );
#endif /* PIG */

IMPORT VOID spush16
       
IPT1(
	IU32, data

   );

#ifdef PIG
IMPORT VOID spush16_flags
       
IPT1(
	IU32, data

   );
#endif /* PIG */


IMPORT IU32 tpop
           
IPT2(
	LIN_ADDR, item_offset,
	LIN_ADDR, byte_offset

   );

IMPORT VOID validate_new_stack_space
               
IPT4(
	LIN_ADDR, bytes,
	LIN_ADDR, stack_top,
	CPU_DESCR *, entry,
	IU16, stack_sel

   );

IMPORT VOID validate_stack_exists
           
IPT2(
	BOOL, use_bp,
	LIN_ADDR, nr_items

   );

IMPORT VOID validate_stack_space
           
IPT2(
	BOOL, use_bp,
	LIN_ADDR, nr_items

   );

IMPORT void touch_flags_memory IPT0();
IMPORT void init_flags_esp_list IPT0();
IMPORT void record_flags_addr IPT1(LIN_ADDR, addr);