Index: kernel/arch/ppc32/src/mm/tlb.c
===================================================================
--- kernel/arch/ppc32/src/mm/tlb.c	(revision 826c203b1eb0841831b90bed895972ff50c4f2b5)
+++ kernel/arch/ppc32/src/mm/tlb.c	(revision 7c98874c78674dda91c9fbaf0590416e0fa1c587)
@@ -152,9 +152,10 @@
 	bool found = false;
 	
-	/* Find unused or colliding
-	   PTE in PTEG */
+	/* Find unused or colliding PTE in PTEG */
 	for (i = 0; i < 8; i++) {
-		if ((!phte[base + i].v) || ((phte[base + i].vsid == vsid) &&
-		    (phte[base + i].api == api))) {
+		if ((!phte[base + i].v) ||
+		    ((phte[base + i].vsid == vsid)
+		    && (phte[base + i].api == api)
+		    && (phte[base + i].h == 0))) {
 			found = true;
 			break;
@@ -166,10 +167,10 @@
 		uint32_t base2 = (~hash & 0x3ff) << 3;
 		
-		/* Find unused or colliding
-		   PTE in PTEG */
+		/* Find unused or colliding PTE in PTEG */
 		for (i = 0; i < 8; i++) {
 			if ((!phte[base2 + i].v) ||
-			    ((phte[base2 + i].vsid == vsid) &&
-			    (phte[base2 + i].api == api))) {
+			    ((phte[base2 + i].vsid == vsid)
+			    && (phte[base2 + i].api == api)
+			    && (phte[base2 + i].h == 1))) {
 				found = true;
 				base = base2;
@@ -179,9 +180,9 @@
 		}
 		
-		if (!found) {
-			// TODO: A/C precedence groups
+		if (!found)
 			i = page % 8;
-		}
-	}
+	}
+	
+	
 	
 	phte[base + i].v = 1;
@@ -223,10 +224,10 @@
 	bool found = false;
 	
-	/* Find unused or colliding
-	   PTE in PTEG */
+	/* Find unused or colliding PTE in PTEG */
 	for (i = 0; i < 8; i++) {
 		if ((!phte_physical[base + i].v) ||
-		    ((phte_physical[base + i].vsid == vsid) &&
-		    (phte_physical[base + i].api == api))) {
+		    ((phte_physical[base + i].vsid == vsid)
+		    && (phte_physical[base + i].api == api)
+		    && (phte_physical[base + i].h == 0))) {
 			found = true;
 			break;
@@ -238,10 +239,10 @@
 		uint32_t base2 = (~hash & 0x3ff) << 3;
 		
-		/* Find unused or colliding
-		   PTE in PTEG */
+		/* Find unused or colliding PTE in PTEG */
 		for (i = 0; i < 8; i++) {
 			if ((!phte_physical[base2 + i].v) ||
-			    ((phte_physical[base2 + i].vsid == vsid) &&
-			    (phte_physical[base2 + i].api == api))) {
+			    ((phte_physical[base2 + i].vsid == vsid)
+			    && (phte_physical[base2 + i].api == api)
+			    && (phte_physical[base2 + i].h == 1))) {
 				found = true;
 				base = base2;
@@ -252,6 +253,7 @@
 		
 		if (!found) {
-			// TODO: A/C precedence groups
 			i = page % 8;
+			base = base2;
+			h = 1;
 		}
 	}
