* Patch by Hans-Joerg Frieden, 06 Dec 2002
  Fix misc problems with AmigaOne support

* Patch by Chris Hallinan, 3 Dec 2002:
  minor cleanup to the MPC8245 EPIC driver

* Patch by Pierre Aubert , 28 Nov 2002
  Add support for external (SIU) interrupts on MPC8xx

* Patch by Pierre Aubert , 28 Nov 2002
  Fix nested syscalls bug in standalone applications

* Patch by David Müller, 27 Nov 2002:
  fix output of "pciinfo" command for CardBus bridge devices.

* Fix bug in TQM8260 board detection - boards got stuck when board ID
  was not readable
diff --git a/common/env_nvram.c b/common/env_nvram.c
index fdfa4fc..76e8438 100644
--- a/common/env_nvram.c
+++ b/common/env_nvram.c
@@ -66,7 +66,25 @@
 extern uchar (*env_get_char)(int);
 extern uchar env_get_char_memory (int index);
 
+#ifdef CONFIG_AMIGAONEG3SE
+uchar env_get_char_spec (int index)
+{
+#ifdef CFG_NVRAM_ACCESS_ROUTINE
+	uchar c;
 
+	nvram_read(&c, CFG_ENV_ADDR+index, 1);
+
+	return c;
+#else
+	DECLARE_GLOBAL_DATA_PTR;
+	uchar retval;
+	enable_nvram();
+	retval = *((uchar *)(gd->env_addr + index));
+	disable_nvram();
+	return retval;
+#endif
+}
+#else
 uchar env_get_char_spec (int index)
 {
 #ifdef CFG_NVRAM_ACCESS_ROUTINE
@@ -81,6 +99,7 @@
 	return *((uchar *)(gd->env_addr + index));
 #endif
 }
+#endif
 
 void env_relocate_spec (void)
 {
@@ -94,13 +113,19 @@
 int saveenv (void)
 {
 	int rcode = 0;
-
+#ifdef CONFIG_AMIGAONEG3SE
+	enable_nvram();
+#endif
 #ifdef CFG_NVRAM_ACCESS_ROUTINE
 	nvram_write(CFG_ENV_ADDR, env_ptr, CFG_ENV_SIZE);
 #else
 	if (memcpy ((char *)CFG_ENV_ADDR, env_ptr, CFG_ENV_SIZE) == NULL)
 		    rcode = 1 ;
 #endif
+#ifdef CONFIG_AMIGAONEG3SE
+	udelay(10000);
+	disable_nvram();
+#endif
 	return rcode;
 }
 
@@ -113,7 +138,9 @@
 int env_init (void)
 {
 	DECLARE_GLOBAL_DATA_PTR;
-
+#ifdef CONFIG_AMIGAONEG3SE
+	enable_nvram();
+#endif
 #if defined(CFG_NVRAM_ACCESS_ROUTINE)
 	ulong crc;
 	uchar data[ENV_SIZE];
@@ -131,7 +158,9 @@
 		gd->env_addr  = (ulong)&default_environment[0];
 		gd->env_valid = 0;
 	}
-
+#ifdef CONFIG_AMIGAONEG3SE
+	disable_nvram();
+#endif
 	return (0);
 }