diff --git a/NOTES.txt b/NOTES.txt
index b4c3179..7c8b7fe 100644
--- a/NOTES.txt
+++ b/NOTES.txt
@@ -1,4 +1,14 @@
 
+23 Apr 05 (memcheck-on-amd64 notes)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If a thread is given an initial stack with address range [lo .. hi],
+we need to tell memcheck that the area [lo - VGA_STACK_REDZONE_SIZE
+.. hi] is valid, rather than just [lo .. hi] as has been the case on
+x86-only systems.  However, am not sure where to look for the 
+call into memcheck that states the new stack area.
+
+
 9 Apr 05 (starting work on memcheck for 32/64-bit and big/little endian)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * get rid of memcheck/mc_asm.h and include/tool_asm.h.  I think 
diff --git a/coregrind/amd64/core_arch.h b/coregrind/amd64/core_arch.h
index 5fdefd3..f2296f8 100644
--- a/coregrind/amd64/core_arch.h
+++ b/coregrind/amd64/core_arch.h
@@ -76,9 +76,6 @@
    asm("movq %%rbp, %0" : "=r" (lval));      \
 } while (0)
 
-// On AMD64, it's ok to access up to 128 bytes below %rsp.
-// The signal handler needs to know this.
-#define VGA_STACK_REDZONE_SIZE 128
 
 /* ---------------------------------------------------------------------
    Architecture-specific part of a ThreadState
diff --git a/coregrind/x86/core_arch.h b/coregrind/x86/core_arch.h
index 69c23c9..c2d2186 100644
--- a/coregrind/x86/core_arch.h
+++ b/coregrind/x86/core_arch.h
@@ -76,10 +76,6 @@
    asm("movl %%ebp, %0" : "=r" (ebp));       \
 } while (0)
 
-// On X86, any access below %esp is illegal.
-// The signal handler needs to know this.
-#define VGA_STACK_REDZONE_SIZE 0
-
 //extern const Char VG_(helper_wrapper_before)[];	/* in dispatch.S */
 //extern const Char VG_(helper_wrapper_return)[];	/* in dispatch.S */
 
diff --git a/include/amd64/tool_arch.h b/include/amd64/tool_arch.h
index 5acac5a..3531fb2 100644
--- a/include/amd64/tool_arch.h
+++ b/include/amd64/tool_arch.h
@@ -30,15 +30,20 @@
 #ifndef __AMD64_TOOL_ARCH_H
 #define __AMD64_TOOL_ARCH_H
 
-/*====================================================================*/
-/*=== Registers, etc                                               ===*/
-/*====================================================================*/
 
-#define VGA_REGPARM(n)
+#define VGA_REGPARM(n)  /* */
+
 
 #define VGA_MIN_INSTR_SIZE    1
 #define VGA_MAX_INSTR_SIZE   16
 
+
+/* How many bytes below the stack pointer are validly addressible?
+   On amd64, the answer is: 128.
+*/
+#define VGA_STACK_REDZONE_SIZE 128
+
+
 #endif   // __AMD64_TOOL_ARCH_H
 
 /*--------------------------------------------------------------------*/
diff --git a/include/x86/tool_arch.h b/include/x86/tool_arch.h
index 7c7d952..1159c4f 100644
--- a/include/x86/tool_arch.h
+++ b/include/x86/tool_arch.h
@@ -30,16 +30,20 @@
 #ifndef __X86_TOOL_ARCH_H
 #define __X86_TOOL_ARCH_H
 
-/*====================================================================*/
-/*=== Registers, etc                                               ===*/
-/*====================================================================*/
 
 #define VGA_REGPARM(n)      __attribute__((regparm(n)))
 
+
 #define VGA_MIN_INSTR_SIZE    1
 #define VGA_MAX_INSTR_SIZE   16
 
 
+/* How many bytes below the stack pointer are validly addressible?
+   On x86, the answer is: none.
+*/
+#define VGA_STACK_REDZONE_SIZE 0
+
+
 #endif   // __X86_TOOL_ARCH_H
 
 /*--------------------------------------------------------------------*/
