summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/assemble.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/asm/assemble.c b/asm/assemble.c
index a3752b47..875a0d32 100644
--- a/asm/assemble.c
+++ b/asm/assemble.c
@@ -376,8 +376,9 @@ static void out(struct out_data *data)
amax = ofmt->maxbits >> 3; /* Maximum address size in bytes */
if ((ofmt->flags & OFMT_KEEP_ADDR) == 0 && data->tsegment == fixseg &&
data->twrt == NO_SEG) {
- if (asize < (size_t)(data->bits >> 3))
- warn_overflow_out(addrval, asize, data->sign);
+ if (asize >= (size_t)(data->bits >> 3))
+ data->sign = OUT_WRAP; /* Support address space wrapping for low-bit modes */
+ warn_overflow_out(addrval, asize, data->sign);
xdata.q = cpu_to_le64(addrval);
data->data = xdata.b;
data->type = OUT_RAWDATA;