tempdetail.datainfo.pprev = pprev;
tempdetail.datainfo.data = tempdetail.datainfo.dataend = start;
tempdetail.datainfo.allocend = end;
- tempdetail.handle = PMM_DEFAULT_HANDLE;
struct allocdetail_s *tempdetailp = MAKE_FLATPTR(GET_SEG(SS), &tempdetail);
SET_PMMVAR(*pprev, &tempdetailp->datainfo);
if (info)
}
// Replace temp alloc space with final alloc space
- SET_PMMVAR(detail->datainfo.next, tempdetail.datainfo.next);
- SET_PMMVAR(detail->datainfo.pprev, tempdetail.datainfo.pprev);
- SET_PMMVAR(detail->datainfo.data, tempdetail.datainfo.data);
- SET_PMMVAR(detail->datainfo.dataend, tempdetail.datainfo.dataend);
- SET_PMMVAR(detail->datainfo.allocend, tempdetail.datainfo.allocend);
+ memcpy_fl(&detail->datainfo, &tempdetailp->datainfo
+ , sizeof(detail->datainfo));
SET_PMMVAR(detail->handle, PMM_DEFAULT_HANDLE);
SET_PMMVAR(*tempdetail.datainfo.pprev, &detail->datainfo);
// EBDA isn't at end of ram - give up.
return -1;
- // Do copy
- if (MODESEGMENT)
- memcpy_far(FLATPTR_TO_SEG(newebda)
- , (void*)FLATPTR_TO_OFFSET(newebda)
- , FLATPTR_TO_SEG(oldebda)
- , (void*)FLATPTR_TO_OFFSET(oldebda)
- , ebda_size * 1024);
- else
- memmove((void*)newebda, (void*)oldebda, ebda_size * 1024);
+ // Do copy (this assumes memcpy copies forward - otherwise memmove
+ // is needed)
+ memcpy_fl((void*)newebda, (void*)oldebda, ebda_size * 1024);
// Update indexes
dprintf(1, "ebda moved from %x to %x\n", oldebda, newebda);
: "cc", "memory");
}
+inline void
+memcpy_fl(void *d_fl, const void *s_fl, size_t len)
+{
+ if (MODESEGMENT)
+ memcpy_far(FLATPTR_TO_SEG(d_fl), (void*)FLATPTR_TO_OFFSET(d_fl)
+ , FLATPTR_TO_SEG(s_fl), (void*)FLATPTR_TO_OFFSET(s_fl)
+ , len);
+ else
+ memcpy(d_fl, s_fl, len);
+}
+
void *
#undef memcpy
memcpy(void *d1, const void *s1, size_t len)
void *memset(void *s, int c, size_t n);
inline void memcpy_far(u16 d_seg, void *d_far
, u16 s_seg, const void *s_far, size_t len);
+void memcpy_fl(void *d_fl, const void *s_fl, size_t len);
void *memcpy(void *d1, const void *s1, size_t len);
#if MODESEGMENT == 0
#define memcpy __builtin_memcpy