question about thread on rtems for pc386's context
阎淼
yanmiaobest at gmail.com
Tue Oct 9 06:52:56 UTC 2007
Hi,
In RTEMS ABI for x86 architecture, eax, ecx, edx are scratch
registers. RTEMS do not save the contents of these three registers
when excuting rtems directives. In other words, the content of eax,
ecx, edx may be changed after a function call( call and ret
instruction), and complier knows this well to generate correct code.
So EAX, ECX, EDX are exactly those missing from Context_Control
structure, other general registers stay in there( segment registers do
not change ). As for ISR, the execution flow of rtems directives is
interruptted, so eax, ecx, edx must be saved to further restore
execution flow. Since rtems directives do not change the content of
other registers( if used, they will be restored upon ret), so only the
three registers need to be saved. Correct me if I were wrong.
2007/10/8, Yu Chen <chyyuu at gmail.com>:
> hi,
> From the source code, in Thread_Control_struct, the field
> 'Context_Control Registers' means the context of
> this thread. This field is hardware related. in RTEMS for pc 386, I
> found the define of this field is:
> typedef struct {
> uint32_t eflags; /* extended flags register */
> void *esp; /* extended stack pointer register */
> void *ebp; /* extended base pointer register */
> uint32_t ebx; /* extended bx register */
> uint32_t esi; /* extended source index register */
> uint32_t edi; /* extended destination index flags register */
> } Context_Control;
>
> My question is: why rtems didn't store the other i386 registers (such
> as eax, ecx...) when switching the thread context? the other registers
> in threads needn't save &restore?
>
> and the similar question is: in irq_asm.S , rtems_irq_prologue_ ## _vector :
>
> SYM (rtems_irq_prologue_ ## _vector ): \
> pushl eax ; \
> pushl ecx ; \
> pushl edx ; \
> movl $ _vector, ecx ; \
> jmp SYM (_ISR_Handler) ;
> ....
> popl edx
> popl ecx
> popl eax
> iret
>
> why in irq process, rtems didn't save &restore the other i386 registers ?
>
> Thanks!
>
> --
> Best Regards
> ==============================================
> Chen Yu
> Laboratory of Pervasive Computing,
> Dept. of Computer Science and Technology
> Tsinghua University, Beijing 100084, P.R. China
> E-Mail: mailto:yuchen at tsinghua.edu.cn chyyuu at gmail.com
> ==============================================
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.com
> http://rtems.rtems.org/mailman/listinfo/rtems-users
>
More information about the users
mailing list