118 lines
		
	
	
	
		
			4.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
	
		
			4.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | 
 | ||
|  | /*
 | ||
|  |  * | ||
|  |   Copyright (c) Eicon Networks, 2002. | ||
|  |  * | ||
|  |   This source file is supplied for the use with | ||
|  |   Eicon Networks range of DIVA Server Adapters. | ||
|  |  * | ||
|  |   Eicon File Revision :    2.1 | ||
|  |  * | ||
|  |   This program is free software; you can redistribute it and/or modify | ||
|  |   it under the terms of the GNU General Public License as published by | ||
|  |   the Free Software Foundation; either version 2, or (at your option) | ||
|  |   any later version. | ||
|  |  * | ||
|  |   This program is distributed in the hope that it will be useful, | ||
|  |   but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY | ||
|  |   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
|  |   See the GNU General Public License for more details. | ||
|  |  * | ||
|  |   You should have received a copy of the GNU General Public License | ||
|  |   along with this program; if not, write to the Free Software | ||
|  |   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
|  |  * | ||
|  |  */ | ||
|  | #ifndef __DIVA_SOFT_DSP_TASK_ENTRY_H__
 | ||
|  | #define __DIVA_SOFT_DSP_TASK_ENTRY_H__
 | ||
|  | /*
 | ||
|  |  The soft DSP image is described by binary header contained on begin of this | ||
|  |  image: | ||
|  | OFFSET FROM IMAGE START |  VARIABLE | ||
|  | ------------------------------------------------------------------------ | ||
|  |  DIVA_MIPS_TASK_IMAGE_LINK_OFFS   |  link to the next image | ||
|  |   ---------------------------------------------------------------------- | ||
|  |  DIVA_MIPS_TASK_IMAGE_GP_OFFS    |  image gp register value, void* | ||
|  |   ---------------------------------------------------------------------- | ||
|  |  DIVA_MIPS_TASK_IMAGE_ENTRY_OFFS   |  diva_mips_sdp_task_entry_t* | ||
|  |   ---------------------------------------------------------------------- | ||
|  |  DIVA_MIPS_TASK_IMAGE_LOAD_ADDR_OFFS |  image image start address (void*) | ||
|  |   ---------------------------------------------------------------------- | ||
|  |  DIVA_MIPS_TASK_IMAGE_END_ADDR_OFFS |  image image end address   (void*) | ||
|  |   ---------------------------------------------------------------------- | ||
|  |  DIVA_MIPS_TASK_IMAGE_ID_STRING_OFFS |  image id string char[...]; | ||
|  |   ---------------------------------------------------------------------- | ||
|  |  */ | ||
|  | #define DIVA_MIPS_TASK_IMAGE_LINK_OFFS   0x6C
 | ||
|  | #define DIVA_MIPS_TASK_IMAGE_GP_OFFS    0x70
 | ||
|  | #define DIVA_MIPS_TASK_IMAGE_ENTRY_OFFS   0x74
 | ||
|  | #define DIVA_MIPS_TASK_IMAGE_LOAD_ADDR_OFFS 0x78
 | ||
|  | #define DIVA_MIPS_TASK_IMAGE_END_ADDR_OFFS 0x7c
 | ||
|  | #define DIVA_MIPS_TASK_IMAGE_ID_STRING_OFFS 0x80
 | ||
|  | /*
 | ||
|  |  This function is called in order to set GP register of this task | ||
|  |  This function should be always called before any function of the | ||
|  |  task is called | ||
|  |  */ | ||
|  | typedef void (*diva_task_set_prog_gp_proc_t)(void* new_gp); | ||
|  | /*
 | ||
|  |  This function is called to clear .bss at task initialization step | ||
|  |  */ | ||
|  | typedef void  (*diva_task_sys_reset_proc_t)(void); | ||
|  | /*
 | ||
|  |  This function is called in order to provide GP of master call to | ||
|  |  task, that will be used by calls from the task to the master | ||
|  |  */ | ||
|  | typedef void (*diva_task_set_main_gp_proc_t)(void* main_gp); | ||
|  | /*
 | ||
|  |  This function is called to provide address of 'dprintf' function | ||
|  |  to the task | ||
|  |  */ | ||
|  | typedef word (*diva_prt_proc_t)(char *, ...); | ||
|  | typedef void (*diva_task_set_prt_proc_t)(diva_prt_proc_t fn); | ||
|  | /*
 | ||
|  |  This function is called to set task PID | ||
|  |  */ | ||
|  | typedef void (*diva_task_set_pid_proc_t)(dword id); | ||
|  | /*
 | ||
|  |  This function is called for run-time task init | ||
|  |  */ | ||
|  | typedef int (*diva_task_run_time_init_proc_t)(void*, dword); | ||
|  | /*
 | ||
|  |  This function is called from system scheduler or from timer | ||
|  |  */ | ||
|  | typedef void (*diva_task_callback_proc_t)(void); | ||
|  | /*
 | ||
|  |  This callback is used by task to get current time im mS | ||
|  |   */ | ||
|  | typedef dword (*diva_task_get_tick_count_proc_t)(void); | ||
|  | typedef void (*diva_task_set_get_time_proc_t)(\ | ||
|  |                 diva_task_get_tick_count_proc_t fn); | ||
|  | typedef struct _diva_mips_sdp_task_entry { | ||
|  |  diva_task_set_prog_gp_proc_t  set_gp_proc; | ||
|  |  diva_task_sys_reset_proc_t   sys_reset_proc; | ||
|  |  diva_task_set_main_gp_proc_t  set_main_gp_proc; | ||
|  |  diva_task_set_prt_proc_t    set_dprintf_proc; | ||
|  |  diva_task_set_pid_proc_t    set_pid_proc; | ||
|  |  diva_task_run_time_init_proc_t run_time_init_proc; | ||
|  |  diva_task_callback_proc_t    task_callback_proc; | ||
|  |  diva_task_callback_proc_t    timer_callback_proc; | ||
|  |  diva_task_set_get_time_proc_t  set_get_time_proc; | ||
|  |  void*              last_entry_proc; | ||
|  | } diva_mips_sdp_task_entry_t; | ||
|  | /*
 | ||
|  |  'last_entry_proc' should be set to zero and is used for future extensuios | ||
|  |  */ | ||
|  | typedef struct _diva_mips_sw_task { | ||
|  |   diva_mips_sdp_task_entry_t  sdp_entry; | ||
|  |   void*                       sdp_gp_reg; | ||
|  |   void*                       own_gp_reg; | ||
|  | } diva_mips_sw_task_t; | ||
|  | #if !defined(DIVA_BRI2F_SDP_1_NAME)
 | ||
|  | #define DIVA_BRI2F_SDP_1_NAME "sdp0.2q0"
 | ||
|  | #endif
 | ||
|  | #if !defined(DIVA_BRI2F_SDP_2_NAME)
 | ||
|  | #define DIVA_BRI2F_SDP_2_NAME "sdp1.2q0"
 | ||
|  | #endif
 | ||
|  | #endif
 |