Respostas para as perguntas 1 e 2: não, uma vez que a paginação tenha sido ativada, as instruções da CPU usam apenas endereços virtuais, que são traduzidos para endereços físicos usando a MMU antes de ler ou gravar RAM. As macros __va
e __pa
não acessam memória, elas apenas convertem endereços entre os espaços de endereço. Em uma máquina de 32 bits, __va
apenas adiciona 0xc0000000
ao endereço físico fornecido como argumento, porque o mapeamento foi configurado para que o endereço físico N
esteja no endereço virtual N+0xc0000000
.
Os endereços que você deseja acessar com a CPU devem ter um mapeamento; você não pode ignorar a MMU. Portanto, um mapeamento que gerencia apenas 128 MB não é suficiente.