190 |
vm_object_add(vm,&d->vm_obj); |
vm_object_add(vm,&d->vm_obj); |
191 |
return(0); |
return(0); |
192 |
} |
} |
193 |
|
|
194 |
|
/* Compute NVRAM checksum */ |
195 |
|
m_uint16_t nvram_cksum(vm_instance_t *vm,m_uint64_t addr,size_t count) |
196 |
|
{ |
197 |
|
m_uint32_t sum = 0; |
198 |
|
|
199 |
|
while(count > 1) { |
200 |
|
sum = sum + physmem_copy_u16_from_vm(vm,addr); |
201 |
|
addr += sizeof(m_uint16_t); |
202 |
|
count -= sizeof(m_uint16_t); |
203 |
|
} |
204 |
|
|
205 |
|
if (count > 0) |
206 |
|
sum = sum + ((physmem_copy_u16_from_vm(vm,addr) & 0xFF) << 8); |
207 |
|
|
208 |
|
while(sum>>16) |
209 |
|
sum = (sum & 0xffff) + (sum >> 16); |
210 |
|
|
211 |
|
return(~sum); |
212 |
|
} |