Exemplo n.º 1
0
//
// Constructor
//
static VMIOS_CONSTRUCTOR_FN(constructor) {

    paramValuesP params = parameterValues;

    // get parameters
    object->argv = params->userargv;
    object->envp = params->userenvp;

    // first three argument registers
    object->args[0] = vmiosGetRegDesc(processor, "r0");
    object->args[1] = vmiosGetRegDesc(processor, "r1");
    object->args[2] = vmiosGetRegDesc(processor, "r2");

    // return register (standard ABI)
    object->resultReg = vmiosGetRegDesc(processor, "r0");

    // return register (standard ABI)
    object->argSP = vmiosGetRegDesc(processor, "sp");

    // Sets up data common to all newlib implementations
    // Defined in newlibSemiHost.c.h
    setupNewlib(object, processor);
}
//
// Constructor
//
static VMIOS_CONSTRUCTOR_FN(constructor) {

    // first three argument registers (standard ABI)
    object->args[0] = vmiosGetRegDesc(processor, "R5");
    object->args[1] = vmiosGetRegDesc(processor, "R6");
    object->args[2] = vmiosGetRegDesc(processor, "R7");
    object->args[3] = vmiosGetRegDesc(processor, "R8");
    object->args[4] = vmiosGetRegDesc(processor, "R9");
    object->args[5] = vmiosGetRegDesc(processor, "R10");

    // return register (standard ABI)
    object->resultReg = vmiosGetRegDesc(processor, "R3");

    // Stack Pointer
    object->argSP = vmiosGetRegDesc(processor, "R1");
    Bool found;
    object->argv = (char **)(UnsPS)vmirtPlatformUns64Attribute(processor, "userargv", &found);
    object->envp = (char **)(UnsPS)vmirtPlatformUns64Attribute(processor, "userenvp", &found);

    // Sets up data common to all newlib implementations
    // Defined in newlibSemiHost.c.h
    setupNewlib(object, processor);

}