diff --git a/winsup/doc/setup-net.sgml b/winsup/doc/setup-net.sgml
index cc40f312b..547439249 100644
--- a/winsup/doc/setup-net.sgml
+++ b/winsup/doc/setup-net.sgml
@@ -10,6 +10,7 @@ Follow the instructions on each screen to install Cygwin.
DOCTOOL-INSERT-setup-env
+DOCTOOL-INSERT-setup-maxmem
DOCTOOL-INSERT-ntsec
DOCTOOL-INSERT-setup-files
diff --git a/winsup/doc/setup2.sgml b/winsup/doc/setup2.sgml
index 4b2ecf6ef..592a25dc2 100644
--- a/winsup/doc/setup2.sgml
+++ b/winsup/doc/setup2.sgml
@@ -55,6 +55,74 @@ first starts. Most Cygwin applications do not make use of the
+Changing Cygwin's Maximum Memory
+
+
+By default no Cygwin program can allocate more than 384 MB of memory
+(program+data). You should not need to change this default in most
+circumstances. However, if you need to use more real or virtual memory in
+your machine you may add an entry in the either the
+HKEY_LOCAL_MACHINE (to change the limit for all users) or
+HKEY_CURRENT_USER (for just the current user) section of
+the registry.
+
+
+
+Add the DWORD value heap_chunk_in_mb
+and set it to the desired memory limit in decimal MB. It is preferred to do
+this in Cygwin using the regtool program included in the
+Cygwin package.
+(For more information about regtool or the other Cygwin
+utilities, see or use each the
+--help option of each util.) You should always be careful
+when using regtool since damaging your system registry can
+result in an unusable system. This example sets memory limit to 1024 MB:
+
+
+regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
+regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin
+
+
+
+
+Exit all running Cygwin processes and restart them. Memory can be allocated up
+to the size of the system swap space minus any the size of any running
+processes. The system swap should be at least as large as the physically
+installed RAM and can be modified under the System category of the
+Control Panel.
+
+
+
+Here is a small program written by DJ Delorie that tests the
+memory allocation limit on your system:
+
+
+main()
+{
+ unsigned int bit=0x40000000, sum=0;
+ char *x;
+
+ while (bit > 4096)
+ {
+ x = malloc(bit);
+ if (x)
+ sum += bit;
+ bit >>= 1;
+ }
+ printf("%08x bytes (%.1fMb)\n", sum, sum/1024.0/1024.0);
+ return 0;
+}
+
+
+You can compile this program using:
+
+gcc max_memory.c -o max_memory.exe
+
+
+Run the program and it will output the maximum amount of allocatable memory.
+
+
+
Customizing bash