Subject: some issue of sandpoint and powerpc
To: None <port-powerpc@NetBSD.org, port-sandpoint@NetBSD.org>
From: None <swcdyys@mail.sc.cninfo.net>
List: port-powerpc
Date: 01/02/2006 14:38:14
Hi,
   I am porting sandpoint to my MPC8245 board. 
   I found some issue in the sandpoint port:
     1. sandpoint\machdep.c 
          (1) initppc function:
                memset(&edata, 0, (u_int) &end - (u_int) &edata); 
                this call cause the cpu_info clear to zero, 
                but it init in locore.S:_start
                   INIT_CPUINFO(4,1,9,0)
                so the bss section clear should do in locore.S 
                before INIT_CPUINFO(4,1,9,0) as follow :

          	/* Make sure that .bss is zeroed. */
	li	0,0
	lis	8,edata@ha
	addi	8,8,edata@l
	lis	9,end@ha
	addi	9,9,end@l
5:	cmpw	0,8,9			/* edata & end are >= word aligned */
	bge	6f
	stw	0,0(8)
	addi	8,8,4
	b	5b
6:

            or in initppc as follow:
                memset(&edata, 0, (u_int) &cpu_info[0] - (u_int) &edata); 
                cpu_info_end = &cpu_info[0]+1;
                memset(cpu_info_end, 0, (u_int) end - (u_int)cpu_info_end); 

          (2).consinit(); should move to after:
                openpic_init(eumb_base + 0x40000);     
                and if use internal UART,
                    consinit should modify to : 
	            tag = &sandpoint_mem_bs_tag;
	            if(comcnattach(tag, 0xFC004500, <baudrate>, <clock=100000000), COM_TYPE_NORMAL,
    
          (3).sandpoint_bus_space_init:
                 ex_storage use are oversize, total ex_storage are [2],
                 should modify to :
            	error = bus_space_init(&sandpoint_isa_io_bs_tag, "isa-iomem",
            	    ex_storage[0], sizeof(ex_storage[0]));

        	           error = bus_space_init(&sandpoint_mem_bs_tag, "iomem",
	               ex_storage[1], sizeof(ex_storage[1]));

                	error = bus_space_init(&sandpoint_isa_mem_bs_tag, "isa-iomem",
            	    ex_storage[1], sizeof(ex_storage[1]));

        2. and for sandpoint default build,
            the SYMTAB_SPACE in conf/GENERIC is too small,
            I change it to :
                 options 	SYMTAB_SPACE=262144

        3. I use u-boot to boot it, so no any other monitor program reside in 
            board, I set TEXTADDR to 0x2000, and can boot.
            can I set it to 0x2000?

    thanks.