
	     TOPPERS/JSPͥ 桼ޥ˥奢 
                 i386 åȰ¸

            Release 1.2бǽ: 14-Nov-2001

------------------------------------------------------------------------ 
 TOPPERS/JSP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Just Standard Profile Kernel

 Copyright (C) 2000,2001 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN
 Copyright (C) 2002 by Monami software, Limited Partners

 嵭ԤϡFree Software Foundation ˤäƸɽƤ 
 GNU General Public License  Version 2 ˵ҤƤ狼
 (1)(4)ξ˸¤ꡤܥեȥܥեȥ
 ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
 ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
 (1) ܥեȥ򥽡ɤηѤˤϡ嵭
     ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
     ˴ޤޤƤ뤳ȡ
 (2) ܥեȥѲǽʥХʥꥳɡʥ֥륪
     ȥե饤֥ʤɡˤηѤˤϡ
     ȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭ɽ
     Ѿ浪Ӳ̵ݾڵǺܤ뤳ȡ
 (3) ܥեȥԲǽʥХʥꥳɤηޤϵ
     ߹ѤˤϡΤ줫ξȡ
   (a) ѤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
       ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
   (b) Ѥη֤̤ˡˤäơ嵭Ԥ𤹤
       ȡ
 (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
     ⡤嵭Ԥդ뤳ȡ

 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥϡ
 ܥեȥ˴ؤơŬѲǽޤơʤݾڤԤ
 ʤޤܥեȥѤˤľŪޤϴŪ
 ʤ»˴ؤƤ⡤Ǥʤ

 @(#) $Id: i386.txt,v 1.2 2002/04/06 12:23:01 honda Exp $
------------------------------------------------------------------------


i386 åȰ¸γ

1.1 åȥƥȳȯĶ

i386 ץåΥåȥƥȤƤϡPC/ATߴPCѥޥܡ
ɤ򥵥ݡȤƤ롥

ޤFPU ϥݡȤƤʤ.
CPUi386̸ߴǤʤư뤬ʲǤϡi386̸ߴCPU
ΤȤi386ȤɽѤ.

ȯĶˤϡGCC ʤɤ GNUȯĶѤ֥ȥեե
ޥåȤ ELF ɸȤ롥


1.2 ݡȤ뵡ǽγ

i386 ¸εǽȤơߤζػߤȵ(dis_intena_int)򥵥ݡ
Ƥ.
ߥޥѹ(chg_ixxget_ixx)ȡǽɾѥƥﻲ
ȵǽ(vxget_tim)ϥݡȤƤʤ


1.3 ¾ΥåȤؤΥݡƥ

CPUi386̸ߴǤʤưȻפ롣ưǧѤ
CPUPentium (133MHz)Ǥ롣


1.4 ֡ȥ

i386ǤTOPPERS/JSPͥϡmultibootΥ֡ȥ鵯ư
ȤȤƤ롣
¾CPUѤTOPPERS/JSP ͥȤϰۤʤꡢi386ǤΥͥˤ GDB 
֤ΥݡȤ¸ߤʤ
Τᡤsys_putc ϳߥϥɥľá뤳ȤǼ¸Ƥ롣
GDB_STUB Ȥѥե饰ѤʤΤդɬפǤ롣


1.5 ꥢݡ

i386ǤǤϡͥΥѤ1ĤΥꥢݡȻѤ롥
ѤݡȤϡCOM1Ǥ롣
ܡ졼:9600bps,ǡ:8bit,Parity:none,Stop:1bitǤ롥



i386 ץå¸εǽ

Ǥϡͥ뤪ӥƥॵӥεǽǡi386¸ʬ
ˤĤƲ⤹롥

2.1 ǡ

int unsigned intΥ 32ӥåȤǤ롥

2.2 ߴǽȳߥϥɥ

DEF_INH ǻꤹߥϥɥֹ(inhno)ϡi386 Ǥϡ
ߥǥץơ֥(IDT)γֹǤ.
i386Ǥ,inhno33255ޤǤͭǤ. ϰϳ
inhnoꤷưݾڤʤ. 
(IDTγֹ0x20ʲֹ,ƥҤˤä
ΥץåΤͽ󤵤Ƥ.)
ϰϤinhnoꤷưݾڤʤ.

2.3 CPU㳰ǽCPU㳰ϥɥ

DEF_EXC ǻꤹߥϥɥֹ(excno)ϡi386 Ǥ
եȤ⤷ϥܡȤֹǤ.

2.4 ȥåץ⥸塼

i386¸Υȥåץ⥸塼(start.S)ǤϡνԤ

(A) ץå⡼ɤνȥåݥ󥿤ν

ǽˡåݥ󥿤 STACKTOP ꤹ롥ǳߥ
ݥ󥿤ꤵ줿åΰϡͥ뵯ư󥿥ƥ
ѤΥåΰȤƻȤ롥STACKTOP ϡsys_config.h 
뤳ȤꤷƤ롥

(B) hardware_init_hook θƽФ

hardware_init_hook  0 Ǥʤˤϡhardware_init_hook ƤӽФ
hardware_init_hook ϡͥ뤬ư˹Ԥɬפ륿
Ȱ¸νԤѰդƤ롥hardware_init_hook ɤǤ
Ƥʤ硤󥫤ǤΥܥ 0 (󥫥
ץ˵Ҥ)

(C) software_init_hook θƽФ

software_init_hook  0 Ǥʤˤϡsoftware_init_hook ƤӽФ
software_init_hook ϡͥ뤬ư˹Ԥɬפ륽եȥ
Ķ(Ūˤϡ饤֥)¸νԤѰդƤ롥
software_init_hook ɤǤƤʤ硤󥫤ǤΥ
 0 (󥫥ץ˵Ҥ)

(E) ͥεư

kernel_start ʬͥư롥kernel_start ꥿
Ƥ뤳ȤꤷƤʤ


ƥ¸εǽ

3.1 ƥ९åɥ饤

ƥ९åɥ饤Ф isig_tim ƤӽФϡsys_defs.h  
TIC_NUME  TIC_DENO Ƥ(ɸ 1ߥü)
ѹ뤳Ȥǡisig_tim ƤӽФѹ뤳ȤǤ롥
ޤ٤ 1äǤ뤿ᡤ1ñ̤üˤʤͤꤷ
ˤϡisig_tim θƽФ˸뤳Ȥˤʤ롥

3.2 ǽɾѥƥﻲȵǽ

i386¸Ǥϡǽɾѥƥﻲȵǽ(vxget_tim)򥵥ݡȤ
ʤ

3.3 ꥢ륤󥿥եɥ饤

ꥢ륤󥿥եɥ饤ФϡPC/ATߴĶǰŪ16550ߴΥ
ꥢ򥵥ݡȤƤ롥 COM1I/O port 0x3F9, IRQ4 γߤѤ
ȤȤƤ. ݡȥɥ쥹ߤѹˤ
sys_config.hhw_serial.hŬ񤭴뤳ȡ
COM2,COM3,COM4 Τν,ߤΤȤݡȤƤʤ.

3.4 ޥå

4GBեåȥǥǤ롣ΰ 0x01000000


ȯĶι

ȯĶιˡˤĤƤϡGNUȯĶۥޥ˥奢򻲾ȤΤȡ

4.1 ȯĶΥС
ưǧġΥСϰʲ̤Ǥ롥

    BINUTILS : 2.10.1
    GCC-CORE : 2.95.3
    GDB      : 4.18
    NEWLIB   : 1.9.0


¾

5.1 ǥ쥯ȥꡦե빽

i386 åȰ¸γƥեγפϼ̤ꡥ

    config/i386/
	Makefile.config Makefile i386 ¸
    cpu_defs.h      ץå¸Υץꥱ
    cpu_config.h    ץå¸ι
    cpu_config.c    ץå¸δؿ
    cpu_support.S   ץå¸Υ֥롼
    cpu_context.h   ƥ
    makeoffset.c    offset.h ݡȥץ
    cpu_insn.h      ٥Υץå롼
    i386.h          i386 
    elf_i386.ld	    ѤΥץ

    config/i386/pcat/
    Makefile.config Makefile PC/AT ¸
    hw_serial.h     ꥢ륤󥿥եǥХ롼
    hw_timer.h      롼
    irc.h	    ߥȥι
    irc_inline.h    ߥȥѤΥ饤ؿ
    multiboot.h	    ޥ֡ɸѤι
    start.S         ȥåץ⥸塼(multiboot)
    sys_config.c    ƥ¸δؿ
    sys_config.h    ƥ¸ι
    sys_defs.h      ƥ¸Υץꥱ
    sys_support.S   ƥ¸Υ֥롼
