
	     TOPPERS/JSPJ[l [UY}jA 
		    iM68040 ^[Qbgˑj

             iRelease 1.4.1ΉCŏIXV: 6-Oct-2004j

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

 Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN

 L쌠҂́Cȉ (1)`(4) ̏CFree Software Foundation 
 ɂČ\Ă GNU General Public License  Version 2 ɋL
 qĂ𖞂ꍇɌC{\tgEFAi{\tgEFA
 ς̂܂ށDȉjgpEEρEĔzziȉC
 pƌĂԁj邱Ƃ𖳏ŋD
 (1) {\tgEFA\[XR[ȟ`ŗpꍇɂ́CL̒
     \C̗pщL̖ۏ؋K肪Ĉ܂܂̌`Ń\[
     XR[hɊ܂܂Ă邱ƁD
 (2) {\tgEFACCu`ȂǁC̃\tgEFAJɎg
     pł`ōĔzzꍇɂ́CĔzzɔhLgip
     ҃}jAȂǁjɁCL̒쌠\C̗pщL
     ̖ۏ؋Kfڂ邱ƁD
 (3) {\tgEFAC@ɑgݍނȂǁC̃\tgEFAJɎg
     płȂ`ōĔzzꍇɂ́Ĉꂩ̏𖞂
     ƁD
   (a) ĔzzɔhLgip҃}jAȂǁjɁCL̒
       쌠\C̗pщL̖ۏ؋Kfڂ邱ƁD
   (b) Ĕzž`ԂCʂɒ߂@ɂāCTOPPERSvWFNg
       񍐂邱ƁD
 (4) {\tgEFA̗pɂ蒼ړI܂͊ԐړIɐ邢Ȃ鑹
     QCL쌠҂TOPPERSvWFNgƐӂ邱ƁD

 {\tgEFÁCۏ؂Œ񋟂Ă̂łDL쌠҂
 TOPPERSvWFNǵC{\tgEFAɊւāC̓Kp\
 ܂߂āCȂۏ؂sȂD܂C{\tgEFA̗pɂ蒼
 ړI܂͊ԐړIɐȂ鑹QɊւĂC̐ӔC𕉂ȂD

 @(#) $Id: m68k.txt,v 1.1 2008/06/17 00:04:40 suikan Exp $
------------------------------------------------------------------------


PDM68040 ^[Qbgˑ̊Tv

1.1 ^[QbgVXe

M68040vZbT̃^[QbgVXeƂẮC()dY DVE-68K/40
CPU{[hiCPU: MC68LC040ĵ݂T|[gĂD

1.2 JƎs

Jɂ́CGCCȂǂGNUJpCIuWFNgt@CtH[}b
gELFWƂD

sƂāCROMj^p@GDBX^up@T|[g
ĂDGDBX^upꍇɂ́CMakefileŁCDBGENVGDB_STUB
`iftHgjDROMj^pꍇɂ́CDBGENV`ȂD

1.3 T|[g@\̊Tv

M68040ˑ̋@\ƂāC݃}XN̕ύXEQƁichg_ixxCget_ixxj
T|[gĂD܂CDVE-68K/40 CPU{[hˑ̋@\ƂāC\]
pVXeQƋ@\ivxget_timjT|[gĂD݂̋֎~
idis_intCena_intj̓T|[gĂȂD

1.4 ̃^[Qbgւ̃|[eBO

o[Wł́CFPUȂMC68LC040݂̂T|[gĂDFPU
pȂꍇɂ́CFPUM68040ɂKp\Ȃ͂łDFPUp
ꍇɂ́CfBXpb`FPUWX^ۑ^AKv
ǁC኱̉KvłD

M68KñvZbTւ̃|[eBOɂẮC}X^X^bNƕ
Ɋ݃X^bNM68020ȍ~̃vZbTւ͔rIeՂɃ|[eB
O\Ǝv邪CÕvZbTւ̃|[eBO͂ʓ|
낤D


QDM68040vZbTˑ̋@\

̐߂ł́CJ[lуVXeT[rX̋@\̒ŁCM68040ˑ̕
ɂĉD

2.1 f[^^

signed int^Cunsigned int^Csize_t^̃TCÝC32rbgł
D

2.2 ݊Ǘ@\Ɗ݃nh

J[lǗO݂̊NMÎ݂łDāCCPUbNԂ⏉[
`ł́CNMIȊOׂ݂̊͂ċ֎~ĂD̓Iɂ́CIPM
iInterrupt Priority Maskj7ɐݒ肳D

DEF_INHŎw肷銄݃nhԍiinhnoj́CM68040ł̗OxN^
\C̃f[^^iINHNOjunsigned int^ɒ`ĂD
DEF_INHŁCOxN^ԍƂėLłȂlCO݂ɑΉȂ
ԍw肵ꍇ͕̓ۏ؂ȂD

M68040ˑ̋@\ƂāCSRiStatus RegisterjIPMiInterrupt
Priority Maskj̒lύX邽߂̃T[rXR[chg_ipmƁCQƂ邽
߂̃T[rXR[get_ipmT|[gĂDȂCIPM̒l\f[^
^IPḾCunsigned int^ɒ`ĂD

̃T[rXR[́C^XNReLXgCPUbNԂ̏ꍇ
ɂ̂݌ĂяoƂłDchg_ipmɂIPM0ȊOiȂ킿C炩
݂̊֎~ĂԁjɂꍇłCfBXpb`͋֎~ꂸC
chg_ipmɂύXIPM̒ĺCfBXpb`̃^XNɈpD
Ⴆ΁C^XNIPM1ɕύXC炩݂̊ɂʂ̃^XN
ɐ؂ւƁC؂ւ̃^XNłIPM1ɂȂDCIPM0 
ȊOɐݒ肵ĂĂCsł^XNȂȂꍇɂIPM͈ꎞI
0ɂȂD́CM68040̖߃Zbg炭鐧łii
Ȃ킯ł͂ȂjD

chg_ipmT|[g邽߂ɁC݃nh̏oȂǂɃI[owb
h𐶂ĂDŁCSUPPORT_CHG_IPMƂ}NɂC̃T[
rXR[T|[g邩ǂ؂ւ悤ɂĂD
SUPPORT_CHG_IPḾCcpu_config.h̒Ń}N`ĂD

M68040ˑ̊݃}XN̕ύXEQƂ̂߂̃T[rXR[̎dl͎
ʂD

(1) chg_ipm			݃}XN̕ύX

yCAPIz
	ER ercd = chg_ipm(IPM ipm);

yp[^z
	IPM	ipm		ݒ肷ׂ IPM ̒l

y^[p[^z
	ER	ercd		G[R[h

yG[R[hz
	E_CTX		ReLXgG[
	E_PAR		p[^G[iipm sj

y@\z

IPMiInterrupt Priority Maskj ipm Ŏw肳ꂽlɐݒ肷Dw肵
l 0`6 ȊȌꍇCE_PARG[ƂȂDIPM  1`6 ɐݒ肵ꍇ
łCfBXpb`͋֎~ȂD܂Cݒ肵 IPM ̒ĺCfBXpb
`pDfBXpb`֎~ꍇɂ́Cdis_dsp ƕp
΂悢D

ȂC̃T[rXR[pāCIPM  7 iׂĂ݂̊֎~j
ݒ肷邱Ƃ͂łȂDIPM  7 ɂꍇɂ́Cloc_cpu gׂ
łD

̃T[rXR[́C^XNReLXg CPUbNԂ̎̂݌
яoƂłD^XNReLXg CPUbNԂŌĂяo
ɂ́CE_CTXG[ƂȂD

(2) get_ipm			݃}XN̎Q

yCAPIz
	ER ercd = get_ipm(IPM *p_ipm);

yp[^z
	Ȃ

y^[p[^z
	ER	ercd		G[R[h
	IPM	ipm		݂ IPM ̒l

yG[R[hz
	E_CTX		ReLXgG[

y@\z

݂ IPMiInterrupt Priority Maskj̒lǂݏoCipm ɕԂD

̃T[rXR[́C^XNReLXg CPUbNԂ̎̂݌
яoƂłD^XNReLXg CPUbNԂŌĂяo
ɂ́CE_CTXG[ƂȂD

2.3 CPUOǗ@\CPUOnh

DEF_EXC Ŏw肷銄݃nhԍiexcnoj́CM68040 ł̗OxN^
ԍ\C̃f[^^iEXCNOj unsigned int^ɒ`ĂD
DEF_EXC ŁCOxN^ԍƂėLłȂlCCPUOɑΉȂ
w肵ꍇ͕̓ۏ؂ȂD

2.4 X^[gAbvW[

M68040ˑ̃X^[gAbvW[istart.Sjł́C̏
sD

(A) vZbT[h̏ƃX^bN|C^̏

ŏɁCׂẴLbV𖳌CR[hLbVƃf[^Lb
VɗLɂD܂CvZbT̃[hCX[poCU[hE
݃[hɐݒ肵CNMI ȊÔׂĂ݂̊֎~DX^[gAb
vW[́CX[poCU[hŋNȂ΂ȂȂ̂ŁC
X[poCU[hɐݒ肷̂́C{̓_łD

ɁC݃X^bN|C^iSPIj STACKTOP ɐݒ肷DŊ
݃X^bN|C^ɐݒ肳ꂽX^bN̈́CJ[lN͔^XN
ReLXgp̃X^bN̈ƂĎgDSTACKTOP ́Csys_config.h 
Œ`邱Ƃz肵ĂD܂Ct[|C^ 0 ɏ
D

(B) hardware_init_hook ̌ďo

hardware_init_hook  0 łȂꍇɂ́Chardware_init_hook ĂяoD
hardware_init_hook ́CJ[lNOɍsKv^[Qb
gˑ̏s߂ɗpӂĂDhardware_init_hook ǂł
`ĂȂꍇCJł̃V{ 0 ɒ`iJXN
vgɋLqjD

(C) bssZNV dataZNV̏

bssZNV[NAD܂CdataZNVD

(D) software_init_hook ̌ďo

software_init_hook  0 łȂꍇɂ́Csoftware_init_hook ĂяoD
software_init_hook ́CJ[lNOɍsKv\tgEF
Ai̓Iɂ́CCujˑ̏s߂ɗpӂĂD
software_init_hook ǂł`ĂȂꍇCJł̃V{
 0 ɒ`iJXNvgɋLqjD

(E) J[l̋N

kernel_start ֕򂵁CJ[lNDkernel_start 烊^[
Ă邱Ƃ͑z肵ĂȂD


RDDVE-68K/40 VXeˑ̋@\

3.1 VXeNbNhCo

VXeNbNhCoisig_timĂяóCsys_defs.h
TIC_NUMETIC_DENOŒ`ĂiW 1~bjD̒`
X邱ƂŁCisig_timĂяoύX邱ƂłDC^
C}̐x1ʕbł邽߁C1ʕbPʂŒ[ɂȂlݒ肵ꍇɂ́C
isig_tim̌ďoɌ덷邱ƂɂȂD

3.2 \]pVXeQƋ@\

DVE-68K/40ˑł́C\]pVXeQƋ@\ivxget_timjT
|[gĂD\]pVXe̐x1ʕbPʂł邪C^C
}̌ݒlǂݏo߂ɈꎞIɃ^C}~Kv邽߁C
vxget_timĂԓxɃVXeNbNÂx邱ƂɂȂDȂC
SYSUTIM^UD^i64rbg̕^jɒ`ĂD

3.3 VAC^tF[XhCo

DVE-68K/40ˑ̃VAC^tF[XhCóCDVE-68K/40 CPU{[
h2̃VAC^tF[XT|[gĂD|[gID=1|[gBC
|[gID=2|[gAɑΉĂD|[g̊ĂtɂĂ̂́C
GDBX^u܂ROMj^|[gAgp邽߂łD

3.4 }bv

DVE-68K/40ˑł́CCPU{[h̃4MB̏ꍇz肵CR[h
0x10000`0xfffff̖1MBCf[^̈0x100000`̖3MBC^XNR
eLXgp̃X^bN̈`0x3fffffɊmۂĂD0`0xffff64KB 
́CROMj^܂GDBX^ũ[NGAƂȂĂCgp邱Ƃ
łȂD


SDJ̍\z

J̍\z@ɂẮCGNUJ\z}jAQƂ邱ƁD

4.1 J̃o[W

mFc[̃o[W͈ȉ̒ʂłD

    BINUTILS : 2.13.2.1
    GCC-CORE : 2.95.3
    GDB      : 5.3
    NEWLIB   : 1.9.0

GCC 2.95.3ł́CAvP[VWCCugpȂȂC
NEWLIB͕KvȂD

GCC 3.3pꍇCRpCWCCu֐ĂяoR[h
邽߁CNEWLIBKvɂȂDNEWLIB̕WCCuN
߂ɁCMakefileLIBS̒`Ɉȉ̂悤 -lc ǉKvD

    LIBS := $(LIBS) $(CXXLIBS) -lc -lgcc


TD̑

5.1 fBNgEt@C\

M68040^[Qbgˑ̊et@C̊Tv͎̒ʂD

    config/m68k/
	Makefile.config	MakefileM68040ˑ`
	cpu_defs.h	vZbTˑ̃AvP[Vp`
	cpu_config.h	vZbTˑ̍\`
	cpu_config.c	vZbTˑ̊֐
	cpu_support.S	vZbTˑ̃Tu[`
	cpu_context.h	ReLXg
	cpu_rename.def	J[l̓ʖ̃l[`
	cpu_rename.h	J[l̓ʖ̃l[
	cpu_unrename.h	J[l̓ʖ̃l[
	tool_defs.h	Jˑ̃AvP[Vp`iGNUJpj
	tool_config.h	Jˑ̍\`iGNUJpj
	makeoffset.c	offset.hT|[gvO
	cpu_insn.h	჌x̃vZbT샋[`
	start.S		X^[gAbvW[
	m68kelf.ld	JXNvg

    config/m68k/dve68k/
	Makefile.config	MakefileDVE-68K/40ˑ`
	sys_defs.h	VXeˑ̃AvP[Vp`
	sys_config.h	VXeˑ̍\`
	sys_config.c	VXeˑ̊֐
	sys_support.S	VXeˑ̃Tu[`
	sys_rename.def	J[l̓ʖ̃l[`
	sys_rename.h	J[l̓ʖ̃l[
	sys_unrename.h	J[l̓ʖ̃l[
	hw_timer.h	^C}샋[`
	hw_serial.h	SIOhCo
	hw_serial.cfg	SIOhCõRtBM[Vt@C
	dve68k.h	DVE-68K/40 CPU{[h̃n[hEFA̒`
	dve68k_dga.h	DGÃANZX[eBeB

    pdic/simple_sio/
	upd72001.h	PD72001p ȈSIOhCo֘A̒`
	upd72001.c	PD72001p ȈSIOhCo

5.2 ^[Qbgւ̃_E[hƎs

^[Qbgւ̃_E[hƎs菇ɂẮCGNUJ\z}j
AɐĂ邪Cȉł́CM68040DVE-68K/40 CPU{[h̏
ɓL̎ɂĐD

(A) ROMj^p@

DVE-68K/40 CPU{[h̏ꍇCʔROMj^ƂɑΉ[\t
gpƁCRR}hŃoCi`̃t@C_E[h邱
łD

    #R 10000
    \up jsp.bin

vO̎śCgR}hōsD

    #g 10000

(B) GDBX^up@

M68040ł́CvOsNMIiDVE-68K/40 CPU{[hł́C
ABORTXCb`jƂŁCvO~āCgdbɐ߂
ƂłD

ȏ
