Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/Makefile.target
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/Makefile.target	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/Makefile.target	(revision 374)
@@ -13,5 +13,5 @@
 #  コンパイルオプション
 #
-INCLUDES := $(INCLUDES) -I$(TARGETDIR) -I$(SRCDIR)/pdic
+INCLUDES := $(INCLUDES) -I$(TARGETDIR) -I$(SRCDIR)/mbed
 
 #
@@ -25,5 +25,5 @@
 #  システムサービスに関する定義
 #
-SYSSVC_DIRS := $(SYSSVC_DIRS)
+SYSSVC_DIRS := $(SYSSVC_DIRS) $(SRCDIR)/mbed
 SYSSVC_COBJS := $(SYSSVC_COBJS)
 
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/PinNames.h
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/PinNames.h	(revision 374)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/PinNames.h	(revision 374)
@@ -0,0 +1,74 @@
+#ifndef MBED_PINNAMES_H
+#define MBED_PINNAMES_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+	P20, P21, P22, P23, P24, P25, P32, P33, PC2, PC3, PC4, PC5, PC6, PC7,
+	P50, P52, PA0, PA1, PA2, PA6, PA7,
+	AN0, AN1, AN2, AN3, AN4, AN5, AN6, AN7,
+
+	D0 = P21,
+	D1 = P20,
+	D2 = P22,
+	D3 = P23,
+	D4 = P24,
+	D5 = P25,
+	D6 = P32,
+	D7 = P33,
+	D8 = PC2,
+	D9 = PC3,
+	D10 = PC4,
+	D11 = PC6,
+	D12 = PC7,
+	D13 = PC5,
+
+	A0 = AN0,
+	A1 = AN1,
+	A2 = AN2,
+	A3 = AN3,
+	A4 = AN4,
+	A5 = AN5,
+	A6 = AN6,
+	A7 = AN7,
+
+	I2C_SCL = P52,
+	I2C_SDA = P50,
+
+	PIN_LED0 = PA0,
+	PIN_LED1 = PA1,
+	PIN_LED2 = PA2,
+	PIN_LED3 = PA6,
+	PIN_SW = PA7,
+
+	NC = (int)0xFFFFFFFF
+} PinName;
+
+#define LED_RED			PIN_LED0
+#define LED_GREEN		PIN_LED1
+#define LED_BLUE		PIN_LED2
+#define LED_USER		PIN_LED3
+#define USER_BUTTON0	PIN_SW
+
+typedef enum {
+	PIN_INPUT,
+	PIN_OUTPUT
+} PinDirection;
+
+typedef enum {
+	PullUp = 2,
+	PullDown = 3,
+	PullNone = 0,
+	OpenDrain = 4,
+	PullDefault = PullNone
+} PinMode;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/gr_sakura.h
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/gr_sakura.h	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/gr_sakura.h	(revision 374)
@@ -71,10 +71,5 @@
  *  ボーレート設定
  */
-#define BAUD_19200BPS		UINT_C( 78 )
-#define BAUD_38400BPS		UINT_C( 39 )
-#define BAUD_57600BPS		UINT_C( 25 )
-#define BAUD_115200BPS		UINT_C( 12 )
-
-#define UART_BAUDRATE		BAUD_115200BPS
+#define UART_BAUDRATE		115200
 
 /*
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/tSIOPortGRSakura.cdl
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/tSIOPortGRSakura.cdl	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/tSIOPortGRSakura.cdl	(revision 374)
@@ -51,10 +51,10 @@
  */
 import_C("gr_sakura.h");
-import_C("rx630.h");
+import_C("device.h");
 
 /*
  *  FIFO内蔵シリアルコミュニケーションインタフェース用 簡易SIOドライバ
  */
