From 929d10acf759f3d4b87082cf9a422df2a83b8546 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Mon, 9 Jul 2018 12:22:40 +1000
Subject: [PATCH] tools/mpy-tool.py: Support freezing of floats in obj
 representation D.

---
 tools/mpy-tool.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py
index eeb760a5f..3077e0d38 100755
--- a/tools/mpy-tool.py
+++ b/tools/mpy-tool.py
@@ -347,8 +347,10 @@ class RawCode:
                     n = struct.unpack('<I', struct.pack('<f', self.objs[i]))[0]
                     n = ((n & ~0x3) | 2) + 0x80800000
                     print('    (mp_rom_obj_t)(0x%08x),' % (n,))
-                    print('#else')
-                    print('#error "MICROPY_OBJ_REPR_D not supported with floats in frozen mpy files"')
+                    print('#elif MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_D')
+                    n = struct.unpack('<Q', struct.pack('<d', self.objs[i]))[0]
+                    n += 0x8004000000000000
+                    print('    (mp_rom_obj_t)(0x%016x),' % (n,))
                     print('#endif')
                 else:
                     print('    MP_ROM_PTR(&const_obj_%s_%u),' % (self.escaped_name, i))
-- 
GitLab