diff options
Diffstat (limited to 'src/arch')
| -rw-r--r-- | src/arch/vmpa.c | 28 | ||||
| -rw-r--r-- | src/arch/vmpa.h | 3 | 
2 files changed, 31 insertions, 0 deletions
| diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c index fe159f6..8f550fe 100644 --- a/src/arch/vmpa.c +++ b/src/arch/vmpa.c @@ -281,6 +281,34 @@ void deminish_vmpa(vmpa2t *addr, phys_t qty)  /******************************************************************************  *                                                                             * +*  Paramètres  : addr  = élément à modifier.                                  * +*                bytes = nombre d'octets sur lequel aligner la position.      * +*                                                                             * +*  Description : Aligne une localisation sur un nombre d'octets donné.        * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +void align_vmpa(vmpa2t *addr, phys_t bytes) +{ +    if (bytes > 1) +    { +        if (addr->physical != VMPA_NO_PHYSICAL) +            addr->physical = (addr->physical + bytes - 1) & ~(bytes - 1); + +        if (addr->virtual != VMPA_NO_VIRTUAL) +            addr->virtual = (addr->virtual + bytes - 1) & ~(bytes - 1); + +    } + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : a = première élément à venir consulter.                      *  *                b = second élément à traiter en parallèle.                   *  *                                                                             * diff --git a/src/arch/vmpa.h b/src/arch/vmpa.h index 695e21e..1e17f17 100644 --- a/src/arch/vmpa.h +++ b/src/arch/vmpa.h @@ -113,6 +113,9 @@ void advance_vmpa(vmpa2t *, phys_t);  /* Décalle une position d'une certaine quantité. */  void deminish_vmpa(vmpa2t *, phys_t); +/* Aligne une localisation sur un nombre d'octets donné. */ +void align_vmpa(vmpa2t *, phys_t); +  /* Calcule au mieux la distance entre deux coordonnées. */  phys_t compute_vmpa_diff(const vmpa2t *, const vmpa2t *); | 