-import("tSCIF.cdl");
+import("tMbedSerial.cdl");
 
 /*
@@ -74,10 +74,4 @@
 	call			sSIOPort	cSIOPort;
 	[inline] entry	siSIOCBR	eiSIOCBR;
-
-	/*
-	 *  割込み要求ライン操作のための結合
-	 */
-	call	sInterruptRequest	cRxInterruptRequest;
-	call	sInterruptRequest	cTxInterruptRequest;
 };
 
@@ -86,5 +80,4 @@
  *  ト）のセルタイプ
  */
-[active]
 composite tSIOPortGRSakura {
 	/*
@@ -98,9 +91,6 @@
 	 */
 	attr {
-		uintptr_t	baseAddress;				/* ベースアドレス */
-		INTNO		rxInterruptNumber;			/* 受信割込み番号 */
-		INTNO		txInterruptNumber;			/* 送信割込み番号 */
-		PRI			isrPriority = 1;			/* ISR優先度 */
-		PRI			interruptPriority = -4;		/* 割込み優先度 */
+		int32_t tx;								/* 送信Pin */
+		int32_t rx;								/* 受信Pin */
 		uint32_t	baudRate = 115200;			/* ボーレートの設定値 */
 	};
@@ -109,6 +99,7 @@
 	 *  SIOドライバ
 	 */
-	cell tSCIF SCIF {
-		baseAddress = composite.baseAddress;
+	cell tMbedSerial MbedSerial {
+		tx          = composite.tx;
+		rx          = composite.rx;
 		baudRate    = composite.baudRate;
 		ciSIOCBR    = SIOPortMain.eiSIOCBR;
@@ -120,35 +111,7 @@
 	cell tSIOPortGRSakuraMain SIOPortMain {
 		ciSIOCBR            => composite.ciSIOCBR;
-		cSIOPort            = SCIF.eSIOPort;
-		cRxInterruptRequest = RxInterruptRequest.eInterruptRequest;
-		cTxInterruptRequest = TxInterruptRequest.eInterruptRequest;
+		cSIOPort            = MbedSerial.eSIOPort;
 	};
 	composite.eSIOPort => SIOPortMain.eSIOPort;
-
-	/*
-	 *  SIOの受信割込みサービスルーチンと割込み要求ライン
-	 */
-	cell tISR RxISRInstance {
-		interruptNumber = composite.rxInterruptNumber;
-		isrPriority     = composite.isrPriority;
-		ciISRBody       = SCIF.eiRxISR;
-	};
-	cell tInterruptRequest RxInterruptRequest {
-		interruptNumber   = composite.rxInterruptNumber;
-		interruptPriority = composite.interruptPriority;
-	};
-
-	/*
-	 *  SIOの受信割込みサービスルーチンと割込み要求ライン
-	 */
-	cell tISR TxISRInstance {
-		interruptNumber = composite.txInterruptNumber;
-		isrPriority     = composite.isrPriority;
-		ciISRBody       = SCIF.eiTxISR;
-	};
-	cell tInterruptRequest TxInterruptRequest {
-		interruptNumber   = composite.txInterruptNumber;
-		interruptPriority = composite.interruptPriority;
-	};
 };
 
@@ -158,13 +121,12 @@
  *  サンプルプログラムが使うポートが，SIOPortTarget1に固定されているた
  *  め，ポート1とポート3を入れ換えている．具体的には，SIOPortTarget1は
- *  SCIFのチャネル2（チャネル番号は0から始まるので，ポート3のこと）に，
- *  SIOPortTarget3はSCIFのチャネル0につながっている．
+ *  MbedSerialのチャネル2（チャネル番号は0から始まるので，ポート3のこと）に，
+ *  SIOPortTarget3はMbedSerialのチャネル0につながっている．
  */
 [prototype]
 cell tSIOPortGRSakura SIOPortTarget1 {
 	/* 属性の設定 */
-	baseAddress       = C_EXP("SCI0_BASE");
-	rxInterruptNumber = C_EXP("INT_SCI0_RXI");
-	txInterruptNumber = C_EXP("INT_SCI0_TEI");
+	tx = C_EXP("P20");		/* PIN_IO1 */
+	rx = C_EXP("P21");		/* PIN_IO0 */
 };
 
@@ -172,7 +134,6 @@
 cell tSIOPortGRSakura SIOPortTarget2 {
 	/* 属性の設定 */
-	baseAddress       = C_EXP("SCI1_BASE");
-	rxInterruptNumber = C_EXP("INT_SCI1_RXI");
-	txInterruptNumber = C_EXP("INT_SCI1_TEI");
+	tx = C_EXP("P32");		/* PIN_IO6 */
+	rx = C_EXP("P33");		/* PIN_IO7 */
 };
 
@@ -180,7 +141,6 @@
 cell tSIOPortGRSakura SIOPortTarget3 {
 	/* 属性の設定 */
-	baseAddress       = C_EXP("SCI2_BASE");
-	rxInterruptNumber = C_EXP("INT_SCI2_RXI");
-	txInterruptNumber = C_EXP("INT_SCI2_TEI");
+	tx = C_EXP("P50");		/* PIN_IO24 */
+	rx = C_EXP("P52");		/* PIN_IO26 */
 };
 
@@ -188,7 +148,6 @@
 cell tSIOPortGRSakura SIOPortTarget4 {
 	/* 属性の設定 */
-	baseAddress       = C_EXP("SCI3_BASE");
-	rxInterruptNumber = C_EXP("INT_SCI3_RXI");
-	txInterruptNumber = C_EXP("INT_SCI3_TEI");
+	tx = C_EXP("P23");		/* PIN_IO3 */
+	rx = C_EXP("P25");		/* PIN_IO5 */
 };
 
@@ -196,7 +155,6 @@
 cell tSIOPortGRSakura SIOPortTarget5 {
 	/* 属性の設定 */
-	baseAddress       = C_EXP("SCI4_BASE");
-	rxInterruptNumber = C_EXP("INT_SCI4_RXI");
-	txInterruptNumber = C_EXP("INT_SCI4_TEI");
+	tx = C_EXP("PC3");		/* PIN_IO9 */
+	rx = C_EXP("PC2");		/* PIN_IO8 */
 };
 
@@ -204,7 +162,6 @@
 cell tSIOPortGRSakura SIOPortTarget6 {
 	/* 属性の設定 */
-	baseAddress       = C_EXP("SCI5_BASE");
-	rxInterruptNumber = C_EXP("INT_SCI5_RXI");
-	txInterruptNumber = C_EXP("INT_SCI5_TEI");
+	tx = C_EXP("PC7");		/* PIN_IO12 */
+	rx = C_EXP("PC6");		/* PIN_IO11 */
 };
 
@@ -212,7 +169,6 @@
 cell tSIOPortGRSakura SIOPortTarget7 {
 	/* 属性の設定 */
-	baseAddress       = C_EXP("SCI6_BASE");
-	rxInterruptNumber = C_EXP("INT_SCI6_RXI");
-	txInterruptNumber = C_EXP("INT_SCI6_TEI");
+	tx = C_EXP("P26");		/* PIN_IO58 */
+	rx = C_EXP("P30");		/* PIN_IO60 */
 };
 
@@ -220,6 +176,5 @@
 cell tSIOPortGRSakura SIOPortTarget8 {
 	/* 属性の設定 */
-	baseAddress       = NULL;
-	rxInterruptNumber = NULL;
-	txInterruptNumber = NULL;
+	tx = NULL;
+	rx = NULL;
 };
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/tSIOPortGRSakuraMain_inline.h
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/tSIOPortGRSakuraMain_inline.h	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/tSIOPortGRSakuraMain_inline.h	(revision 374)
@@ -57,10 +57,4 @@
 	 */
 	cSIOPort_open();
-
-	/*
-	 *  SIOの割込みマスクを解除する．
-	 */
-	cRxInterruptRequest_enable();
-	cTxInterruptRequest_enable();
 }
 
@@ -77,10 +71,4 @@
 	 */
 	cSIOPort_close();
-
-	/*
-	 *  SIOの割込みをマスクする．
-	 */
-	cRxInterruptRequest_disable();
-	cTxInterruptRequest_disable();
 }
 
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_kernel_impl.c
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_kernel_impl.c	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_kernel_impl.c	(revision 374)
@@ -53,5 +53,9 @@
 #include "syssvc/serial.h"
 #ifdef TOPPERS_OMIT_TECS
