christos@ wrote:

> How about this then,
 :
> -static u_int abcksum(void *);
> +static void  abcksum(void *);

Changing existing functions requires more tests and
it's annoying for maintainers, especially for netbsd-7.

Please don't assume we have unlimited resources and
remember that we need just temporary workaround until
we get atari support in MI installboot.

> -     newroot->ar_checksum = 0;
> -     newroot->ar_checksum = 0x1234 - abcksum(newroot);
> +     abcksum(newroot);

Did you check the definition of the struct ahdi_root?
ar_checksum is properly defined as u_int16_t and
no change is required in the mkahdiboot() function.

Actually I don't know about atari specific "AHDI label" at all
so it's also annyoing for me to test it.

> -static u_int
> -abcksum (void *bs)
> +static void
> +abcksum(void *bs)
>  {
>       u_int16_t sum  = 0,
>                 *st  = (u_int16_t *)bs,
> -               *end = (u_int16_t *)bs + 256;
> +               *end = (u_int16_t *)bs + 255;
>  
>       while (st < end)
>               sum += *st++;
> -     return(sum);
> +     *st++ = 0x1234 - sum;

You should also consider about current MI dkcksum() (and dkcksum_sized())
implementation in sys/kern/subr_disk.c.  The MI dkcksum() just does
calculate a sum of the label and magic numbers are handled by callers:
>>      label->d_checksum = 0;
>>      label->d_checksum = dkcksum(label);

It looks better to use consistent strategies for both MI/MD sums.

---
Izumi Tsutsui

Reply via email to