This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ref to previous question-'calling path questions, thanks'


>>>>> " " == Qiang Huang <jameshq@hotmail.com> writes:

     > Hi eCOS experts:
     >    Maybe my previous question 
     > (http://ecos.sourceware.org/ml/ecos-discuss/2006-09/msg00231.html) is a 
     > little confusing, what it really means is the followings:

     > (ARM target)
     > Two thread #1 and #2 exist in system

     > (1) Thread #1 runs first
     > (2) Thread #1 issues SWI instruction
     > (3) Enter SWI ISR and run on thread #1 stack (svc mode)
     > (4) At the time IRQ occurs and preempts SWI ISR
     > (5) Switch SVC and run on thread #1 stack (svc mode)
     > (6) Eventually comes to interrupt_end() and unlock_inner(), which will cause 
     > a context switching
     > (7) Thread #2 context is loadded and return with thread #2 running

     > Here seems SWI is preempted by thread #2? Is this correct?
     > (shouldn't all ISR be finished before any thread has the chance to run?)

     > Hope someone can give me some hint, that would be very
     > thankful.

eCos does not use SWI's. The main purpose of the SWI instruction is to
provide a controlled mechanism for switching between user mode and
supervisor mode, but eCos applications always run in supervisor mode
so there is no need for a switch. If for some obscure reason an
application does execute a SWI instruction the resulting system
behaviour is basically undefined.

Bart

-- 
Bart Veer                       eCos Configuration Architect
http://www.ecoscentric.com/     The eCos and RedBoot experts

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]