-#include "rx630_uart.h"
+#include "serial_api.h"
+#endif
+
+#ifdef TOPPERS_OMIT_TECS
+serial_t log_serial;
 #endif
 
@@ -78,18 +82,12 @@
 		sil_reb_mem(PORTA_PDR_ADDR) & ~PORT_PDR_B7_BIT);
 
+#ifdef TOPPERS_OMIT_TECS
 	/*
 	 *  シリアルポートの設定
 	 */
-
-	/* ポートP20をTxD0, ポートP21をRxD0に */
-	sil_wrb_mem(PORT2_PMR_ADDR, 0x03);
-
-	/* データディレクションレジスタ(PDR)の設定 P21(RxD0)を入力ポートにする */
-	sil_wrb_mem(PORT2_PDR_ADDR, 
-		sil_reb_mem(PORT2_PDR_ADDR) & ~PORT_PDR_B1_BIT);
-
-	/* データディレクションレジスタ(PDR)の設定 P20(TxD0)を出力ポートにする */
-	sil_wrb_mem(PORT2_PDR_ADDR, 
-		sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B0_BIT);
+	serial_init(&log_serial, P20, P21);
+	serial_baud(&log_serial, UART_BAUDRATE);
+	serial_format(&log_serial, 8, ParityNone, 1);
+#endif
 
 	/* ポートP40～P47を周辺機器に */
