У меня есть следующие исходные файлы C, из которых необходимо удалить некоторый код и добавить некоторый код для обхода кеша данных на процессоре Nios
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "ledr.h"
static struct pio_regs *LEDR = (struct pio_regs *)LEDR_BASE;
static REGISTER SH_LEDR;
void LEDR_Init ( void ) {
SH_LEDR = 0;
LEDR->data = 0;
}
void show_RUN ( bits RUN ) {
SH_LEDR = putbit (SH_LEDR, RUN, 12);
LEDR->data = SH_LEDR;
}
r2c. Я понятия не имею, как это сделать.
Файл: switch.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "switches.h"
static struct pio_regs *SW = (struct pio_regs *)SWITCH_BASE;
static REGISTER SH_SW;
bits get_RUN ( void ) {
SH_SW = SW->data;
return getbit(SH_SW, 17);
}
Файл: ledr.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "ledr.h"
static struct pio_regs *LEDR = (struct pio_regs *)LEDR_BASE;
static REGISTER SH_LEDR;
void LEDR_Init ( void ) {
SH_LEDR = 0;
LEDR->data = 0;
}
void show_RUN ( bits RUN ) {
SH_LEDR = putbit (SH_LEDR, RUN, 12);
LEDR->data = SH_LEDR;
}
Получил это со встроенной сборкой, используя чтение и запись ввода-вывода:
Файл: switch.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "switches.h"
static struct pio_regs *SW = (struct pio_regs *)SWITCH_BASE;
static REGISTER SH_SW;
bits get_RUN ( void ) {
//SH_SW = SW->data;
__asm("ldwio %0, %1" : "=r"(SH_SW) : "m"(SW->data));
return getbit(SH_SW, 17);
}
Файл: ledr.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "ledr.h"
static struct pio_regs *LEDR = (struct pio_regs *)LEDR_BASE;
static REGISTER SH_LEDR;
void LEDR_Init ( void ) {
SH_LEDR = 0;
//LEDR->data = 0;
__asm("stwio %0, %1" : "=r"(SH_LEDR) : "m"(SW->data));
}
void show_RUN ( bits RUN ) {
SH_LEDR = putbit (SH_LEDR, RUN, 12);
//LEDR->data = SH_LEDR;
__asm("stwio %0, %1" : "=r"(SH_SW) : "m"(SW->data));
}