Ну, регистр $ gp указывает на глобальную область. Условное обозначение указывает, что вы должны сохранить его при написании функции (см. .Cprestore).
Если вам нужно использовать ее (честно, не понимаю, почему), запомните эти вещи:
1) Всегда храните его в области сохраненных регистров вашего стека.
2) Всегда загружайте это значение в $ gp при уничтожении стека.
3) Не используйте его.(т.е. не получить доступ к глобальной области видимости)
Кроме того, я не уверен, но вы можете забыть о коде PIC.