📄 vrtxcftb.tpl
字号:
/***************************************************************************
*
* Copyright (c) 1993 MICROTEC RESEARCH INCORPORATED.
*
* All rights reserved. MICROTEC RESEARCH's source code is an unpublished
* work and the use of a copyright notice does not imply otherwise.
* This source code contains confidential, trade secret material of
* MICROTEC RESEARCH. Any attempt or participation in deciphering, decoding,
* reverse engineering or in any way altering the source code is
* strictly prohibited, unless the prior written consent of
* MICROTEC RESEARCH is obtained.
*
*
* Module Name: %M%
*
* Identification: %Z% %I% %M%
*
* Date: %G% %U%
*
****************************************************************************
*/
/* VRTX configuration table */
#include <vrtxil.h>
#include <logio.h>
#include <sysvrtx.h>
extern CVT sys_vrtx_cvt;
@ifelse(@(vrtx.txrdy_driver),,,extern void @(vrtx.txrdy_driver)(_ANSIPROT1(int));)
@ifelse(@(vrtx.tcreate_hook),,,extern void @(vrtx.tcreate_hook)(_ANSIPROT2(TCB *, TCB *));)
@ifelse(@(vrtx.tdelete_hook),,,extern void @(vrtx.tdelete_hook)(_ANSIPROT2(TCB *, TCB *));)
@ifelse(@(vrtx.tswitch_hook),,,extern void @(vrtx.tswitch_hook)(_ANSIPROT2(TCB *, TCB *));)
@ifelse(@(board.tool.type),ix86,@ifelse(@(vrtx.desc_alloc_routine),,,extern void @(vrtx.desc_alloc_routine)(_ANSIPROT0);))
const CFTBL sys_vrtx_config_rom =
@ifelse(@(board.tool.type),ix86,`
{
/* VRTX workspace selector */
@(vrtx.workspace_selector),
/* VRTX workspace address */
0,
/* workspace size */
@(vrtx.workspace_size),
/* system stack size */
@(vrtx.system.stack_size),
/* ISR stack size */
@(vrtx.interrupt.stack_size),
/* control block count */
@(vrtx.control_block_count),
/* partition count */
@eval(@(vrtx.partition_count)+@ifelse(@(rtl.enabled),yes,1,0)),
/* idle task stack size */
@(vrtx.idle_task.stack_size),
/* queue count */
@(vrtx.queue_count),
/* component disable level */
@(vrtx.component_disable_level),
/* user stack size */
@(vrtx.user.stack_size),
/* maximum task ID */
@(vrtx.max_task_id),
/* target type */
target_unspecified,
/* user task count */
@(vrtx.user_task_count),
/* Configuration options */
@ifelse(@(vrtx.strict_sc_putc),yes,1,0),
/* transmit ready driver address */
@ifelse(@(vrtx.txrdy_driver),,0,`@(vrtx.txrdy_driver)'), 0,
/* task create hook routine */
@ifelse(@(vrtx.tcreate_hook),,0,`@(vrtx.tcreate_hook)'), 0,
/* task delete hook routine */
@ifelse(@(vrtx.tdelete_hook),,0,`@(vrtx.tdelete_hook)'), 0,
/* task switch hook routine */
@ifelse(@(vrtx.tswitch_hook),,0,`@(vrtx.tswitch_hook)'), 0,
/* component vector table address */
&sys_vrtx_cvt, 0,
/* descriptor allocation routine */
@ifelse(@(vrtx.desc_alloc_routine),,0,`@(vrtx.desc_alloc_routine)'), 0
};',`
@dnl Configuration table for targets other that ix86 starts here
{
0,
/* workspace size */
@(vrtx.workspace_size),
/* system stack size */
@(vrtx.system.stack_size),
/* ISR stack size */
@(vrtx.interrupt.stack_size),
/* control block count */
@(vrtx.control_block_count),
/* partition count */
@eval(@(vrtx.partition_count)+@ifelse(@(rtl.enabled),yes,1,0)),
/* idle task stack size */
@(vrtx.idle_task.stack_size),
/* queue count */
@(vrtx.queue_count),
/* component disable level */
@(vrtx.component_disable_level),
/* user stack size */
@(vrtx.user.stack_size),
/* maximum task ID */
@(vrtx.max_task_id),
/* target type */
target_unspecified,
/* user task count */
@(vrtx.user_task_count),
/* Configuration options */
@ifelse(@(vrtx.strict_sc_putc),yes,1,0),
/* transmit ready driver address */
@ifelse(@(vrtx.txrdy_driver),,0,`@(vrtx.txrdy_driver)'),
/* task create hook routine */
@ifelse(@(vrtx.tcreate_hook),,0,`@(vrtx.tcreate_hook)'),
/* task delete hook routine */
@ifelse(@(vrtx.tdelete_hook),,0,`@(vrtx.tdelete_hook)'),
/* task switch hook routine */
@ifelse(@(vrtx.tswitch_hook),,0,`@(vrtx.tswitch_hook)'),
/* component vector table address */
&sys_vrtx_cvt,
/* ARTX reserved field */
0,
/* ARTX number of entries allocated per task */
@(artx.entry_count),
/* ARTX number of tasks using entry tables */
@(artx.task_count),
/* ARTX master frame control block count */
@(artx.master_frame_count)
};')
const int sys_os_mode = @ifelse(@(vrtxos.trap_handler),`yes',1965,1992); /* trap_handler == 1965 else 1992 */
struct v32_config *sys_vrtx_config_ptr;
@ifelse(@(sys.entry_point1),,,`extern void @(sys.entry_point1)(_ANSIPROT0);')
@ifelse(@(sys.entry_point2),,,`extern void @(sys.entry_point2)(_ANSIPROT0);')
void (* const sys_entry_pt1)(_ANSIPROT0) = @ifelse(@(sys.entry_point1),,`0',`@(sys.entry_point1)');
void (* const sys_entry_pt2)(_ANSIPROT0) = @ifelse(@(sys.entry_point2),,`0',`@(sys.entry_point2)');
@dnl *** why is usr.entry_point not declared external if non-blank?
@dnl *** is it because it might be a hex constant?
void (* const sys_usr_entry_pt)(_ANSIPROT0) = @ifelse(@(usr.entry_point),,`0',`(void (* const)())@(usr.entry_point)');
extern void @(sys.vrtx.intr.hndlr.installer)(_ANSIPROT3(int, void *, char *));
void (* const sys_interrupt_handler_installer)(_ANSIPROT3(int, void *, char *)) = @(sys.vrtx.intr.hndlr.installer);
@ifelse(@(sys.syscall_server)@(sys.os_mode),yesyes,`
extern int @ifelse(@(sys.vrtx32),yes,sys_syscall_handler_vrtx32(),sys_syscall_handler_vrtxsa());
int (* const sys_syscall_handler_ptr)() = @ifelse(@(sys.vrtx32),yes,sys_syscall_handler_vrtx32,sys_syscall_handler_vrtxsa);
extern int sys_syscall_handler();
int (* const sys_syscall_dummy)() = sys_syscall_handler;
')@dnl
@ifelse(@(board.tool.type)@(sys.vrtx32),ix86yes,`const short sys_v32_x86_wssel = @(vrtx.workspace_selector);
const short sys_v32_startsel = @(vrtx.start_selector);
const short sys_v32_cftbsel = @(vrtx.config_table.descriptor);
const short sys_vrtx_trapsel = @(vrtx.trap.descriptor);
const short sys_v32_codesel = @(vrtx.code.descriptor);
#define V32_SMALL 1
#define V32_COMPACT 2
const long sys_v32_task_type = @(vrtx.memory_model);
')
@ifelse(@(board.tool.type),ix86,`const short sys_flat_data_alias = @(vrtx.flat_data_alias);
const short sys_ldt_alias = @(vrtx.ldt_alias);')
const sys_vrtx_type_t sys_vrtx_type = @ifelse(@(sys.vrtx32),yes,sys_vrtx32,sys_vrtxsa);
@ifelse(@(sys.vrtx32),yes,,extern void *(sys_load_vrtx_isr)(_ANSIPROT2(int, void *));)
void *(* const sys_load_vrtxsa_isr)(_ANSIPROT2(int, void *)) = @ifelse(@(sys.vrtx32),yes,0,sys_load_vrtx_isr);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -