Re: Weird calculation for kernel L2 segment table

"T. Makinen" <[email protected]>
Newsgroups gmane.os.netbsd.ports.amiga,gmane.os.netbsd.ports.m68k,gmane.os.netbsd.ports.atari
Message-ID <[email protected]>
On Fri, Jan 2, 2009 at 4:15 PM, Frank Wille <[email protected]> wrote:
> Izumi Tsutsui wrote:
>
>> sys/arch/amiga/amiga/amiga_init.c (and recently sync'ed atari_init.c)
>> has the following calculations to get the level2 segment table
>> for the kernel Sysptmap:
>>
>> ---
>>       /*
>>        * Kernel segment table at end of next level 2 table
>>        */
>>       /* XXX fix calculations XXX */
>>       i = ((((ptsize >> PGSHIFT) + 3) & -2) - 1) * (NPTEPG / SG4_LEV3SIZE);
>>       sg = &((st_entry_t *)(RELOC(Sysseg_pa, u_int)))[SG4_LEV1SIZE + i];
>>       esg = &sg[NPTEPG / SG4_LEV3SIZE];
>>       sg_proto = Sysptmap_pa | SG_U | SG_RW | SG_V;
>>       while (sg < esg) {
>>           *sg++ = sg_proto;
>>           sg_proto += (SG4_LEV3SIZE * sizeof (st_entry_t));
>>       }
>> ---
>>
>> I think this could be rewritten more meaningfully as following:
>>
>> ---
>>       nl2desc = (ptsize >> PGSHIFT) * (NPTEPG / SG4_LEV3SIZE);
>>   :
>>       nl1desc = roundup(nl2desc, SG4_LEV2SIZE) / SG4_LEV2SIZE;
>>   :
>>       /*
>>        * Kernel segment table at end of next level 2 table
>>        */
>>       i = SG4_LEV1SIZE + (nl1desc * SG4_LEV2SIZE);
>>       sg = (st_entry_t *)RELOC(Sysseg_pa, u_int);
>>       sg = &sg[i + SG4_LEV2SIZE - (NPTEPG / SG4_LEV3SIZE)];
>>       esg = &sg[NPTEPG / SG4_LEV3SIZE];
>>   :
>> ---
>>
>> With a quick test program, both offset values against Sysseg_pa
>> look identical.
>
> Without rereading the 040/060 manuals and without knowing about the current
> layout of segment and page tables (first lev1 tables, then lev2, etc.?) in both
> ports, I only got headaches after 30 minutes, so I decided to make a test! :)
>
> I patched the NetBSD/amiga 4.0 release kernel with your changes and tried it
> for some time on my A3000 with 68060. Booting, starting X11, compiling pkgsrc.
>
> Works fine for me!

I patched NetBSD/Atari current with Tsutsui's changes and I also made just
test using my Falcon with 68060; system booted up fine and I copied some files
around disks.

Works fine :)

-Tuomo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.