static void cpu_common_parse_features(const char *typename, char *features,

                                      Error **errp)

{

    char *featurestr; /* Single "key=value" string being parsed */

    char *val;

    static bool cpu_globals_initialized;



    /* TODO: all callers of ->parse_features() need to be changed to

     * call it only once, so we can remove this check (or change it

     * to assert(!cpu_globals_initialized).

     * Current callers of ->parse_features() are:

     * - cpu_generic_init()

     * - cpu_x86_create()

     */

    if (cpu_globals_initialized) {

        return;

    }

    cpu_globals_initialized = true;



    featurestr = features ? strtok(features, ",") : NULL;



    while (featurestr) {

        val = strchr(featurestr, '=');

        if (val) {

            GlobalProperty *prop = g_new0(typeof(*prop), 1);

            *val = 0;

            val++;

            prop->driver = typename;

            prop->property = g_strdup(featurestr);

            prop->value = g_strdup(val);

            prop->errp = &error_fatal;

            qdev_prop_register_global(prop);

        } else {

            error_setg(errp, "Expected key=value format, found %s.",

                       featurestr);

            return;

        }

        featurestr = strtok(NULL, ",");

    }

}

static void cpu_common_parse_features(const char *typename, char *features,

                                      Error **errp)

{

    char *featurestr; 

    char *val;

    static bool cpu_globals_initialized;



    













    if (cpu_globals_initialized) {

        return;

    }

    cpu_globals_initialized = true;



    featurestr = features ? strtok(features, ",") : NULL;



    while (featurestr) {

        val = strchr(featurestr, '=');

        if (val) {

            GlobalProperty *prop = g_new0(typeof(*prop), 1);

            *val = 0;

            val++;

            prop->driver = typename;

            prop->property = g_strdup(featurestr);

            prop->value = g_strdup(val);

            prop->errp = &error_fatal;

            qdev_prop_register_global(prop);

        } else {

            error_setg(errp, "Expected key=value format, found %s.",

                       featurestr);

            return;

        }

        featurestr = strtok(NULL, ",");

    }

}

static void FUNC_0(const char *VAR_0, char *VAR_1,

                                      Error **VAR_2)

{

    char *VAR_3; 

    char *VAR_4;

    static bool VAR_5;



    













    if (VAR_5) {

        return;

    }

    VAR_5 = true;



    VAR_3 = VAR_1 ? strtok(VAR_1, ",") : NULL;



    while (VAR_3) {

        VAR_4 = strchr(VAR_3, '=');

        if (VAR_4) {

            GlobalProperty *prop = g_new0(typeof(*prop), 1);

            *VAR_4 = 0;

            VAR_4++;

            prop->driver = VAR_0;

            prop->property = g_strdup(VAR_3);

            prop->value = g_strdup(VAR_4);

            prop->VAR_2 = &error_fatal;

            qdev_prop_register_global(prop);

        } else {

            error_setg(VAR_2, "Expected key=value format, found %s.",

                       VAR_3);

            return;

        }

        VAR_3 = strtok(NULL, ",");

    }

}

static void FUNC_0(const char *VAR_0, char *VAR_1,
Error **VAR_2)
{ char *VAR_3; char *VAR_4; static bool VAR_5; if (VAR_5) { return; } VAR_5 = true; VAR_3 = VAR_1 ? strtok(VAR_1, ",") : NULL; while (VAR_3) { VAR_4 = strchr(VAR_3, '='); if (VAR_4) { GlobalProperty *prop = g_new0(typeof(*prop), 1); *VAR_4 = 0; VAR_4++; prop->driver = VAR_0; prop->property = g_strdup(VAR_3); prop->value = g_strdup(VAR_4); prop->VAR_2 = &error_fatal; qdev_prop_register_global(prop); } else { error_setg(VAR_2, "Expected key=value format, found %s.",
VAR_3); return; } VAR_3 = strtok(NULL, ","); } }