Jump to content

    

спецы по sparc32! вопрос по alignment!

sparcv8.pdf (p.46):

:help:

Alignment Restrictions:

 

Halfword accesses must be aligned on a 2-byte boundary, word accesses (which include instruction fetches) must be aligned on a 4-byte boundary, and doubleword accesses must be aligned on an 8-byte boundary. An improperly aligned address causes a load or store instruction to generate a mem_address_not_aligned trap.

 

то, о чем говорится ниже - найдено в ядре Linux!

 

в моем случае, как я вижу из лога, 8-байтная величина располагается по адресу не кратному 8. после обращения к такой переменной происходит зависание.

 

даже если аллокатор выделит память с указателем кратным 8, то при копировании такой структуры в др.область, которая не выровнена по 8, при обращении к переменной опять же произойдет трап!

 

я не специалист в sparc, не знаю возможно ли обработать trap так, чтобы заполнить переменную правильным значением и вернуться на следующий шаг.

(да и вообще не знаю как писать обработчики tarp-ов :help: )

 

и я уверен, что 64-битная проблема встретится и дальше.

спаркологи! поможите чем можете! что мне делать? :help:

как добиться загрузки ядра?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this