From 5a08545794cefc9fd9450707e739784c8c84839e Mon Sep 17 00:00:00 2001
From: iceman1001 <iceman@iuse.se>
Date: Fri, 7 Oct 2016 00:12:09 +0200
Subject: [PATCH 1/1] ADD:  added a compiling flag -DHAS_512_FLASH  i
 common/Makefile.common,  to be used for PM3 devices with 512KB.  Original
 commit from @hewitt

---
 bootrom/bootrom.c      | 6 +++++-
 client/flash.c         | 8 +++++++-
 common/Makefile.common | 1 +
 common/ldscript.common | 3 ++-
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/bootrom/bootrom.c b/bootrom/bootrom.c
index 44bfaba6..26231b01 100644
--- a/bootrom/bootrom.c
+++ b/bootrom/bootrom.c
@@ -275,7 +275,11 @@ void BootROM(void)
 	AT91C_BASE_EFC0->EFC_FMR =
 		AT91C_MC_FWS_1FWS |
 		MC_FLASH_MODE_MASTER_CLK_IN_MHZ(48);
-
+#ifdef HAS_512_FLASH
+	AT91C_BASE_EFC1->EFC_FMR =
+		AT91C_MC_FWS_1FWS |
+		MC_FLASH_MODE_MASTER_CLK_IN_MHZ(48);
+#endif	
     // Initialize all system clocks
     ConfigClocks();
 
diff --git a/client/flash.c b/client/flash.c
index 576f0d27..b0ae46b3 100644
--- a/client/flash.c
+++ b/client/flash.c
@@ -28,7 +28,13 @@ int OpenProxmark(size_t i);
 unsigned int current_command = CMD_UNKNOWN;
 
 #define FLASH_START            0x100000
-#define FLASH_SIZE             (256*1024)
+
+#ifdef HAS_512_FLASH
+# define FLASH_SIZE             (512*1024)
+#else
+# define FLASH_SIZE             (256*1024)
+#endif
+
 #define FLASH_END              (FLASH_START + FLASH_SIZE)
 #define BOOTLOADER_SIZE        0x2000
 #define BOOTLOADER_END         (FLASH_START + BOOTLOADER_SIZE)
diff --git a/common/Makefile.common b/common/Makefile.common
index f5640bc9..477cd6a3 100644
--- a/common/Makefile.common
+++ b/common/Makefile.common
@@ -59,6 +59,7 @@ DETECTED_OS=Windows
 
 endif
 
+APP_CFLAGS += -DHAS_512_FLASH
 
 # Also search prerequisites in the common directory (for usb.c), the fpga directory (for fpga.bit), and the zlib directory
 VPATH = . ../common ../fpga ../zlib
diff --git a/common/ldscript.common b/common/ldscript.common
index ea57ec24..c0134ffd 100644
--- a/common/ldscript.common
+++ b/common/ldscript.common
@@ -10,11 +10,12 @@ ms of the GNU GPL, version 2 or,
 */
 
 /* AT91SAM7S256 has 256k Flash and 64k RAM */
+/* AT91SAM7S512 has 512k Flash and 64k RAM */
 MEMORY 
 {
 	bootphase1 : ORIGIN = 0x00100000, LENGTH = 0x200             /* Phase 1 bootloader: Copies real bootloader to RAM */
 	bootphase2 : ORIGIN = 0x00100200, LENGTH = 0x2000 - 0x200    /* Main bootloader code, stored in Flash, executed from RAM */
-	osimage    : ORIGIN = 0x00102000, LENGTH = 256K - 0x2000     /* Place where the main OS will end up */
+	osimage    : ORIGIN = 0x00102000, LENGTH = 512K - 0x2000     /* Place where the main OS will end up */
 	ram        : ORIGIN = 0x00200000, LENGTH = 64K - 0x20        /* RAM, minus small common area */
 	commonarea : ORIGIN = 0x00200000 + 64K - 0x20, LENGTH = 0x20 /* Communication between bootloader and main OS */
 }
-- 
2.39.5