📄 intsys.c
字号:
//*************************************************************************
//
// Copyright (C) SEIKO EPSON CORP. 1997
// All Rights Reserved
//
// Filename : intsys.c
// Function : Interrupt Handler system call functions
// Revision :
// 2001/03/08 Y.Taka start
//
//*************************************************************************
#include "ros33.h"
#include "internal.h"
//****************************************************************************
//*** 3.2 Task-Dependent Synchronization Functions ***
//****************************************************************************
//********************************************************************
// Wakeup Other Task from interrupt handler
// [Parameters]
// ID tskid TaskID
// [Return Parameters]
// ER ercd ErrorCode
// [implementation dependent]
// Allowable number for the wakeup request queuing
// count (wupcnt) is 1.
//********************************************************************
ER iwup_tsk
(
ID tskid
)
{
#if 0 //gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("xcall wup_tsk");
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//****************************************************************************
//*** 3.3 Synchronization and Communication Functions ***
//****************************************************************************
//********************************************************************
// Set Eventflag from interrupt handler
// [Parameters]
// ID flgid EventFlagID
// UINT setptn SetBitPattern
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER iset_flg
(
ID flgid,
UINT setptn
)
{
#if 0
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("xcall set_flg");
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//********************************************************************
// Send Message to Mailbox from interrupt handler
// [Parameters]
// ID mbxid MailboxID
// T_MSG *pk_msg Start Address of Message Packet
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER isnd_msg
(
ID mbxid,
T_MSG* pk_msg
)
{
#if 0//gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("xcall snd_msg");
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//********************************************************************
// Signal Semaphore from interrupt handler
// [Parameters]
// ID semid SemaphoreID
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER isig_sem
(
ID semid
)
{
#if 0//gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("xcall sig_sem");
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//********************************************************************
// Send Message to MessageBuffer from interrupt handler
// [Parameters]
// ID mbfid MessageBufferID
// INT msgsz SendMessageSize (in bytes)
// VP msg Start Address of Send Message Packet
// TMO tmout Timeout
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER ipsnd_mbf
(
ID mbfid,
VP msg,
INT msgsz
)
{
#if 0 //gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("ld.w %r15, 0"); // tsnd_mbf(mbfid, msg, msgsz, TMO_POL)
asm("xcall tsnd_mbf");
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//********************************************************************
// Get Variable-size Memory Block from interrupt handler
// [Parameters]
// VP *p_blk Start Address of Memory Block
// ID mplid Variable-size MemoryPoolID
// INT blksz Get Block Size(in bytes)
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER ipget_blk
(
VP *p_blk,
ID mplid,
INT blksz
)
{
#if 0//gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("ld.w %r15, 0"); // tget_blk(p_blk,mplid, blksz, TMO_POL)
asm("xcall tget_blk");
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//********************************************************************
// Release Variable-size Memory Block from interrupt handler
// [Parameters]
// ID mplid Variable-size MemorypoolID
// VP blk Start Address of Memory Block
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER irel_blk
(
ID mplid,
VP blk
)
{
#if 0 //gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("xcall rel_blk"); // rel_blk(mplid, blk)
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//********************************************************************
// Get Fixed-size Memory Block from interrupt handler
// [Parameters]
// VP *p_blf Start Address of Memory Block
// ID mpfid Fixed-sizs MemoryPoolID
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER ipget_blf
(
VP *p_blf,
ID mpfid
)
{
#if 0 //gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("ld.w %r14, 0"); // tget_blf(p_blf,mpfid, TMO_POL)
asm("xcall tget_blf");
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
//********************************************************************
// Release Fixed-size Memory Block from interrupt handler
// [Parameters]
// ID mpfid Fixed-size MemorypoolID
// VP blf Start Address of Memory Block
// [Return Parameters]
// ER ercd ErrorCode
//********************************************************************
ER irel_blf
(
ID mpfid,
VP blf
)
{
#if 0 //gfdmodified
asm("pushn %r15");
asm("ld.w %r0,%alr");
asm("ld.w %r1,%ahr");
asm("pushn %r1");
asm("xcall rel_blf"); // rel_blf(mpfid, blf)
asm("popn %r1");
asm("ld.w %ahr, %r1");
asm("ld.w %alr, %r0");
asm("ld.w [%sp+10], %r10");
asm("popn %r15");
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -