Exemple #1
0
unsigned ReqMachine_data()
{
    int                 sel;
    int                 size;
    int                 bitness;
    machine_data_req    *acc;
    machine_data_ret    *ret;
    union {
        unsigned_8      u8;
    }                   *data;

    acc = GetInPtr( 0 );
    ret = GetOutPtr( 0 );
    data = GetOutPtr( sizeof( *ret ) );

    sel = acc->addr.segment;

    if( RdosGetSelectorInfo( sel, &size, &bitness ) ) {
        if( size > 0xFFFF )
            bitness = 32;
        ret->cache_start = 0;
        ret->cache_end = size;
        if( bitness == 16 )
            data->u8 = 0;
        else
            data->u8 = 1;
    } else {
        ret->cache_start = 0;
        ret->cache_end = 0xFFFFFFFF;
        data->u8 = 1;
    }
    return( sizeof( *ret ) + sizeof( data->u8 ) );
}
Exemple #2
0
int GetThreadMemoryModel( struct TDebugThread *obj )
{
    int limit;
    int bitness;
    
    if (obj->Cs == 0x1B3)
        return DEBUG_MEMORY_MODEL_FLAT;

    if (RdosGetSelectorInfo(obj->Cs, &limit, &bitness))
    {
        if (limit == 0xFFFFFFFF)
            return DEBUG_MEMORY_MODEL_FLAT;
        
        if (bitness == 16)    
            return DEBUG_MEMORY_MODEL_16;

        if (bitness == 32)
            return DEBUG_MEMORY_MODEL_32;
    }

    return DEBUG_MEMORY_MODEL_16;
}