diff --git a/generator/sections/gen-section-memory.c b/generator/sections/gen-section-memory.c
new file mode 100644
index 0000000..dfa713f
--- /dev/null
+++ b/generator/sections/gen-section-memory.c
@@ -0,0 +1,59 @@
+/**
+ * Functions for generating psuedo-random CPER platform memory error sections.
+ * 
+ * Author: Lawrence.Tang@arm.com
+ **/
+
+#include <stdlib.h>
+#include "../../edk/BaseTypes.h"
+#include "../gen-utils.h"
+#include "gen-sections.h"
+
+//Generates a single psuedo-random platform memory error section, saving the resulting address to the given
+//location. Returns the size of the newly created section.
+size_t generate_section_memory(void** location)
+{
+    //Create random bytes.
+    int size = 80;
+    UINT8* bytes = generate_random_bytes(size);
+    
+    //Set reserved areas to zero.
+    UINT64* validation = (UINT64*)bytes;
+    *validation &= 0x2FFFFF; //Validation 22-63
+    *(bytes + 73) &= ~0b11100; //Extended bits 2-4
+
+    //Fix values that could be above range.
+    *(bytes + 72) = rand() % 16; //Memory error type
+
+    //Fix error status.
+    create_valid_error_section(bytes + 8);
+
+    //Set return values, exit.
+    *location = bytes;
+    return size;
+}
+
+//Generates a single psuedo-random memory 2 error section, saving the resulting address to the given
+//location. Returns the size of the newly created section.
+size_t generate_section_memory2(void** location)
+{
+    //Create random bytes.
+    int size = 96;
+    UINT8* bytes = generate_random_bytes(size);
+    
+    //Set reserved areas to zero.
+    UINT64* validation = (UINT64*)bytes;
+    *validation &= 0x2FFFFF; //Validation 22-63
+    *(bytes + 63) = 0; //Reserved byte 63
+
+    //Fix values that could be above range.
+    *(bytes + 61) = rand() % 16; //Memory error type
+    *(bytes + 62) = rand() % 2; //Status
+
+    //Fix error status.
+    create_valid_error_section(bytes + 8);
+
+    //Set return values, exit.
+    *location = bytes;
+    return size;
+}
\ No newline at end of file