diff --git a/memcheck/mac_shared.h b/memcheck/mac_shared.h
index c49e2b9..8aa9322 100644
--- a/memcheck/mac_shared.h
+++ b/memcheck/mac_shared.h
@@ -437,163 +437,163 @@
    factoring, rather than eg. using function pointers.  
 */
 
-#define SP_UPDATE_HANDLERS(ALIGNED4_NEW,  ALIGNED4_DIE,       \
-                           ALIGNED8_NEW,  ALIGNED8_DIE,       \
-                           UNALIGNED_NEW, UNALIGNED_DIE)      \
-                                                              \
-void VGA_REGPARM(1) MAC_(new_mem_stack_4)(Addr new_SP)        \
-{                                                             \
-   PROF_EVENT(110, "new_mem_stack_4");                        \
-   if (VG_IS_4_ALIGNED(new_SP)) {                             \
-      ALIGNED4_NEW  ( new_SP );                               \
-   } else {                                                   \
-      UNALIGNED_NEW ( new_SP, 4 );                            \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(die_mem_stack_4)(Addr new_SP)        \
-{                                                             \
-   PROF_EVENT(120, "die_mem_stack_4");                        \
-   if (VG_IS_4_ALIGNED(new_SP)) {                             \
-      ALIGNED4_DIE  ( new_SP-4 );                             \
-   } else {                                                   \
-      UNALIGNED_DIE ( new_SP-4, 4 );                          \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(new_mem_stack_8)(Addr new_SP)        \
-{                                                             \
-   PROF_EVENT(111, "new_mem_stack_8");                        \
-   if (VG_IS_8_ALIGNED(new_SP)) {                             \
-      ALIGNED8_NEW  ( new_SP );                               \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_NEW  ( new_SP   );                             \
-      ALIGNED4_NEW  ( new_SP+4 );                             \
-   } else {                                                   \
-      UNALIGNED_NEW ( new_SP, 8 );                            \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(die_mem_stack_8)(Addr new_SP)        \
-{                                                             \
-   PROF_EVENT(121, "die_mem_stack_8");                        \
-   if (VG_IS_8_ALIGNED(new_SP)) {                             \
-      ALIGNED8_DIE  ( new_SP-8 );                             \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_DIE  ( new_SP-8 );                             \
-      ALIGNED4_DIE  ( new_SP-4 );                             \
-   } else {                                                   \
-      UNALIGNED_DIE ( new_SP-8, 8 );                          \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(new_mem_stack_12)(Addr new_SP)       \
-{                                                             \
-   PROF_EVENT(112, "new_mem_stack_12");                       \
-   if (VG_IS_8_ALIGNED(new_SP)) {                             \
-      ALIGNED8_NEW  ( new_SP   );                             \
-      ALIGNED4_NEW  ( new_SP+8 );                             \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_NEW  ( new_SP   );                             \
-      ALIGNED8_NEW  ( new_SP+4 );                             \
-   } else {                                                   \
-      UNALIGNED_NEW ( new_SP, 12 );                           \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(die_mem_stack_12)(Addr new_SP)       \
-{                                                             \
-   PROF_EVENT(122, "die_mem_stack_12");                       \
-   /* Note the -12 in the test */                             \
-   if (VG_IS_8_ALIGNED(new_SP-12)) {                          \
-      ALIGNED8_DIE  ( new_SP-12 );                            \
-      ALIGNED4_DIE  ( new_SP-4  );                            \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_DIE  ( new_SP-12 );                            \
-      ALIGNED8_DIE  ( new_SP-8  );                            \
-   } else {                                                   \
-      UNALIGNED_DIE ( new_SP-12, 12 );                        \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(new_mem_stack_16)(Addr new_SP)       \
-{                                                             \
-   PROF_EVENT(113, "new_mem_stack_16");                       \
-   if (VG_IS_8_ALIGNED(new_SP)) {                             \
-      ALIGNED8_NEW  ( new_SP   );                             \
-      ALIGNED8_NEW  ( new_SP+8 );                             \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_NEW  ( new_SP    );                            \
-      ALIGNED8_NEW  ( new_SP+4  );                            \
-      ALIGNED4_NEW  ( new_SP+12 );                            \
-   } else {                                                   \
-      UNALIGNED_NEW ( new_SP, 16 );                           \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(die_mem_stack_16)(Addr new_SP)       \
-{                                                             \
-   PROF_EVENT(123, "die_mem_stack_16");                       \
-   if (VG_IS_8_ALIGNED(new_SP)) {                             \
-      ALIGNED8_DIE  ( new_SP-16 );                            \
-      ALIGNED8_DIE  ( new_SP-8  );                            \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_DIE  ( new_SP-16 );                            \
-      ALIGNED8_DIE  ( new_SP-12 );                            \
-      ALIGNED4_DIE  ( new_SP-4  );                            \
-   } else {                                                   \
-      UNALIGNED_DIE ( new_SP-16, 16 );                        \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(new_mem_stack_32)(Addr new_SP)       \
-{                                                             \
-   PROF_EVENT(114, "new_mem_stack_32");                       \
-   if (VG_IS_8_ALIGNED(new_SP)) {                             \
-      ALIGNED8_NEW  ( new_SP    );                            \
-      ALIGNED8_NEW  ( new_SP+8  );                            \
-      ALIGNED8_NEW  ( new_SP+16 );                            \
-      ALIGNED8_NEW  ( new_SP+24 );                            \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_NEW  ( new_SP    );                            \
-      ALIGNED8_NEW  ( new_SP+4  );                            \
-      ALIGNED8_NEW  ( new_SP+12 );                            \
-      ALIGNED8_NEW  ( new_SP+20 );                            \
-      ALIGNED4_NEW  ( new_SP+28 );                            \
-   } else {                                                   \
-      UNALIGNED_NEW ( new_SP, 32 );                           \
-   }                                                          \
-}                                                             \
-                                                              \
-void VGA_REGPARM(1) MAC_(die_mem_stack_32)(Addr new_SP)       \
-{                                                             \
-   PROF_EVENT(124, "die_mem_stack_32");                       \
-   if (VG_IS_8_ALIGNED(new_SP)) {                             \
-      ALIGNED8_DIE  ( new_SP-32 );                            \
-      ALIGNED8_DIE  ( new_SP-24 );                            \
-      ALIGNED8_DIE  ( new_SP-16 );                            \
-      ALIGNED8_DIE  ( new_SP- 8 );                            \
-   } else if (VG_IS_4_ALIGNED(new_SP)) {                      \
-      ALIGNED4_DIE  ( new_SP-32 );                            \
-      ALIGNED8_DIE  ( new_SP-28 );                            \
-      ALIGNED8_DIE  ( new_SP-20 );                            \
-      ALIGNED8_DIE  ( new_SP-12 );                            \
-      ALIGNED4_DIE  ( new_SP-4  );                            \
-   } else {                                                   \
-      UNALIGNED_DIE ( new_SP-32, 32 );                        \
-   }                                                          \
-}                                                             \
-                                                              \
-void MAC_(new_mem_stack) ( Addr a, SizeT len )                \
-{                                                             \
-   PROF_EVENT(115, "new_mem_stack");                          \
-   UNALIGNED_NEW ( a, len );                                  \
-}                                                             \
-                                                              \
-void MAC_(die_mem_stack) ( Addr a, SizeT len )                \
-{                                                             \
-   PROF_EVENT(125, "die_mem_stack");                          \
-   UNALIGNED_DIE ( a, len );                                  \
+#define SP_UPDATE_HANDLERS(ALIGNED4_NEW,  ALIGNED4_DIE,           \
+                           ALIGNED8_NEW,  ALIGNED8_DIE,           \
+                           UNALIGNED_NEW, UNALIGNED_DIE)          \
+                                                                  \
+void VGA_REGPARM(1) MAC_(new_mem_stack_4)(Addr new_SP)            \
+{                                                                 \
+   PROF_EVENT(110, "new_mem_stack_4");                            \
+   if (VG_IS_4_ALIGNED(new_SP)) {                                 \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP );         \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VGA_STACK_REDZONE_SIZE + new_SP, 4 );      \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(die_mem_stack_4)(Addr new_SP)            \
+{                                                                 \
+   PROF_EVENT(120, "die_mem_stack_4");                            \
+   if (VG_IS_4_ALIGNED(new_SP)) {                                 \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-4 );       \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VGA_STACK_REDZONE_SIZE + new_SP-4, 4 );    \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(new_mem_stack_8)(Addr new_SP)            \
+{                                                                 \
+   PROF_EVENT(111, "new_mem_stack_8");                            \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP );         \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP   );       \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+4 );       \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VGA_STACK_REDZONE_SIZE + new_SP, 8 );      \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(die_mem_stack_8)(Addr new_SP)            \
+{                                                                 \
+   PROF_EVENT(121, "die_mem_stack_8");                            \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-8 );       \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-8 );       \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-4 );       \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VGA_STACK_REDZONE_SIZE + new_SP-8, 8 );    \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(new_mem_stack_12)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(112, "new_mem_stack_12");                           \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP   );       \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+8 );       \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP   );       \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+4 );       \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VGA_STACK_REDZONE_SIZE + new_SP, 12 );     \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(die_mem_stack_12)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(122, "die_mem_stack_12");                           \
+   /* Note the -12 in the test */                                 \
+   if (VG_IS_8_ALIGNED(new_SP-12)) {                              \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-12 );      \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-4  );      \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-12 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-8  );      \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VGA_STACK_REDZONE_SIZE + new_SP-12, 12 );  \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(new_mem_stack_16)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(113, "new_mem_stack_16");                           \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP   );       \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+8 );       \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP    );      \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+4  );      \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+12 );      \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VGA_STACK_REDZONE_SIZE + new_SP, 16 );     \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(die_mem_stack_16)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(123, "die_mem_stack_16");                           \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-16 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-8  );      \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-16 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-12 );      \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-4  );      \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VGA_STACK_REDZONE_SIZE + new_SP-16, 16 );  \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(new_mem_stack_32)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_32");                           \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP    );      \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+8  );      \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+16 );      \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+24 );      \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP    );      \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+4  );      \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+12 );      \
+      ALIGNED8_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+20 );      \
+      ALIGNED4_NEW  ( -VGA_STACK_REDZONE_SIZE + new_SP+28 );      \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VGA_STACK_REDZONE_SIZE + new_SP, 32 );     \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VGA_REGPARM(1) MAC_(die_mem_stack_32)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(124, "die_mem_stack_32");                           \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-32 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-24 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-16 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP- 8 );      \
+   } else if (VG_IS_4_ALIGNED(new_SP)) {                          \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-32 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-28 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-20 );      \
+      ALIGNED8_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-12 );      \
+      ALIGNED4_DIE  ( -VGA_STACK_REDZONE_SIZE + new_SP-4  );      \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VGA_STACK_REDZONE_SIZE + new_SP-32, 32 );  \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void MAC_(new_mem_stack) ( Addr a, SizeT len )                    \
+{                                                                 \
+   PROF_EVENT(115, "new_mem_stack");                              \
+   UNALIGNED_NEW ( -VGA_STACK_REDZONE_SIZE + a, len );            \
+}                                                                 \
+                                                                  \
+void MAC_(die_mem_stack) ( Addr a, SizeT len )                    \
+{                                                                 \
+   PROF_EVENT(125, "die_mem_stack");                              \
+   UNALIGNED_DIE ( -VGA_STACK_REDZONE_SIZE + a, len );            \
 }
 
 #endif   /* __MAC_SHARED_H */
