diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index 26fd8c933effdd9177a895a1f4a591922fd9bf1b..c472289351ad8b817fd35c3befabf42e54cc9dc3 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -397,7 +397,7 @@ public:
         : ServiceFramework("IStorageAccessor"), buffer(std::move(buffer)) {
         static const FunctionInfo functions[] = {
             {0, &IStorageAccessor::GetSize, "GetSize"},
-            {10, nullptr, "Write"},
+            {10, &IStorageAccessor::Write, "Write"},
             {11, &IStorageAccessor::Read, "Read"},
         };
         RegisterHandlers(functions);
@@ -415,6 +415,22 @@ private:
         NGLOG_DEBUG(Service_AM, "called");
     }
 
+    void Write(Kernel::HLERequestContext& ctx) {
+        IPC::RequestParser rp{ctx};
+
+        const u64 offset{rp.Pop<u64>()};
+        const std::vector<u8> data{ctx.ReadBuffer()};
+
+        ASSERT(offset + data.size() <= buffer.size());
+
+        std::memcpy(&buffer[offset], data.data(), data.size());
+
+        IPC::ResponseBuilder rb{rp.MakeBuilder(2, 0, 0)};
+        rb.Push(RESULT_SUCCESS);
+
+        NGLOG_DEBUG(Service_AM, "called, offset={}", offset);
+    }
+
     void Read(Kernel::HLERequestContext& ctx) {
         IPC::RequestParser rp{ctx};