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

	    Release 1.2бǽ: 12-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

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

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

 @(#) $Id: m68k.txt,v 1.6 2001/11/12 14:08:42 hiro Exp $
------------------------------------------------------------------------


M68040 åȰ¸γ

1.1 åȥƥȳȯĶ

M68040ץåΥåȥƥȤƤϡ()Ż DVE-68K/40
CPUܡɡCPU: MC68LC040ˤΤߤ򥵥ݡȤƤ롥

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

1.2 ݡȤ뵡ǽγ

M68040¸εǽȤơߥޥѹȡchg_ixxget_ixxˤ
ݡȤƤ롥ޤDVE-68K/40 CPUܡɰ¸εǽȤơǽɾ
ѥƥﻲȵǽvxget_timˤ򥵥ݡȤƤ롥ߤζػߤ
ġdis_intena_intˤϥݡȤƤʤ

1.3 ¾ΥåȤؤΥݡƥ

СǤϡFPU ʤ MC68LC040 Τߤ򥵥ݡȤƤ롥FPU 
ѤʤˤϡFPU¢ M68040 ˤŬѲǽʤϤǤ롥FPU
Ѥˤϡǥѥå FPU쥸¸ɬפ
ʤɡ㴳β¤ɬפǤ롥

¾ m68k ΥץåؤΥݡƥ󥰤ˤĤƤϡޥå
̤˳ߥå M68020 ʹߤΥץåؤŪưפ˥ݡ
ƥ󥰲ǽȻפ뤬ΥץåؤΥݡƥ󥰤
Ǥͽۤ롥


M68040 ץå¸εǽ

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

2.1 ǡ

signed int unsigned intΥ 32ӥåȤǤ롥

2.2 ߴǽȳߥϥɥ

ͥγߤ NMI ΤߤǤ롥äơCPUå֤
롼ǤϡNMI ʳγߤϤ٤ƶػߤƤ롥Ūˤϡ
IPMInterrupt Priority Maskˤ 7 ꤵ롥

DEF_INH ǻꤹߥϥɥֹinhnoˤϡM68040 Ǥ㳰٥
ֹɽΥǡINHNOˤ unsigned intƤ롥
DEF_INH ǡ㳰٥ֹȤͭǤʤͤ䡤ߤбʤ
ֹꤷưݾڤʤ

M68040¸εǽȤơSRStatus Register IPMInterrupt
Priority Maskˤͤѹ뤿Υӥ chg_ipm ȡȤ
Υӥ get_ipm 򥵥ݡȤƤ롥ʤIPM ͤɽ
ǡ IPM ϡunsigned intƤ롥

ΥӥϡƥȤ CPUå֤ξ
ˤΤ߸ƤӽФȤǤ롥chg_ipm ˤ IPM  0 ʳʤʤ
餫γߤػߤƤ֡ˤˤǤ⡤ǥѥå϶ػߤ
줺chg_ipm ˤѹ IPM ͤϡǥѥåΥ˰
Ѥ롥㤨С륿 IPM  1 ѹ塤餫γߤ
̤ΥڤؤȡڤؤäΥǤ IPM  1 ˤ
롥IPM  0 ʳꤷƤƤ⡤¹ԤǤ륿ʤʤ
ˤ IPM ϰŪ 0 ˤʤ롥ϡM68040 ̿᥻åȤ餯
»Ǥ롥

chg_ipm 򥵥ݡȤ뤿ˡߥϥɥνʤɤ˥Хإ
ɤƤ롥ǡSUPPORT_CHG_IPM ȤޥˤꡤΥ
ӥ򥵥ݡȤ뤫ɤڤؤ褦ˤƤ롥
SUPPORT_CHG_IPM ϡcpu_config.h  #define Ƥ롥

M68040¸γߥޥѹȤΤΥӥλͤϼ
̤ꡥ

(1) chg_ipm			ߥޥѹ

CAPI
	ER ercd = chg_ipm(IPM ipm);

ڥѥ᡼
	IPM	ipm		ꤹ٤ IPM 

ڥ꥿ѥ᡼
	ER	ercd		顼

ڥ顼ɡ
	E_CTX		ƥȥ顼
	E_PAR		ѥ᡼顼ipm 

ڵǽ

IPMInterrupt Priority Maskˤ ipm ǻꤵ줿ͤꤹ롥ꤷ
ͤ 06 ʳξ硤E_PAR顼Ȥʤ롥IPM  16 ꤷ
Ǥ⡤ǥѥå϶ػߤʤޤꤷ IPM ͤϡǥѥ
Ѥ롥ǥѥåػߤˤϡdis_dsp ʻѤ
Ф褤

ʤΥӥѤơIPM  7 ʤ٤Ƥγߤػߡˤ
ꤹ뤳ȤϤǤʤIPM  7 ˤˤϡloc_cpu Ȥ٤
Ǥ롥

ΥӥϡƥȤ CPUå֤λΤ߸
ӽФȤǤ롥󥿥ƥȤ CPUå֤ǸƤӽФ
ˤϡE_CTX顼Ȥʤ롥

(2) get_ipm			ߥޥλ

CAPI
	ER ercd = get_ipm(IPM *p_ipm);

ڥѥ᡼
	ʤ

ڥ꥿ѥ᡼
	ER	ercd		顼
	IPM	ipm		ߤ IPM 

ڥ顼ɡ
	E_CTX		ƥȥ顼

ڵǽ

ߤ IPMInterrupt Priority Maskˤͤɤ߽Фipm ֤

ΥӥϡƥȤ CPUå֤λΤ߸
ӽФȤǤ롥󥿥ƥȤ CPUå֤ǸƤӽФ
ˤϡE_CTX顼Ȥʤ롥

2.3 CPU㳰ǽCPU㳰ϥɥ

DEF_EXC ǻꤹߥϥɥֹexcnoˤϡM68040 Ǥ㳰٥
ֹɽΥǡEXCNOˤ unsigned intƤ롥
DEF_EXC ǡ㳰٥ֹȤͭǤʤͤ䡤CPU㳰бʤ
ꤷưݾڤʤ

2.4 ȥåץ⥸塼

M68040¸Υȥåץ⥸塼start.SˤǤϡν
Ԥ

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

ǽˡ٤ƤΥå̵塤ɥåȥǡ
򶦤ͭˤ롥ޤץåΥ⡼ɤ򡤥ѥХ⡼ɡ
ߥ⡼ɤꤷNMI ʳΤ٤Ƥγߤػߤ롥ȥ
ץ⥸塼ϡѥХ⡼ɤǵưʤФʤʤΤǡ
ѥХ⡼ɤꤹΤϡϥǤ롥

ˡߥåݥ󥿡SPIˤ STACKTOP ꤹ롥ǳ
ߥåݥ󥿤ꤵ줿åΰϡͥ뵯ư󥿥
ƥѤΥåΰȤƻȤ롥STACKTOP ϡsys_config.h 
뤳ȤꤷƤ롥ޤե졼ݥ󥿤 0 ˽
롥

(B) hardware_init_hook θƽФ

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

(C) bss dataν

bss򥼥ꥢ롥ޤdata롥

(D) software_init_hook θƽФ

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

(E) ͥεư

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


DVE-68K/40 ƥ¸εǽ

3.1 ƥ९åɥ饤

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

3.2 ǽɾѥƥﻲȵǽ

DVE-68K/40¸Ǥϡǽɾѥƥﻲȵǽvxget_timˤ
ݡȤƤ롥ǽɾѥƥ٤ 1ñ̤Ǥ뤬
ޤθͤɤ߽Ф˰Ū˥ޤߤɬפ뤿ᡤ
vxget_tim Ƥ٤˥ƥ९åŤ٤뤳Ȥˤʤ롥ʤ
SYSUTIM UD64ӥåȤ̵ˤƤ롥

3.3 ꥢ륤󥿥եɥ饤

DVE-68K/40¸Υꥢ륤󥿥եɥ饤ФϡDVE-68K/40 CPUܡ
ɤ2ĤΥꥢ륤󥿥ե򥵥ݡȤƤ롥ݡID=1 ݡ
AݡID=2 ݡB бƤ롥ǥեȤΥꥢݡȤϡ
ݡB ꤷƤʥݡA ϥ֤ޤ ROM˥ǻѤ뤿ˡ

3.4 ޥå

DVE-68K/40¸ǤϡCPUܡɾΥ꤬ 4MB ξꤷ
ΰ 0x100000xfffff 1MBǡΰ 0x100000 3MB
ƥѤΥåΰ 0x3fffff ˳ݤƤ롥0
0xffff  64KB ϡROM˥ޤϥ֤ΥꥢȤʤäƤꡤ
Ѥ뤳ȤǤʤ


ȯĶι

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

4.1 ȯĶΥС

ưǧġΥСϰʲ̤Ǥ롥

    BINUTILS : 2.9.1
    GCC-CORE : 2.95.2
    GDB      : 4.18
    NEWLIB   : 1.8.1


¾

5.1 ǥ쥯ȥꡦե빽

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

    config/m68k/
	Makefile.config	Makefile  M68040¸
	cpu_defs.h	ץå¸Υץꥱ
	cpu_config.h	ץå¸ι
	cpu_config.c	ץå¸δؿ
	cpu_support.S	ץå¸Υ֥롼
	cpu_context.h	ƥ
	makeoffset.c	offset.h ݡȥץ
	cpu_insn.h	٥Υץå롼
	start.S		ȥåץ⥸塼
	m68kelf.ld	󥫥ץ

    config/m68k/dve68k/
	Makefile.config	Makefile  DVE-68K/40¸
	sys_defs.h	ƥ¸Υץꥱ
	sys_config.h	ƥ¸ι
	sys_config.c	ƥ¸δؿ
	sys_support.S	ƥ¸Υ֥롼
	hw_timer.h	롼
	hw_serial.h	ꥢ륤󥿥եǥХ롼
	dve68k.h	DVE-68K/40 ϡɥ

5.2 åȤؤΥɤȼ¹

åȤؤΥɤȼ¹ԼˤĤƤϡGNUȯĶۥޥ˥
Ƥ뤬ʲǤϡM68040  DVE-68K/40 CPUܡɤ
ͭλˤĤ롥

(A) ROM˥Ѥˡ

DVE-68K/40 CPUܡɤξ硤 ROM˥Ȥбü
ȤѤȡR ޥɤǥХʥΥեɤ뤳
Ǥ롥

    #R 10000
    \up jsp.bin

ץμ¹Ԥϡg ޥɤǹԤ

    #g 10000

(B) ֤Ѥˡ

M68040 Ǥϡץ¹ NMI 򤫤DVE-68K/40 CPUܡɤ
ϡABORTå򲡤ˤȤǡץߤơgdb 
᤹ȤǤ롥

ʾ
