List Info

Thread: Ericsson MC16 (HP 360LX) endianness




Ericsson MC16 (HP 360LX) endianness
user name
2006-07-31 10:11:19
On Mon, Jul 31, 2006 at 11:15:33AM +0200, Adam Wysocki via
ArcaBit wrote:
> Yes, I know... I've linked it with -static, shouldn't
it be enough?

I doubt it, though I haven't tried. -static takes care of
shared
library dependencies, but you still need code that initiates
the
cpu and sets things in known states, you need a stack,
interrupt
vectors etc.

> > and make sure you have source code with the memory
detection 
> > patches Uwe mentioned applied. You can get the
patch from me 
> > if Uwe haven't found the time to apply them.
> 
> Sounds promising - can you send me these patches?

You find the patch attached. Without it the system will
reboot.
Note that the patch is a bit dated, but hopefully it will
still
apply.  Uwe didn't quite like it, I think, so it is
possible he
will change it a bit before committing, but this will work
in the
mean time.
 
> > If you like, I can provide you with the hpcboot,
kernel and miniroot 
> > I use.
> 
> Would be nice  Thanks in
advance.

I can put them somewhere tonight, when I have physical
access to
my MC16 and the CF.

-- 
Christer O. Andersson
Odensbacken
--- sys/arch/hpcsh/hpcsh/machdep.c.1.51	2005-12-25
00:24:00.000000000 +0100
+++ sys/arch/hpcsh/hpcsh/machdep.c	2006-01-15
01:07:16.000000000 +0100
 -134,6
+134,18 
  * 0x0d000000 --- onboard   16MByte (shadow)
  * 0x0e000000 --- onboard   16MByte (shadow)
  * 0x0f000000 --- onboard   16MByte (shadow)
+ *
+ * HP 360LX (Ericsson MC16)
+ *
+ * CS3 (0x0c000000-0x0fffffff
+ * 0x0c000000 --- onboard    8MByte
+ * 0x0c800000 --- unused     8MByte
+ * 0x0d000000 --- onboard    8MByte (shadow)
+ * 0x0d800000 --- unused     8MByte (shadow)
+ * 0x0e000000 --- onboard    8MByte (shadow)
+ * 0x0e800000 --- unused     8MByte (shadow)
+ * 0x0f000000 --- onboard    8MByte (shadow)
+ * 0x0f800000 --- unused     8MByte (shadow)
  */
 
 #define	SH_CS3_START			0x0c000000
 -154,6
+166,9 
 static int	mem_cluster_init(paddr_t);
 static void	mem_cluster_load(void);
 static void	__find_dram_shadow(paddr_t, paddr_t);
+#ifdef SH3
+static int	__probe_memory(paddr_t);
+#endif
 #ifdef NARLY_MEMORY_PROBE
 static int	__check_dram(paddr_t, paddr_t);
 #endif
 -441,9
+456,18 
 #ifdef SH3
 	/* SH7709A's CS3 is split to 2 banks. */
 	if (CPU_IS_SH3) {
-		__find_dram_shadow(addr, SH7709_CS3_BANK0_END);
-		__find_dram_shadow(SH7709_CS3_BANK1_START,
-		    SH7709_CS3_BANK1_END);
+		if (platid_match(&platid,
&platid_mask_MACH_HP_LX_360)) {
+			__find_dram_shadow(addr, SH7709_CS3_BANK0_END);
+
+			/* Check if any memory present above 8MByte */
+			if (__probe_memory(SH7709_CS3_BANK0_START+0x00800000) !=
0) {
+				mem_clusters[1].size = 0x00800000 -
mem_clusters[0].size;
+			}
+		} else {
+			__find_dram_shadow(addr, SH7709_CS3_BANK0_END);
+			__find_dram_shadow(SH7709_CS3_BANK1_START,
+			    SH7709_CS3_BANK1_END);
+		}
 	}
 #endif
 #ifdef SH4
 -532,6
+556,10 
 	    *(volatile int *)(page + 4) != ~x)
 		return; /* no memory in this bank */
 
+        page += PAGE_SIZE;
+	if (mem_cluster_cnt == 1)
+		page += mem_clusters[0].size;
+
  memend_found:
 	KASSERT(mem_cluster_cnt < VM_PHYSSEG_MAX);
 
 -545,6
+573,27 
 	mem_cluster_cnt++;
 }
 
+#ifdef SH3
+int
+__probe_memory(paddr_t probe_addr)
+{
+	vaddr_t addr;
+	int x;
+
+	addr = SH3_PHYS_TO_P2SEG(probe_addr);
+
+	x = random();
+	*(volatile int *)(addr + 0) = x;
+	*(volatile int *)(addr + 4) = ~x;
+
+	if (*(volatile int *)(addr + 0) != x ||
+	    *(volatile int *)(addr + 4) != ~x)
+		return (1);
+
+	return (0);
+}
+#endif
+
 #ifdef NARLY_MEMORY_PROBE
 int
 __check_dram(paddr_t start, paddr_t end)
Ericsson MC16 (HP 360LX) endianness
user name
2006-07-31 15:50:02
31.07.06 christera-son.net wrote:

Hi 

> > Sounds promising - can you send me these patches?
> 
> You find the patch attached. Without it the system will
reboot.
> Note that the patch is a bit dated, but hopefully it
will still
> apply.  Uwe didn't quite like it, I think, so it is
possible he
> will change it a bit before committing, but this will
work in the
> mean time.

It works perfectly  No
framebuffer (garbled screen), but the kernel 
boots perfectly. Thanks 

-- 
[ Adam Wysocki :: www.chmurka.net :: +48 514 710 213 ]
[ Software Development Department, ArcaBit Sp. z o.o ]
[ Ul. Fortuny 9 :: 01-339 Warszawa :: www.arcabit.pl ]
[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )