[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: JCC-JP4



あまり気合いをいれていないので進みませんが:-)、ofwboot はお約束の
スタックを増やしたら動きました。

*** Locore.c~	Thu May 28 20:14:09 1998
--- Locore.c	Thu Jun 22 18:33:01 2000
***************
*** 43,49 ****
  static void startup __P((void *, int, int (*)(void *), char *, int));
  static void setup __P((void));
  
! static int stack[256];
  
  #ifdef XCOFF_GLUE
  asm("
--- 43,49 ----
  static void startup __P((void *, int, int (*)(void *), char *, int));
  static void setup __P((void));
  
! static int stack[1024];
  
  #ifdef XCOFF_GLUE
  asm("
***************
*** 71,77 ****
  
  	lis	1,stack@ha
  	addi	1,1,stack@l
! 	addi	1,1,1024
  	b	startup
  ");
  
--- 71,77 ----
  
  	lis	1,stack@ha
  	addi	1,1,stack@l
! 	addi	1,1,4096
  	b	startup
  ");
  

で ofwboot を使うようにしたら

panic: uvm_page_lookup_freelist: unable to locate physseg

がでるようになったので調べてみたら、この人は使えるメモリー領域を

start     size
0x8000,   0x8000
0x30000,  0x30000
0xab000,  0x50000
0xaf000,  0x11000
0x215000, 0x1cd7000

のように重複して渡してくれるのでした。こりゃ動かんわ。

めんどーなのであっさりと

*** powerpc/powerpc/pmap.c~	Thu Jun 22 18:47:43 2000
--- powerpc/powerpc/pmap.c	Thu Jun 22 18:53:34 2000
***************
*** 485,490 ****
--- 485,493 ----
  #endif
  
  	for (mp = avail; mp->size; mp++) {
+ 		printf("0x%x, 0x%x\n", mp->start, mp->size);
+ 		if (mp->start < 0x200000)
+ 			continue;
  		uvm_page_physload(atop(mp->start), atop(mp->start + mp->size),
  			atop(mp->start), atop(mp->start + mp->size),
  			VM_FREELIST_DEFAULT);


とこれで動きました。

# ここはちゃんと重複を確認するべきなのか…?