__cdecl is a misleading name, since it currently encapsulates both cdecl and regparm(0) attributes. Rename to __asmcall.
Use as "call dump_regs" from any real-mode code within .text16. Should preserve all registers and flags.