--- a/vl.c
+++ b/vl.c
@@ -3215,7 +3215,11 @@ int main(int argc, char **argv, char **envp)
      */
     cpudef_init();

-    if (cpu_model && is_help_option(cpu_model)) {
+    /* We have to check for "starts with '?' as well as is_help_option
+     * to support targets which implement various weird help options
+     * via '?thingy' syntax.
+     */
+    if (cpu_model && (is_help_option(cpu_model) || *cpu_model == '?')) {
         list_cpus(stdout, &fprintf, cpu_model);
         exit(0);
     }
