Sun Oct 12 15:03:01 1997 Alexandre Julliard <julliard@lrc.epfl.ch> * [if1632/builtin.c] [if1632/relay.c] Relay debugging entry points are now generated on the fly for Win32 DLLs. * [include/stackframe.h] Added VA_LIST16 type and macros to access arguments on the 16-bit stack. * [memory/global.c] Fixed GlobalHandle32 to work with fixed blocks. * [misc/ddeml.c] (New file) Added a lot of stubs for DDEML functions. * [objects/dc.c] Added Get/SetGraphicsMode(). * [objects/gdiobj.c] [windows/winpos.c] Added a few stubs. * [tools/build.c] Removed 'byte', 'word', 'long' and 'return' entry points for Win32. 'register' functions can no longer take arguments in Win32. The Win32 NE module is now generated by MODULE_CreateDummyModule. CallFrom32 callbacks removed except for register functions. Fri Oct 10 18:22:18 1997 John Harvey <john@division.co.uk> * [graphics/win16drv/Makefile.in] [graphics/win16drv/brush.c] [graphics/win16drv/graphics.c] [graphics/win16drv/init.c] [graphics/win16drv/objects.c] [graphics/win16drv/pen.c] [graphics/win16drv/prtdrv.c] [graphics/win16drv/text.c] [include/callback.h] [include/win16drv.h] Added support for pens and brushes in SelectObject. Added support for LineTo, MoveToEx, PatBlt (very preliminary), Polygon and Rectangle. Text is drawn in the correct place more often. These changes may only work with the Windows Postscript driver since many other drivers now need more GDI support. Tue Oct 7 21:06:23 1997 Kristian Nielsen <kristian.nielsen@risoe.dk> * [debugger/expr.c] Fixed typo for the >> operator. * [loader/task.c] Fixed SwitchStackTo(); it used to return with the new stack placed four bytes too high in memory. * [loader/ne_resource.c] Removed problematic nametable code introduced in Wine 970914. Tue Oct 7 02:24:12 1997 Dimitrie O. Paun <dimi@cs.toronto.edu> * [controls/commctrl.c] Added this files to hold functions from the comctl32.dll Added to this files some functions scattered in different places (such as InitCommonControls) and added some new ones as well. * [include/syscolor.h] [windows/syscolor.c] Added proper entries for all possible COLOR_* values. * [objects/brush.c] Modified GetSysColorBrush to return the correct brush for all possible COLOR_* constants. Sat Oct 4 23:35:20 1997 U.Bonnes <bon@elektron.ikp.physik.th-darmstadt.de> * [loader/module.c] [scheduler/process.c] [win32/environment.c] Another approach to get access to an unrestricted commandline. * [misc/crtdll.c] Make fclose work again. * [if1632/crtdll.spec] Use sprintf for crtdll-sprintf again as e.g. %g is not available for wsprintf. * [misc/wsprintf.c] Make WPR_STRING work in more situations. Added debug output for the wsprintf functions. * [misc/crtdll.c] [misc/main.c] Use argv[0] as comand with CRTDLL_system. Fri Oct 3 14:00:29 MET DST 1997 Jan Willamowius <jan@janhh.shnet.org> * [*/*] Removed some compiler warnings. * [msdos/int15.c] New INT 15 handler.
77 lines
2.5 KiB
C
77 lines
2.5 KiB
C
/*
|
|
* 16-bit mode stack frame layout
|
|
*
|
|
* Copyright 1995 Alexandre Julliard
|
|
*/
|
|
|
|
#ifndef __WINE_STACKFRAME_H
|
|
#define __WINE_STACKFRAME_H
|
|
|
|
#include <string.h>
|
|
#include "windows.h"
|
|
#include "ldt.h"
|
|
|
|
#pragma pack(1)
|
|
|
|
/* 16-bit stack layout after CallFrom16() */
|
|
typedef struct
|
|
{
|
|
DWORD saved_ss_sp; /* 00 saved previous 16-bit stack */
|
|
DWORD ebp; /* 04 full 32-bit content of ebp */
|
|
WORD entry_ip; /* 08 ip of entry point */
|
|
WORD ds; /* 0a ds */
|
|
WORD entry_cs; /* 0c cs of entry point */
|
|
WORD es; /* 0e es */
|
|
DWORD entry_point; /* 10 32-bit entry point to call */
|
|
WORD bp; /* 14 16-bit bp */
|
|
WORD ip; /* 16 return address */
|
|
WORD cs; /* 18 */
|
|
} STACK16FRAME;
|
|
|
|
/* 32-bit stack layout after CallTo16() */
|
|
typedef struct
|
|
{
|
|
DWORD edi; /* 00 saved registers */
|
|
DWORD esi; /* 04 */
|
|
DWORD edx; /* 08 */
|
|
DWORD ecx; /* 0c */
|
|
DWORD ebx; /* 10 */
|
|
DWORD restore_addr; /* 14 return address for restoring code selector */
|
|
DWORD codeselector; /* 18 code selector to restore */
|
|
DWORD ebp; /* 1c saved 32-bit frame pointer */
|
|
DWORD retaddr; /* 20 actual return address */
|
|
DWORD args[1]; /* 24 arguments to 16-bit function */
|
|
} STACK32FRAME;
|
|
|
|
#pragma pack(4)
|
|
|
|
/* Saved 16-bit stack for current process (Win16 only) */
|
|
extern DWORD IF1632_Saved16_ss_sp;
|
|
|
|
#define CURRENT_STACK16 ((STACK16FRAME *)PTR_SEG_TO_LIN(IF1632_Saved16_ss_sp))
|
|
#define CURRENT_DS (CURRENT_STACK16->ds)
|
|
|
|
/* varargs lists on the 16-bit stack */
|
|
|
|
typedef void *VA_LIST16;
|
|
|
|
#define __VA_ROUNDED16(type) \
|
|
((sizeof(type) + sizeof(WORD) - 1) / sizeof(WORD) * sizeof(WORD))
|
|
#define VA_START16(list) ((list) = (VA_LIST16)(CURRENT_STACK16 + 1))
|
|
#define VA_ARG16(list,type) \
|
|
(((list) = (VA_LIST16)((char *)(list) + __VA_ROUNDED16(type))), \
|
|
*((type *)(void *)((char *)(list) - __VA_ROUNDED16(type))))
|
|
#define VA_END16(list) ((void)0)
|
|
|
|
/* Push bytes on the 16-bit stack; return a segptr to the first pushed byte */
|
|
#define STACK16_PUSH(size) \
|
|
(memmove((char*)CURRENT_STACK16-(size),CURRENT_STACK16,sizeof(STACK16FRAME)),\
|
|
IF1632_Saved16_ss_sp -= (size), \
|
|
(SEGPTR)(IF1632_Saved16_ss_sp + sizeof(STACK16FRAME)))
|
|
|
|
/* Pop bytes from the 16-bit stack */
|
|
#define STACK16_POP(size) \
|
|
(memmove((char*)CURRENT_STACK16+(size),CURRENT_STACK16,sizeof(STACK16FRAME)),\
|
|
IF1632_Saved16_ss_sp += (size))
|
|
|
|
#endif /* __WINE_STACKFRAME_H */
|