LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

А как тогда писать программы под железо, где по адресу 12345 находятся регистры MMIO какого-нибудь устройства?

Через какой-нибудь #define WRITE_BYTE(addr, value) __gcc_builtin_write_byte(addr, value)

А ещё лучше так:

uint8_t *device = __gcc_builtin_get_pointer(0x12345, 0x10)

И дальше компилятор будет вставлять проверки, что ты обращаешься по адресам от 0x12345 до 0x12355, и не дальше. А при попытке записать device[0x10] = 0 программа упадёт а не пойдёт писать куда не положено.

Исходная версия Legioner, :

А как тогда писать программы под железо, где по адресу 12345 находятся регистры MMIO какого-нибудь устройства?

Через какой-нибудь #define WRITE_BYTE(addr, value) __gcc_builtin_write_byte(addr, value)