@@ -152,8 +150,8 @@
 {
 	if (c == '\n') {
-		rx630_uart_pol_putc('\r', TARGET_PUTC_PORTID);
+		serial_putc(&log_serial, '\r');
 	}
 
-	rx630_uart_pol_putc(c, TARGET_PUTC_PORTID);
+	serial_putc(&log_serial, c);
 }
 #endif
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.c
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.c	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.c	(revision 374)
@@ -3,5 +3,5 @@
  *      Toyohashi Open Platform for Embedded Real-Time Systems/
  *      Advanced Standard Profile Kernel
- * 
+ *
  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
  *                              Toyohashi Univ. of Technology, JAPAN
@@ -12,5 +12,5 @@
  *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
  *  Copyright (C) 2013      by Mitsuhiro Matsuura
- * 
+ *
  *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
  *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
@@ -35,5 +35,5 @@
  *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
  *      免責すること．
- * 
+ *
  *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
  *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
@@ -41,5 +41,5 @@
  *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
  *  の責任を負わない．
- * 
+ *
  *  @(#) $Id$
  */
@@ -51,4 +51,62 @@
 #include <sil.h>
 #include "target_serial.h"
+#include "hal/serial_api.h"
+#include "target_syssvc.h"
+#include "syssvc/serial.h"
+
+/*
+ *  シリアルI/Oポート初期化ブロックの定義
+ */
+typedef struct sio_port_initialization_block {
+	PinName tx;
+	PinName rx;
+} SIOPINIB;
+
+/*
+ *  シリアルI/Oポート管理ブロックの定義
+ */
+struct sio_port_control_block {
+	const SIOPINIB *p_siopinib;
+	intptr_t exinf;
+	bool_t openflag;
+	serial_t serial;
+};
+
+/*
+ *  シリアルI/Oポート管理ブロックのエリア
+ */
+SIOPCB siopcb_table[TNUM_PORT];
+
+static const SIOPINIB siopinib_table[TNUM_SIOP] =
+{
+	{ P20, P21 },
+#if TNUM_SIOP > 1
+	{ P32, P33 },
+#endif
+#if TNUM_SIOP > 2
+	{ P50, P52 },
+#endif
+#if TNUM_SIOP > 3
+	{ P23, P25 },
+#endif
+#if TNUM_SIOP > 4
+	{ PC3, PC2 },
+#endif
+#if TNUM_SIOP > 5
+	{ PC7, PC6 },
+#endif
+#if TNUM_SIOP > 6
+	{ P26, P30 },
+#endif
+};
+
+/*
+ *  シリアルI/OポートIDから管理ブロックを取り出すためのマクロ
+ */
+#define INDEX_SIOP(siopid)	 ((uint_t)((siopid) - 1))
+#define get_siopcb(siopid)	 (&(siopcb_table[INDEX_SIOP(siopid)]))
+#define get_siopinib(siopid) (&(siopinib_table[INDEX_SIOP(siopid)]))
+
+static void mbed_serial_irq_handler(uint32_t id, SerialIrq event);
 
 /*
@@ -58,5 +116,14 @@
 sio_initialize(intptr_t exinf)
 {
-	rx630_uart_initialize();
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  シリアルI/Oポート管理ブロックの初期化
+	 */
+	for (p_siopcb = siopcb_table, i = 0; i < TNUM_SIOP; p_siopcb++, i++) {
+		p_siopcb->p_siopinib = &(siopinib_table[i]);
+		p_siopcb->openflag = false;
+	}
 }
 
