summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/vmpa.c43
-rw-r--r--src/arch/vmpa.h3
2 files changed, 28 insertions, 18 deletions
diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c
index fcc1e2f..b306f00 100644
--- a/src/arch/vmpa.c
+++ b/src/arch/vmpa.c
@@ -30,6 +30,9 @@
#include <string.h>
+#include <i18n.h>
+
+
#include "../common/io.h"
@@ -404,29 +407,33 @@ char *vmpa2_virt_to_string(const vmpa2t *addr, MemoryDataSize msize, char buffer
{
size_t ret; /* Retour de l'impression */
- switch (msize)
- {
- case MDS_8_BITS:
- ret = snprintf(buffer, VMPA_MAX_LEN,"0x%02" PRIx64, addr->virtual);
- break;
+ if (addr->virtual == VMPA_NO_VIRTUAL)
+ ret = snprintf(buffer, VMPA_MAX_LEN, _("(none)"));
- case MDS_16_BITS:
- ret = snprintf(buffer, VMPA_MAX_LEN, "0x%04" PRIx64, addr->virtual);
- break;
+ else
+ switch (msize)
+ {
+ case MDS_8_BITS:
+ ret = snprintf(buffer, VMPA_MAX_LEN,"0x%02" PRIx64, addr->virtual);
+ break;
- case MDS_32_BITS:
- ret = snprintf(buffer, VMPA_MAX_LEN, "0x%08" PRIx64, addr->virtual);
- break;
+ case MDS_16_BITS:
+ ret = snprintf(buffer, VMPA_MAX_LEN, "0x%04" PRIx64, addr->virtual);
+ break;
- case MDS_64_BITS:
- ret = snprintf(buffer, VMPA_MAX_LEN, "0x%016" PRIx64, addr->virtual);
- break;
+ case MDS_32_BITS:
+ ret = snprintf(buffer, VMPA_MAX_LEN, "0x%08" PRIx64, addr->virtual);
+ break;
- default:
- ret = snprintf(buffer, VMPA_MAX_LEN, "0x%" PRIx64, addr->virtual);
- break;
+ case MDS_64_BITS:
+ ret = snprintf(buffer, VMPA_MAX_LEN, "0x%016" PRIx64, addr->virtual);
+ break;
- }
+ default:
+ ret = snprintf(buffer, VMPA_MAX_LEN, "0x%" PRIx64, addr->virtual);
+ break;
+
+ }
if (length != NULL)
*length = ret;
diff --git a/src/arch/vmpa.h b/src/arch/vmpa.h
index 54dbda9..6f8e809 100644
--- a/src/arch/vmpa.h
+++ b/src/arch/vmpa.h
@@ -91,6 +91,9 @@ int cmp_vmpa(const vmpa2t *, const vmpa2t *);
#define get_phy_addr(a) (a)->physical
#define get_virt_addr(a) (a)->virtual
+#define has_phys_addr(a) ((a)->physical != VMPA_NO_PHYSICAL)
+#define has_virt_addr(a) ((a)->virtual != VMPA_NO_VIRTUAL)
+
#define dup_vmpa(src) \
make_vmpa(get_phy_addr(src), get_virt_addr(src))