qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] loader: implement START_SEG_ADDR_RECORD
@ 2018-06-09 16:32 Stefan Hajnoczi
  2018-06-10  2:04 ` Su Hang
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Hajnoczi @ 2018-06-09 16:32 UTC (permalink / raw)
  To: qemu-devel; +Cc: Su Hang, jusual, jim, joel, qemu.ml, Stefan Hajnoczi

It turns out that GNU binutils emits START_SEG_ADDR_RECORD when the start
address is within the first megabyte (< 0x100000).  Therefore we must
handle this record type.

Originally we thought this record type was x86-specific, but binutils
also emits it on non-x86 architectures.

Based-on: <1527161340-3200-1-git-send-email-suhang16@mails.ucas.ac.cn>
Cc: Su Hang <suhang16@mails.ucas.ac.cn>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
Su Hang: Feel free to squash this into the next revision of your hex
loader patch.  Don't worry about the authorship information.

 hw/core/loader.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/hw/core/loader.c b/hw/core/loader.c
index 3c0202caa8..7843b487b2 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -1423,8 +1423,14 @@ static int handle_record_type(HexParser *parser)
         break;
 
     case START_SEG_ADDR_RECORD:
-        /* TODO: START_SEG_ADDR_RECORD is x86-specific */
-        return -1;
+        if (line->byte_count != 4 && line->address != 0) {
+            return -1;
+        }
+
+        /* x86 16-bit CS:IP segmented addressing */
+        *(parser->start_addr) = (((line->data[0] << 8) | line->data[1]) << 4) |
+                                (line->data[2] << 8) | line->data[3];
+        break;
 
     case START_LINEAR_ADDR_RECORD:
         if (line->byte_count != 4 && line->address != 0) {
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-06-18 15:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-09 16:32 [Qemu-devel] [PATCH] loader: implement START_SEG_ADDR_RECORD Stefan Hajnoczi
2018-06-10  2:04 ` Su Hang
2018-06-11 13:55   ` Stefan Hajnoczi
2018-06-12  5:46     ` Su Hang
2018-06-13 14:36       ` Stefan Hajnoczi
2018-06-14  6:43     ` Su Hang
2018-06-18 15:30       ` Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).