@@ -69,31 +136,23 @@
 	SIOPCB  *p_siopcb = NULL;
 	ER      ercd;
-	INTNO	intno_sio_tx, intno_sio_rx;
-	
-	/*
-	 *  シリアルI/O割込みをマスクする．
-	 *  (dis_int関数は、"\kernel\interrupt.c"に記述)
-	 */
-	p_siopcb = rx630_uart_get_siopcb(siopid);
-	intno_sio_tx = rx630_uart_intno_tx(p_siopcb);
-	intno_sio_rx = rx630_uart_intno_rx(p_siopcb);
-	ercd = dis_int(intno_sio_tx);
-	assert(ercd == E_OK);
-	ercd = dis_int(intno_sio_rx);
-	assert(ercd == E_OK);
-	
-	p_siopcb = 
-		rx630_uart_opn_por(siopid , exinf , UART_BAUDRATE , UART_CLKSRC);
-
-	/*
-	 *  シリアルI/O割込みをマスク解除する．
-	 *  (ena_int関数は、"\kernel\interrupt.c"に記述)
-	 */
-	ercd = ena_int(intno_sio_tx);
-	assert(ercd == E_OK);
-	ercd = ena_int(intno_sio_rx);
-	assert(ercd == E_OK);
-
-	return(p_siopcb);
+	serial_t *serial;
+
+	if ((siopid <= 0) || (siopid > (sizeof(siopcb_table) / sizeof(siopcb_table[0]))))
+		return NULL;
+	p_siopcb = get_siopcb(siopid);
+
+	if (p_siopcb->openflag)
+		return NULL;
+	p_siopcb->openflag = true;
+	p_siopcb->exinf = exinf;
+
+	serial = &p_siopcb->serial;
+	serial_init(serial, p_siopcb->p_siopinib->tx, p_siopcb->p_siopinib->rx);
+	serial_baud(serial, UART_BAUDRATE);
+	serial_format(serial, 8, ParityNone, 1);
+
+	serial_irq_handler(serial, mbed_serial_irq_handler, siopid);
+
+	return p_siopcb;
 }
 
