nginx-0.0.11-2004-09-21-19:47:05 import
diff --git a/auto/os/solaris b/auto/os/solaris
index 65bda26..bd6559a 100644
--- a/auto/os/solaris
+++ b/auto/os/solaris
@@ -25,6 +25,18 @@
 esac
 
 
+case $PLATFORM in
+
+    *:sun4u)
+        CFLAGS="$CFLAGS -mcpu=v9"
+    ;;
+
+    *)
+    ;;
+
+esac
+
+
 if [ $ZLIB_ASM != NO ]; then
     echo "$0: error: the --with-zlib-asm=CPU option is not supported"
     echo "on that platform"
diff --git a/src/core/ngx_times.c b/src/core/ngx_times.c
index 2c9985f..b6d5a3f 100644
--- a/src/core/ngx_times.c
+++ b/src/core/ngx_times.c
@@ -79,7 +79,7 @@
     ngx_cached_http_time.len = sizeof("Mon, 28 Sep 1970 06:00:00 GMT") - 1;
     ngx_cached_http_log_time.len = sizeof("28/Sep/1970:12:00:00 +0600") - 1;
 
-#if (TIME_T_SIZE > SIG_ATOMIC_T_SIZE)
+#if (NGX_THREADS && (TIME_T_SIZE > SIG_ATOMIC_T_SIZE))
     ngx_cached_time = &cached_time[0];
 #endif
 
@@ -132,7 +132,7 @@
         slot++;
     }
 
-#if (TIME_T_SIZE > SIG_ATOMIC_T_SIZE)
+#if (NGX_THREADS && (TIME_T_SIZE > SIG_ATOMIC_T_SIZE))
     ngx_cached_time = &cached_time[slot];
 #endif
 
diff --git a/src/http/modules/ngx_http_gzip_filter.c b/src/http/modules/ngx_http_gzip_filter.c
index dc101b7..1a37378 100644
--- a/src/http/modules/ngx_http_gzip_filter.c
+++ b/src/http/modules/ngx_http_gzip_filter.c
@@ -440,8 +440,9 @@
          * Besides we free this memory as soon as the gzipping will complete
          * and do not wait while a whole response will be sent to a client.
          *
-         * 8K is for zlib deflate_state.  It takes 5816 bytes on x86
-         * and 5920 bytes on amd64.
+         * 8K is for zlib deflate_state, it takes
+         *  * 5816 bytes on x86 and sparc64 (32-bit mode)
+         *  * 5920 bytes on amd64 and sparc64
          */
 
         ctx->allocated = 8192 + (1 << (wbits + 2)) + (1 << (memlevel + 9));
@@ -803,9 +804,7 @@
     if (alloc % 512 != 0) {
 
         /*
-         * The zlib deflate_state allocation, it takes 5816 bytes on x86
-         * and 5920 bytes on amd64.
-         * We allocate 8K.
+         * the zlib deflate_state allocation, it takes about 6K, we allocate 8K
          */
 
         alloc = (alloc + ngx_pagesize - 1) & ~(ngx_pagesize - 1);
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 4dd1e82..8ecdfd1 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -218,9 +218,15 @@
 
 
 typedef struct {
-    ngx_http_request_t  *request;
-    ngx_array_t          large_buffers;
-    ngx_uint_t           pipeline;      /* unsigned  pipeline:1; */
+    ngx_http_request_t   *request;
+
+    ngx_buf_t           **busy;
+    ngx_uint_t            nbusy;
+
+    ngx_buf_t           **free;
+    ngx_uint_t            nfree;
+
+    ngx_uint_t            pipeline;      /* unsigned  pipeline:1; */
 } ngx_http_connection_t;
 
 
diff --git a/src/os/unix/ngx_atomic.h b/src/os/unix/ngx_atomic.h
index 41c6704..7f74038 100644
--- a/src/os/unix/ngx_atomic.h
+++ b/src/os/unix/ngx_atomic.h
@@ -86,7 +86,7 @@
 
         __asm__ volatile (
 
-        "casa [%1]ASI_P, %2, %0"
+        "casa [%1] 0x80, %2, %0"
 
         : "+r" (res) : "r" (value), "r" (old));
 
@@ -112,7 +112,7 @@
 
     __asm__ volatile (
 
-    "casa [%1]ASI_P, %2, %0"
+    "casa [%1] 0x80, %2, %0"
 
     : "+r" (res) : "r" (lock), "r" (old));
 
@@ -124,8 +124,8 @@
 typedef volatile uint32_t  ngx_atomic_t;
 
 /* STUB */
-#define ngx_atomic_inc(x)   (*(x))++;
-#define ngx_atomic_dec(x)   (*(x))--;
+#define ngx_atomic_inc(x)   ++(*(x));
+#define ngx_atomic_dec(x)   --(*(x));
 #define ngx_atomic_cmp_set(lock, old, set)   1
 /**/
 
diff --git a/src/os/unix/ngx_solaris_sendfilev_chain.c b/src/os/unix/ngx_solaris_sendfilev_chain.c
index d249e81..f6dca9c 100644
--- a/src/os/unix/ngx_solaris_sendfilev_chain.c
+++ b/src/os/unix/ngx_solaris_sendfilev_chain.c
@@ -18,8 +18,7 @@
     int             fd;
     u_char         *prev;
     off_t           fprev, sprev, send, aligned;
-    size_t          size, sent;
-    ssize_t         n;
+    ssize_t         size, sent, n;
     ngx_int_t       eintr, complete;
     ngx_err_t       err;
     sendfilevec_t  *sfv, sfvs[NGX_SENDFILEVECS];