add __packed option to make armcc compiler happy with unaligned address of int/float/double
Refactoring: extract mp_load_*/mp_store_* functions