- /* store stack information from InitialTeb */
- if (InitialTeb != NULL)
- {
- Teb.Tib.StackBase = InitialTeb->StackBase;
- Teb.Tib.StackLimit = InitialTeb->StackLimit;
- Teb.DeallocationStack = InitialTeb->StackAllocate;
- }
+ /* store stack information from UserStack */
+ if(UserStack != NULL)
+ {
+ /* fixed-size stack */
+ if(UserStack->FixedStackBase && UserStack->FixedStackLimit)
+ {
+ Teb.Tib.StackBase = UserStack->FixedStackBase;
+ Teb.Tib.StackLimit = UserStack->FixedStackLimit;
+ Teb.DeallocationStack = UserStack->FixedStackLimit;
+ }
+ /* expandable stack */
+ else
+ {
+ Teb.Tib.StackBase = UserStack->ExpandableStackBase;
+ Teb.Tib.StackLimit = UserStack->ExpandableStackLimit;
+ Teb.DeallocationStack = UserStack->ExpandableStackBottom;
+ }
+ }