@@ -105,20 +164,90 @@
 {
 	ER        ercd;
-	INTNO	intno_sio_tx, intno_sio_rx;
+	serial_t *serial = &p_siopcb->serial;
 
 	/*
 	 *  デバイス依存のクローズ処理．
 	 */
-	rx630_uart_cls_por(p_siopcb);
-	
-	/*
-	 *  シリアルI/O割込みをマスクする．
-	 */
-	intno_sio_tx = rx630_uart_intno_tx(p_siopcb);
-	intno_sio_rx = rx630_uart_intno_rx(p_siopcb);
-	ercd = dis_int(intno_sio_tx);
-	assert(ercd == E_OK);
-	ercd = dis_int(intno_sio_rx);
-	assert(ercd == E_OK);
+	serial_free(serial);
+	p_siopcb->openflag = false;
+}
+
+/*
+ *  シリアルI/Oポートへの文字送信
+ */
+bool_t
+sio_snd_chr(SIOPCB *p_siopcb, char c)
+{
+	serial_t *serial = &p_siopcb->serial;
+	if (!serial_writable(serial))
+		return false;
+	serial_putc(serial, c);
+	return true;
+}
+
+/*
+ *  シリアルI/Oポートからの文字受信
+ */
+int_t
+sio_rcv_chr(SIOPCB *p_siopcb)
+{
+	serial_t *serial = &p_siopcb->serial;
+	if (!serial_readable(serial))
+		return -1;
+	return serial_getc(serial);
+}
+
+/*
+ *  シリアルI/Oポートからのコールバックの許可
+ */
+void
+sio_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	serial_t *serial = &p_siopcb->serial;
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		serial_irq_set(serial, TxIrq, true);
+		break;
+	case SIO_RDY_RCV:
+		serial_irq_set(serial, RxIrq, true);
+		break;
+	}
+}
+
+/*
+ *  シリアルI/Oポートからのコールバックの禁止
+ */
+void
+sio_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	serial_t *serial = &p_siopcb->serial;
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		serial_irq_set(serial, TxIrq, false);
+		break;
+	case SIO_RDY_RCV:
+		serial_irq_set(serial, RxIrq, false);
+		break;
+	}
+}
+
+/*
+ *  シリアルI/Oポートからの送信可能コールバック
+ */
+void
+serial_irdy_snd(SIOPCB  *p_siopcb)
+{
+	/* 共通部（syssvc\serial.c）にあるsio_irdy_snd関数を呼び出し*/
+	sio_irdy_snd(p_siopcb->exinf);
+}
+
+/*
+ *  シリアルI/Oポートからの受信通知コールバック
+ */
+void
+serial_irdy_rcv(SIOPCB  *p_siopcb)
+{
+	/* 共通部（syssvc\serial.c）にあるsio_irdy_rcv関数を呼び出し*/
+	sio_irdy_rcv(p_siopcb->exinf);
 }
 
@@ -126,71 +255,23 @@
  *  SIOの割込みハンドラ
  */
