⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syscon.c

📁 MIPS YAMON, a famous monitor inc. source, make file and PDF manuals.
💻 C
📖 第 1 页 / 共 3 页
字号:
    switch( REGFIELD( data8, SPD_RFSH_RT_RATE ) )    {      case SPD_RFSH_RT_RATE_125 :      	/* 125 us */	*(UINT32 *)param = 125000;	break;      case SPD_RFSH_RT_RATE_62_5 :      	/* 62.5 us */	*(UINT32 *)param = 62500;	break;      case SPD_RFSH_RT_RATE_31_3 :	/* 31.3 us */	*(UINT32 *)param = 31300;	break;      case SPD_RFSH_RT_RATE_15_625 :	/* 15.625 us */	*(UINT32 *)param = 15625;	break;      case SPD_RFSH_RT_RATE_7_8 :	/* 7.8 us */	*(UINT32 *)param = 7800;	break;      default :         /* Assume 3.9us */	*(UINT32 *)param = 3900;	break;    }    return OK;}/************************************************************************ *  Implementation : Public functions ************************************************************************//*  Functions of the format required for registered SYSCON functions. *  Local to SYSCON module. */UINT32syscon_true_read(    void   *param,    void   *data,    UINT32 size ){    *(bool *)param = TRUE;    return OK;}UINT32syscon_false_read(    void   *param,    void   *data,    UINT32 size ){    *(bool *)param = FALSE;    return OK;}UINT32syscon_endian_big_read(    void   *param,    void   *data,    UINT32 size ){    *(bool *)param = ((*(UINT8 *)(&endian_test) == 0x12) ? TRUE : FALSE );    return OK;}UINT32syscon_string_read(    void   *param,    void   *data,    UINT32 size ){    *(char **)param = (char *)data;    return OK;}UINT32syscon_uint8_read(    void   *param,    void   *data,    UINT32 size ){    *(UINT8 *)param = *(UINT8 *)data;    return OK;}UINT32syscon_uint32_read(    void   *param,    void   *data,    UINT32 size ){    *(UINT32 *)param = *(UINT32 *)data;    return OK;}UINT32syscon_bool_read(    void   *param,    void   *data,    UINT32 size ){    *(bool *)param = *(bool *)data;    return OK;}UINT32syscon_bool_write(    void   *param,    void   *data,    UINT32 size ){    *(bool *)data = *(bool *)param;    return OK;}/************************************************************************ * * *                          SYSCON_init *  Description : *  ------------- * *  Initializes the 'syscon' module. *   *  Parameters : *  ------------ * *  None * *  Return values : *  --------------- * *  'OK'(=0), successfull initialization * ************************************************************************/INT32 SYSCON_init( void ){    t_sys_error_lookup_registration registration;    UINT32 i;    /* initialize free and last pointer for dynamic memory allocation */    SYSCON_free = &SYSCON_dynamic_memory[0] ;    SYSCON_last = &SYSCON_dynamic_memory[SYS_MALLOC_DYNAMIC_MEMORY_SIZE-1];    /* Register objects */    syscon_register_generic( SYSCON_BOARD_STACK_SIZE_ID, 			     board_stack_size_generic_read, NULL,			     NULL,			    NULL );    syscon_register_generic( SYSCON_BOARD_APPL_STACK_SIZE_ID,			     board_appl_stack_size_generic_read, NULL,			     NULL,				 NULL );    syscon_register_generic( SYSCON_BOARD_FREE_MEM_ID,			     board_free_mem_generic_read, NULL,			     NULL,			  NULL );    syscon_register_generic( SYSCON_BOARD_SYSTEMRAM_ACTUAL_SIZE_ID,			     board_systemram_actual_size_generic_read, NULL,			     NULL,				       NULL );    syscon_register_generic( SYSCON_CPU_ENDIAN_BIG_ID,			     syscon_endian_big_read, NULL,			     NULL,		     NULL );    syscon_register_generic( SYSCON_DISK_ENVIRONMENT_ID,			     disk_environment_generic_read,  NULL,			     disk_environment_generic_write, NULL );    syscon_register_generic( SYSCON_ERROR_REGISTER_LOOKUP_ID,			     NULL,				  NULL,			     error_register_lookup_generic_write, NULL );    syscon_register_generic( SYSCON_ERROR_LOOKUP_ID,			     error_lookup_generic_read, NULL,			     NULL,			NULL );    syscon_register_generic( SYSCON_BOARD_SN_ID,			     board_sn_generic_read, NULL,			     NULL,		    NULL );    syscon_register_generic( SYSCON_COM_EN0_MAC_ADDR_ID,			     com_en0_mac_addr_generic_read, NULL,			     NULL,			    NULL );    syscon_register_generic( SYSCON_BOARD_MALLOC_ID,			     board_malloc_generic_read, NULL,			     NULL,			NULL );    syscon_register_generic( SYSCON_BOARD_CPU_CLOCK_FREQ_ID,			     board_cpu_clock_freq_generic_read, NULL,			     NULL,				NULL );    syscon_register_generic( SYSCON_BOARD_BUS_CLOCK_FREQ_ID,			     board_bus_clock_freq_generic_read, NULL,			     NULL,				NULL );    syscon_register_generic( SYSCON_CPU_ICACHE_SIZE_ID,			     cpu_icache_size_generic_read, NULL,			     NULL,			   NULL );    syscon_register_generic( SYSCON_CPU_ICACHE_LINESIZE_ID,			     cpu_icache_linesize_generic_read, NULL,			     NULL,			       NULL );    syscon_register_generic( SYSCON_CPU_ICACHE_ASSOC_ID,			     cpu_icache_assoc_generic_read, NULL,			     NULL,			    NULL );    syscon_register_generic( SYSCON_CPU_ICACHE_AVAIL_BPW_ID,			     cpu_icache_avail_bpw_generic_read, NULL,			     NULL,				NULL );        syscon_register_generic( SYSCON_CPU_ICACHE_AVAIL_ASSOC_ID,			     cpu_icache_avail_assoc_generic_read, NULL,			     NULL,				  NULL );    syscon_register_generic( SYSCON_CPU_ICACHE_SIZE_CURRENT_ID,			     cpu_icache_size_current_generic_read, NULL,			     NULL,				   NULL );    syscon_register_generic( SYSCON_CPU_ICACHE_LINESIZE_CURRENT_ID,			     cpu_icache_linesize_current_generic_read, NULL,			     NULL,				       NULL );    syscon_register_generic( SYSCON_CPU_ICACHE_ASSOC_CURRENT_ID,			     cpu_icache_assoc_current_generic_read, NULL,			     NULL,				    NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_SIZE_ID,			     cpu_dcache_size_generic_read, NULL,			     NULL,			   NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_LINESIZE_ID,			     cpu_dcache_linesize_generic_read, NULL,			     NULL,			       NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_ASSOC_ID,			     cpu_dcache_assoc_generic_read, NULL,			     NULL,			    NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_AVAIL_BPW_ID,			     cpu_dcache_avail_bpw_generic_read, NULL,			     NULL,				NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_AVAIL_ASSOC_ID,			     cpu_dcache_avail_assoc_generic_read, NULL,			     NULL,				  NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_SIZE_CURRENT_ID,			     cpu_dcache_size_current_generic_read, NULL,			     NULL,				   NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_LINESIZE_CURRENT_ID,			     cpu_dcache_linesize_current_generic_read, NULL,			     NULL,				       NULL );    syscon_register_generic( SYSCON_CPU_DCACHE_ASSOC_CURRENT_ID,			     cpu_dcache_assoc_current_generic_read, NULL,			     NULL,				    NULL );    syscon_register_generic( SYSCON_CPU_SCACHE_SIZE_CURRENT_ID,			     cpu_scache_size_current_generic_read, NULL,			     NULL,				   NULL );    syscon_register_generic( SYSCON_CPU_SCACHE_LINESIZE_CURRENT_ID,			     cpu_scache_linesize_current_generic_read, NULL,			     NULL,				       NULL );    syscon_register_generic( SYSCON_CPU_SCACHE_ASSOC_CURRENT_ID,			     cpu_scache_assoc_current_generic_read, NULL,			     NULL,				    NULL );    syscon_register_generic( SYSCON_COM_EN0_IP_ADDR_ID,			     com_en0_ip_addr_generic_read, NULL,			     NULL,			   NULL );    syscon_register_generic( SYSCON_COM_EN0_IP_SUBNETMASK_ID,			     com_en0_ip_subnetmask_generic_read, NULL,			     NULL,				 NULL );    syscon_register_generic( SYSCON_COM_EN0_IP_GATEWAYADDR_ID,			     com_en0_ip_gatewayaddr_generic_read, NULL,			     NULL,				  NULL );    syscon_register_generic( SYSCON_BOARD_SYSTEMRAM_REFRESH_NS_SPD_ID,			     board_systemram_refresh_ns_spd_read, NULL,			     NULL,			          NULL );    syscon_register_generic( SYSCON_BOARD_SYSTEMRAM_SRASPRCHG_NS_SPD_ID,			     board_systemram_srasprchg_ns_spd_read, NULL,			     NULL,			            NULL );    syscon_register_generic( SYSCON_BOARD_SYSTEMRAM_SRAS2SCAS_NS_SPD_ID,			     board_systemram_sras2scas_ns_spd_read, NULL,			     NULL,			            NULL );    syscon_register_generic( SYSCON_COM_EN0_ENABLE_ID,                             com_en0_enable, NULL,                             NULL,                                NULL );    syscon_register_generic( SYSCON_COM_EN0_DISABLE_ID,                             com_en0_disable, NULL,                             NULL,                                NULL );    syscon_register_generic( SYSCON_FILE_BATCH_ACCESS_ID,                             file_batch_access_generic_read, NULL,                             NULL,                                NULL );    syscon_register_generic( SYSCON_FILE_BOOTSERVER_ID,                             file_bootserver_generic_read, NULL,                             NULL,                                NULL );    /* Reset value of Config */    syscon_register_generic( SYSCON_CPU_CP0_CONFIG_RESET_ID,			     cpu_cp0_config_reset_generic_read, NULL,			     NULL,				NULL );    /* Generic TTY */    syscon_generic_tty_init();    /* Platform specific, except TTY */    syscon_arch_board_init(syscon_objects);    /* Platform specific TTY */    syscon_arch_tty_init();    /* CPU specifics */    syscon_arch_cpu_init(syscon_objects);    /* reset lookup array */    memset( (void*)&registered_lookup[0], 0, sizeof(registered_lookup) );    /* register lookup syserror */    registration.prefix = SYSERROR_DOMAIN( ERROR_SYSCON );    registration.lookup = SYSCON_error_lookup;    SYSCON_write( SYSCON_ERROR_REGISTER_LOOKUP_ID,                  &registration,                  sizeof( registration ) );    /* Store initial setting of CP0 CONFIG register */    SYSCON_read(        SYSCON_CPU_CP0_CONFIG_ID,	(void *)&config_init,	sizeof(UINT32) );	    return OK;}/************************************************************************ * *                          SYSCON_read *  Description : *  ------------- * *  Read the value of system configuration object given by 'id'. * *  Parameters : *  ------------ * *  'id',           IN,    Object id. *  'param',        INOUT, Buffer for object value. *  'param_size',   IN,    Size of buffer (must match size of object). * *  Return values : *  --------------- * *  'OK'(=0), returned parameter value and size are valid. *  'ERROR_SYSCON_UNKNOWN_PARAM': parameter not available on this board *  'ERROR_SYSCON_SIZE_MISMATCH': parameter size check failed * ************************************************************************/INT32 SYSCON_read(    t_syscon_ids  id,		/* IN: object ID			*/    void          *param,       /* IN: Buffer for object value		*/    UINT32	  param_size)   /* IN: Buffer size (bytes)		*/{    t_syscon_obj *obj;    if( id >= SYSCON_OBJ_COUNT )        return ERROR_SYSCON_UNKNOWN_PARAM;    else    {        obj = &syscon_objects[id];        if( obj->read )	    return obj->read( param, obj->read_data, param_size );	else	    return ERROR_SYSCON_WRITE_ONLY_ID;    }}/************************************************************************ * *                          SYSCON_write *  Description : *  ------------- * *  Write the system configuration object given by 'id'. * *  Parameters : *  ------------ * *  'id',         IN,    Object id. *  'param',      IN,    Buffer containing value to write. *  'param_size', IN,    Size of buffer. * *  Return values : *  --------------- * *  'OK'(=0), parameter value has been set *  'ERROR_SYSCON_UNKNOWN_PARAM': parameter not available on this board *  'ERROR_SYSCON_SIZE_MISMATCH': parameter size check failed * ************************************************************************/INT32 SYSCON_write(    t_syscon_ids  id,		/* IN: object ID			*/    void          *param,       /* IN: Buffer with value		*/    UINT32	  param_size)   /* IN: Size of buffer  (bytes)		*/{    t_syscon_obj *obj;    if( id >= SYSCON_OBJ_COUNT )        return ERROR_SYSCON_UNKNOWN_PARAM;    else    {        obj = &syscon_objects[id];        if( obj->write )	    return obj->write( param, obj->write_data, param_size );	else	    return ERROR_SYSCON_READ_ONLY_ID;    }}/************************************************************************ * *                          syscon_register_generic *  Description : *  ------------- * *  Function used to register generic SYSCON object functions. * *  A read and/or write function may be registered. *  A NULL function pointer indicates that the operation (read or *  write) is not allowed. * *  read_data and write_data pointers are passed to the read and write *  function. * *  Return values : *  --------------- * *  None * ************************************************************************/void syscon_register_generic(    t_syscon_ids   id,			/* OBJECT ID from syscon_api.h	*/    t_syscon_func  read_generic,	/* Generic read function	*/    void	   *read_data,		/* Registered data		*/    t_syscon_func  write_generic,	/* Generic write function	*/    void	   *write_data )	/* Registered data		*/{    syscon_objects[id].read       = read_generic;    syscon_objects[id].read_data  = read_data;    syscon_objects[id].write      = write_generic;    syscon_objects[id].write_data = write_data;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -