christos@ wrote:

> Yes be16enc() should work just fine, I think.

Then why don't you guys also complain to fix existing abcksum() function
which is called at the suggested memcpy?

---
        /* set AHDI checksum */
        sum = 0;
        memcpy(bb->bb_xxboot + 255 * sizeof(sum), &sum, sizeof(sum));
        sum = 0x1234 - abcksum(bb->bb_xxboot);
        memcpy(bb->bb_xxboot + 255 * sizeof(sum), &sum, sizeof(sum));
 :

static u_int
abcksum (void *bs)
{
        u_int16_t sum  = 0,
                  *st  = (u_int16_t *)bs,
                  *end = (u_int16_t *)bs + 256;

        while (st < end)
                sum += *st++;
        return(sum);
}
---

I think the "correct" fix is to redefine a boot block structures as
a union of existing struct bootblock and uint16_t array in <sys/bootblock.h>,
but it would be done when we will merge it into MI installboot.

Fixing only a visible part you are shown in a patch to appease compiler
makes no sense even for correctness.

---
Izumi Tsutsui

Reply via email to