Well, I forgot one operand in the addis instruction but otherwise my code is OK. I checked that the right PDATC adress was in the GPR. I also forgot to say that my code works when I put it in a interrupt handler in a normal kernel module. What I do not understand is why the kernel keeps going in machine check exception when I try to load PDATC contents or store a value in PDATC.
--- None Atall <linux_meis at yahoo.com> a ?crit?: > You missed a small shift... :) > > ----------------------- > li r16,r16,0x10 > li r13, 0xf001 > slw r13,r13,r16 > addis r13, 0x0d50 > stw r14, 0(r13) > ----------------------- > > Dimitris. > > --- vincent poirson <poirsonv at yahoo.fr> wrote: > > > > Hello, > > > > I want to change my PDATC value while in > > HardwareInterrupt code (in kernel/head.S) where > MMU > > is > > off. So I simply do : > > li r13, 0x0d50 > > addis r13, 0xf001 > > stw r14, 0(r13) > > // where 0xf0010d50 is my PDATC adress and r14 the > > value I want to store > > I do not understand why my kernel crahes and goes > in > > machine exception. Surprisingly, I can change > PDATC > > with BDI2000 but not with assembler code. Is this > an > > adress translation problem ? > > Am I missing something obvious ? Any help will be > > appreciated. > > > > Thanks in advance. > > > > > > > > > ===== > ------------------------------------------------------------ > -Dhmhtrios Meidanis > -Degree in Mathematics, University of the Aegean. > -Master in Computer Architecture and Digital > Systems, University of Crete. > Greece. > ------------------------------------------------------------ > ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
