Цитата(SWD @ Jan 25 2011, 13:35)

Может лучше отдельный порт?
Зачем? Общего достаточно много.
Да, отличия немного больше, чем между мега32 и мега256х, но не такие и большие. Как по мне, то вариант с #ifdef может оказаться проще и в сопровождении, и в использовании.
Цитата(SWD @ Jan 25 2011, 13:35)

Маловато будет ))
Для ATmega128 этого было достаточно, а Xmega никто и не обещал :-)
Цитата(SWD @ Jan 25 2011, 13:35)

Смотрю на него внимательно ..., не знаю что с ним делать

. Что значит "намертво"?
На какой? )). ( ... Может лучше отдельный порт?) )))
То, что Y всегда указатель стека данных.
В avr-gcc Y - это указатель стековго кадра — тогда, когда это нужно. Туда копируется SP и данные на общем стеке адресуются относительно Y. Что-то похожее на использование регистра BP в x86.
Поэтому с точки зрения порта scmRTOS и пара Y, и RAMPY идут на тех же правах, что и X, Z, RAMPX, RAMPZ, за контекст отвечает SP.
А у IAR стековдва и «основной» для scmRTOS стек — CSTACK, т.е. RAMPY:YH:YL
Соответственно, в состоянии процесса храниться должно такое расширенное состояние.
Для простоты можно сохранять uint32_t. Для экономии места и, возможно, времени - 3-байтовую структуру uint8_t page; uint16_t sp;
Или считать, что стеки всех процессов всегда в нижних 64К (пока нет Xmega с внутренним ОЗУ больше, это синоним "стеки во внутреннем, быстром, ОЗУ") и думать, что RAMPY всегда 0.
p.s. Порт AVR/IAR для mega256x проверен и вброшен в ветку pre-v400 (ревизия 306, дальше могут пойти изменения в других местах scmRTOS).