-void sio_tx_isr(intptr_t exinf)
-{
-	rx630_uart_tx_isr(exinf);
-}
-
-/*
- *  SIOの割込みハンドラ
- */
-void sio_rx_isr(intptr_t exinf)
-{
-	rx630_uart_rx_isr(exinf);
-}
-
-/*
- *  シリアルI/Oポートへの文字送信
- */
-bool_t
-sio_snd_chr(SIOPCB *siopcb, char c)
-{
-	return(rx630_uart_snd_chr(siopcb, c));
-}
-
-/*
- *  シリアルI/Oポートからの文字受信
- */
-int_t
-sio_rcv_chr(SIOPCB *siopcb)
-{
-	return(rx630_uart_rcv_chr(siopcb));
-}
-
-/*
- *  シリアルI/Oポートからのコールバックの許可
- */
-void
-sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
-{
-	rx630_uart_ena_cbr(siopcb, cbrtn);
-}
-
-/*
- *  シリアルI/Oポートからのコールバックの禁止
- */
-void
-sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
-{
-	rx630_uart_dis_cbr(siopcb, cbrtn);
-}
-
-/*
- *  シリアルI/Oポートからの送信可能コールバック
- */
-void
-rx630_uart_irdy_snd(intptr_t exinf)
-{
-	/* 共通部（syssvc\serial.c）にあるsio_irdy_snd関数を呼び出し*/
-	sio_irdy_snd(exinf);
-}
-
-/*
- *  シリアルI/Oポートからの受信通知コールバック
- */
-void
-rx630_uart_irdy_rcv(intptr_t exinf)
-{
-	/* 共通部（syssvc\serial.c）にあるsio_irdy_rcv関数を呼び出し*/
-	sio_irdy_rcv(exinf);
-}
-
+void
+mbed_serial_irq_handler(uint32_t siopid, SerialIrq event)
+{
+	SIOPCB  *p_siopcb;
+
+	if ((siopid <= 0) || (siopid > (sizeof(siopcb_table) / sizeof(siopcb_table[0]))))
+		return;
+	p_siopcb = get_siopcb(siopid);
+
+	if (!p_siopcb->openflag)
+		return;
+
+	switch (event) {
+	case TxIrq:
+		serial_irdy_snd(p_siopcb);
+		break;
+	case RxIrq:
+		serial_irdy_rcv(p_siopcb);
+		break;
+	}
+}
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.cfg
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.cfg	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.cfg	(revision 374)
@@ -4,8 +4,5 @@
 
 #include <target_serial.h>
+
 ATT_INI({ TA_NULL, 0, sio_initialize });
-CFG_INT(INTNO_SIO_TX, { INTATR_SIO, INTPRI_SIO });
-CFG_INT(INTNO_SIO_RX, { INTATR_SIO, INTPRI_SIO });
 
-CRE_ISR(INTNO_SIO_TX_ISR, {TA_NULL, SIO_PORTID, INTNO_SIO_TX, sio_tx_isr, 1});
-CRE_ISR(INTNO_SIO_RX_ISR, {TA_NULL, SIO_PORTID, INTNO_SIO_RX, sio_rx_isr, 1});
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.h
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.h	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_serial.h	(revision 374)
@@ -53,18 +53,12 @@
 
 #include "gr_sakura.h"
-#include "rx630_uart.h"
+#include "serial_api.h"
 
-/*
- *  SIOの割込みハンドラのベクタ番号
- */
-#define INHNO_SIO_TX	INT_SCI0_TEI			/* 割込みハンドラ番号 */
-#define INTNO_SIO_TX	INT_SCI0_TEI			/* 割込み番号 */
-#define INHNO_SIO_RX	INT_SCI0_RXI			/* 割込みハンドラ番号 */
-#define INTNO_SIO_RX	INT_SCI0_RXI			/* 割込み番号 */
-#define INTPRI_SIO		-4						/* 割込み優先度 */
-#define INTATR_SIO		(TA_NULL)				/* 割込み属性 */
+#define SIO_RDY_SND 1
+#define SIO_RDY_RCV 2
 
 #ifndef TOPPERS_MACRO_ONLY
 
+typedef struct sio_port_control_block SIOPCB;
 
 /*
@@ -82,10 +76,4 @@
  */
 extern void		sio_cls_por(SIOPCB *p_siopcb);
-
-/*
- *  SIOの割込みハンドラ
- */
-extern void 	sio_tx_isr(intptr_t exinf);
-extern void 	sio_rx_isr(intptr_t exinf);
 
 /*
Index: asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_syssvc.h
===================================================================
--- asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_syssvc.h	(revision 364)
+++ asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_syssvc.h	(revision 374)
@@ -113,4 +113,10 @@
 
 /*
+ *  使用するシリアルポートのPinName
+ */
+#define STDIO_UART_TX P20
+#define STDIO_UART_RX P21
+
+/*
  *  システムログタスク関連の定数の定義
  *
