(Preliminary) CONTEXT structure for SPARC added.
diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c
index 07e161a..ee0425a 100644
--- a/dlls/ntdll/exception.c
+++ b/dlls/ntdll/exception.c
@@ -27,7 +27,12 @@
#ifdef __i386__
# define GET_IP(context) ((LPVOID)(context)->Eip)
-#else
+#endif
+#ifdef __sparc__
+# define GET_IP(context) ((LPVOID)(context)->pc)
+#endif
+
+#ifndef GET_IP
# error You must define GET_IP for this CPU
#endif /* __i386__ */
diff --git a/include/winnt.h b/include/winnt.h
index fd62044..b39f46d 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -533,6 +533,82 @@
#endif /* __PPC__ */
+#ifdef __sparc__
+
+/*
+ * FIXME:
+ *
+ * There is no official CONTEXT structure defined for the SPARC
+ * architecture, so I just made one up.
+ *
+ * This structure is valid only for 32-bit SPARC architectures,
+ * not for 64-bit SPARC.
+ *
+ * Note that this structure contains only the 'top-level' registers;
+ * the rest of the register window chain is not visible.
+ *
+ * The layout follows the Solaris 'prgregset_t' structure.
+ *
+ */
+
+#define CONTEXT_SPARC 0x10000000
+
+#define CONTEXT_CONTROL (CONTEXT_SPARC | 0x00000001)
+#define CONTEXT_FLOATING_POINT (CONTEXT_SPARC | 0x00000002)
+#define CONTEXT_INTEGER (CONTEXT_SPARC | 0x00000004)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+typedef struct _CONTEXT
+{
+ /* These are selected by CONTEXT_INTEGER */
+ DWORD g0;
+ DWORD g1;
+ DWORD g2;
+ DWORD g3;
+ DWORD g4;
+ DWORD g5;
+ DWORD g6;
+ DWORD g7;
+ DWORD o0;
+ DWORD o1;
+ DWORD o2;
+ DWORD o3;
+ DWORD o4;
+ DWORD o5;
+ DWORD o6;
+ DWORD o7;
+ DWORD l0;
+ DWORD l1;
+ DWORD l2;
+ DWORD l3;
+ DWORD l4;
+ DWORD l5;
+ DWORD l6;
+ DWORD l7;
+ DWORD i0;
+ DWORD i1;
+ DWORD i2;
+ DWORD i3;
+ DWORD i4;
+ DWORD i5;
+ DWORD i6;
+ DWORD i7;
+
+ /* These are selected by CONTEXT_CONTROL */
+ DWORD psr;
+ DWORD pc;
+ DWORD npc;
+ DWORD y;
+ DWORD wim;
+ DWORD tbr;
+
+ /* FIXME: floating point registers missing */
+
+} CONTEXT;
+
+#endif
+
#if !defined(CONTEXT_FULL) && !defined(RC_INVOKED)
#error You need to define a CONTEXT for your CPU
#endif