sparcv8.pdf (p.46):
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.
найдено в ядре в нашем случае я вижу, что 8-байтная величина располагается по адресу не кратному 8. ниже приводится фрагмент лога > alloc_inode sz f0280e64 8 где f0280e64 - это адрес. 8 - это длина переменной, к которой на следующем шаге произойдет обращение. после этого происходит зависание.
даже если аллокатор выделит память с указателем кратным 8, то при копировании такой структуры в др.область, которая не выровнена по 8, при обращении к переменной опять произойдет трап!
я не специалист в sparc, не знаю возможно ли обработать trap так, чтобы заполнить переменную правильным значением и вернуться на следующий шаг.
и я уверен, что 64-битная проблема встретятся и дальше.
спаркологи! поможите чем можете! что мне делать?