Thread (37 messages) flat view 37 messages, 3 authors, 2009-10-09

Re: [PATCH 2/6] 8xx: get rid of _PAGE_HWWRITE dependency in MMU.

From: Joakim Tjernlund <hidden>
Date: 2009-10-08 00:21:06

Benjamin Herrenschmidt [off-list ref] wrote on 08/10/2009 02:04:56:
quoted
Yes it does. If one adds HWEXEC it will fail, right?
Why ? We can just filter out DSISR, we don't really care why it failed
as long as we know whether it was a store or not.
quoted
Also this count as a read and you could easily end up
in the protection case(in 2.4 you do)
I'm not sure what you mean by "the protection case" Again, the C code
shouldn't care.
it does, and it should. How else should you know if you try
to read a NA space?

See:
	/* Protection fault on exec go straight to failure on
		 * Hash based MMUs as they either don't support per-page
		 * execute permission, or if they do, it's handled already
		 * at the hash level. This test would probably have to
		 * be removed if we change the way this works to make hash
		 * processors use the same I/D cache coherency mechanism
		 * as embedded.
		 */
		if (error_code & DSISR_PROTFAULT)
			goto bad_area;

...
/* a read */
	} else {
		/* protection fault */
		if (error_code & 0x08000000)
			goto bad_area;
quoted
hey, I think you have to show how then :) I am not
good at ppc shift, mask, rotate insn.
They are so fun ! :-0
Great that someone thinks so :)
quoted
quoted
quoted
Because if you go to C with a protection fault, you are in trouble.
Why ?
In 2.4 you end up in read protection fault an get a SEGV back :)
We probably should ignore the DSISR bits then. So it just goes to
generic C code which then fixes up ACCESSED etc... and returns.
Not really I think.
quoted
Now I only handle DIRTY and the rest in C. Figured it is
much faster and really simplie now, stay tuned.
You should not even have to handle DIRTY at all in asm. At least in 2.6.
I can't vouch for what 2.4 generic code does... You should really port
your board over :-)
2.4 and 2.6 have the same handling in asm.
hmm, maybe I should just call C, but 8xx isn't a speed monster so every
cycle counts :)
It works if I trap to C for DIRTY too.
Before thinking on porting my old board, I want 2.4 to enjoy
the new TLB code too :)

  Jocke
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help