// Area predicates
bool Area路encloses_pt(void *pt ,void *pt0 ,extent_t e);
bool Area路encloses_pt_strictly(void *pt ,void *pt0 ,extent_t e);
- bool Area路encloses(void *pt00 ,extent_t e0 ,void *pt10 ,extent_t e1);
- bool Area路encloses_strictly(void *pt00 ,extent_t e0 ,void *pt10 ,extent_t e1);
+ bool Area路encloses_area(void *pt00 ,extent_t e0 ,void *pt10 ,extent_t e1);
+ bool Area路encloses_area_strictly(void *pt00 ,extent_t e0 ,void *pt10 ,extent_t e1);
bool Area路overlap(void *pt00 ,extent_t s0 ,void *pt10 ,extent_t e1);
// 64 bit word operations
Core路Step路Status Core路step(Core路Step路Fn fn ,Core路AreaPairing *ap);
Core路Step路Fn copy_8;
Core路Step路Fn copy_16;
-
-
+ Core路Step路Fn Step路write_hex;
+ Core路Step路Fn Step路read_hex;
} Core路M;
return (pt > pt0) && (pt < pt0 + e); // Strictly inside
}
// Area 0 encloses Area 1
- Local bool Core路Area路encloses(void *pt0 ,extent_t e0 ,void *pt1 ,extent_t e1){
+ Local bool Core路Area路encloses_area(
+ void *pt0 ,extent_t e0 ,void *pt1 ,extent_t e1
+ ){
return (pt1 >= pt0) && (pt1 + e1 <= pt0 + e0);
}
// Area 0 strictly encloses Area 1
- Local bool Core路Area路encloses_strictly(void *pt0 ,extent_t e0 ,void *pt1 ,extent_t e1){
+ Local bool Core路Area路encloses_area_strictly(
+ void *pt0 ,extent_t e0 ,void *pt1 ,extent_t e1
+ ){
return (pt1 > pt0) && (pt1 + e1 < pt0 + e0);
}
}
//----------------------------------------
- // copy_8 buffer fill step
+ // step copy_8
Core路Step路Fn Core路copy_8;;
Core路Step路Fn Core路Copy8路bulk;
//----------------------------------------
- // copy_64
+ // step copy_64
// 64-bit copy function with updated AreaPairing terminology
Core路Step路Fn Core路copy_64;
// Determine aligned 64-bit word boundaries
Core路tableau.copy_64.r0_64 = Core路least_full_64(
- Core路tableau.ap->read0, Core路tableau.ap->read0 + Core路tableau.ap->read_extent
- );
+ Core路tableau.ap->read0, Core路tableau.ap->read0 + Core路tableau.ap->read_extent
+ );
Core路tableau.copy_64.r1_64 = Core路greatest_full_64(
- Core路tableau.ap->read0, Core路tableau.ap->read0 + Core路tableau.ap->read_extent
- );
+ Core路tableau.ap->read0, Core路tableau.ap->read0 + Core路tableau.ap->read_extent
+ );
// Choose the correct function based on alignment
if(Core路tableau.copy_64.r0_64 == NULL) return Core路Copy64路tail;
do{
*w64++ = Core路tableau.copy_64.read_fn(
- Core路tableau.copy_64.r0_64, Core路tableau.copy_64.r1_64, r64
- );
+ Core路tableau.copy_64.r0_64, Core路tableau.copy_64.r1_64, r64
+ );
if(r64 == r1_64) break;
r64++;
}while(1);