.syntax unified #include "version.h" .section .header, "a" .type g_header, %object .size g_header, .-g_header // Firmware header for both Trezor One and Trezor T. // Trezor One must have bootloader version >= 1.8.0 (before that version the hdrlen used to be reset vector) g_header: .byte 'T','R','Z','F' // magic .word g_header_end - g_header // hdrlen #ifdef TREZOR_MODEL_T .word 0 // expiry #else .word 1 // expiry #endif .word _codelen // codelen .byte VERSION_MAJOR // vmajor .byte VERSION_MINOR // vminor .byte VERSION_PATCH // vpatch .byte VERSION_BUILD // vbuild .byte FIX_VERSION_MAJOR // fix_vmajor .byte FIX_VERSION_MINOR // fix_vminor .byte FIX_VERSION_PATCH // fix_vpatch .byte FIX_VERSION_BUILD // fix_vbuild .word HW_MODEL // type of the designated hardware .byte HW_REVISION // revision of the designated hardware .byte VERSION_MONOTONIC // monotonic version of the binary . = . + 2 // reserved . = . + 512 // hash1 ... hash16 #if !defined TREZOR_MODEL_1 // trezor-core header style . = . + 415 // reserved .byte 0 // sigmask . = . + 64 // sig #else // model 1 compatibility header . = . + 64 // sig1 . = . + 64 // sig2 . = . + 64 // sig3 .byte 0 // sigindex1 .byte 0 // sigindex2 .byte 0 // sigindex3 . = . + 220 // reserved . = . + 65 // reserved #endif g_header_end: