mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
2.0 KiB
149 lines
2.0 KiB
/*[
|
|
|
|
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);
|
|
|