README file for porting

diff --git a/arch/README b/arch/README
new file mode 100644
index 0000000..1442c41
--- /dev/null
+++ b/arch/README
@@ -0,0 +1,35 @@
+Each architecture needs a crt0.S file.  The crt0.S assembly routine
+typically corresponds to the following pseudo-C code.  In addition,
+each architecture needs any support routines that gcc-generated code
+expects to find in the system library -- Alpha, for example, needs
+divide subroutines.
+
+
+extern char **environ;
+extern int main(int, char **, char **);
+extern __noreturn exit(int);
+
+__noreturn _start(void)
+{
+  intptr_t *argptr = __stack_pointer(); /* Usually -- e.g. SPARC is special */
+  int argc;
+  char **argv, **envp;
+
+#if STACK_GROWS_UP
+  argc = (int)*argptr--;
+  argv = (char **)argptr;
+  envp = argv-(argc+1);
+#else
+  argc = (int)*argptr++;
+  argv = (char **)argptr;
+  envp = argv+(argc+1);
+#endif
+
+  environ = envp;
+
+  exit(main(argc, argv, envp));
+}
+
+
+
+  
diff --git a/klibc/arch/README b/klibc/arch/README
new file mode 100644
index 0000000..1442c41
--- /dev/null
+++ b/klibc/arch/README
@@ -0,0 +1,35 @@
+Each architecture needs a crt0.S file.  The crt0.S assembly routine
+typically corresponds to the following pseudo-C code.  In addition,
+each architecture needs any support routines that gcc-generated code
+expects to find in the system library -- Alpha, for example, needs
+divide subroutines.
+
+
+extern char **environ;
+extern int main(int, char **, char **);
+extern __noreturn exit(int);
+
+__noreturn _start(void)
+{
+  intptr_t *argptr = __stack_pointer(); /* Usually -- e.g. SPARC is special */
+  int argc;
+  char **argv, **envp;
+
+#if STACK_GROWS_UP
+  argc = (int)*argptr--;
+  argv = (char **)argptr;
+  envp = argv-(argc+1);
+#else
+  argc = (int)*argptr++;
+  argv = (char **)argptr;
+  envp = argv+(argc+1);
+#endif
+
+  environ = envp;
+
+  exit(main(argc, argv, envp));
+}
+
+
+
+