blob: 3a1bf2de1f7624c8c3d8c6b7ea807fe2755a983b [file] [log] [blame]
/*
* 16-bit mode stack frame layout
*
* Copyright 1995 Alexandre Julliard
*/
#ifndef WINE_STACKFRAME_H
#define WINE_STACKFRAME_H
#include <windows.h>
#include "ldt.h"
#ifndef WINELIB
#pragma pack(1)
#endif
typedef struct
{
WORD saved_ss; /* saved previous 16-bit stack */
WORD saved_bp;
WORD saved_sp;
WORD ds; /* 16-bit ds */
DWORD entry_point WINE_PACKED; /* entry point to call */
WORD ordinal_number; /* ordinal number of entry point */
WORD dll_id; /* DLL id of entry point */
WORD bp; /* 16-bit bp */
WORD ip; /* return address */
WORD cs;
WORD args[1]; /* arguments to API function */
} STACK16FRAME;
#ifndef WINELIB
#pragma pack(4)
#endif
extern WORD IF1632_Saved16_ss;
extern WORD IF1632_Saved16_sp;
extern WORD IF1632_Saved16_bp;
#define CURRENT_STACK16 \
((STACK16FRAME *)PTR_SEG_OFF_TO_LIN(IF1632_Saved16_ss,IF1632_Saved16_sp))
#define CURRENT_DS (CURRENT_STACK16->ds)
#endif /* WINE_STACKFRAME_H */