I wrote the following code "load_bootloader.c" but the section(".ARM.__at__0x etc. functionality seems to restrict memory access to what you might label "user accessible memory."
-- BEGINNING OF CODE --
#include <stdio.h>
unsigned char uca_CMOS[BOOTLOADER_SIZE] __attribute__((section(".ARM.__at_0x0000000000000000")));unsigned long int uli_counter = 0;FILE * Fp_load;
int main(int i_argc, char** cpa_argv) { if (Fp_load = fopen("bootloader", "r")) { while (!feof(Fp_load)) { uca_CMOS[uli_counter] = getc(Fp_load); uli_counter++; } fclose(Fp_load); }}
-- END OF CODE --
The size of the bootloader replaces "BOOTLOADER_SIZE" and the name of the bootloader file "bootloader." How do I write a bootloader to the absolute zero? The __attribute__((section(".ARM.__at_ as it turns out only takes eight digits, even though I need the absolute zero RISC-address, which is always 64 bits spread over four 16-bit registers, accessible through a SET MEMORY ADDRESS opcode + 2 bit selector. Now what?
The intent is to use my favorite development system, implement my own RISC-assembler and programming language and finally operating system. I don't want to make use of processor runtime compilers integrated in a SoC. It needs to be generic for every standard RISC processor.