Message ID | 1518120582-26647-15-git-send-email-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 02/08/2018 02:09 PM, Thomas Huth wrote: > From: Wei Huang <wei@redhat.com> > > This patch adds a small binary kernel to test aarch64 virt machine's > UART. > > Signed-off-by: Wei Huang <wei@redhat.com> > [thuth: Fixed contextual conflict with the hppa patch] > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > tests/Makefile.include | 1 + > tests/boot-serial-test.c | 9 +++++++++ > 2 files changed, 10 insertions(+) > > +++ b/tests/boot-serial-test.c > @@ -55,6 +55,13 @@ static const uint8_t bios_raspi2[] = { > 0x00, 0x10, 0x20, 0x3f, /* 0x3f201000 = UART0 base addr */ > }; > > +static const uint8_t kernel_aarch64[] = { > + 0x81, 0x0a, 0x80, 0x52, /* mov w1, #0x54 */ > + 0x02, 0x20, 0xa1, 0xd2, /* mov x2, #0x9000000 */ > + 0x41, 0x00, 0x00, 0x39, /* strb w1, [x2] */ > + 0xfd, 0xff, 0xff, 0x17, /* b -12 (loop) */ > +}; Code like this reminds me of the 1984 IOCCC winner (https://www.ioccc.org/1984/mullender/mullender.c) - there's just something strangely satisfying about an array of integers being compiled into executable code ;) Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/tests/Makefile.include b/tests/Makefile.include index 6609276..cc7e7dc 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -371,6 +371,7 @@ gcov-files-arm-y += hw/timer/arm_mptimer.c check-qtest-arm-y += tests/boot-serial-test$(EXESUF) check-qtest-aarch64-y = tests/numa-test$(EXESUF) +check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF) check-qtest-microblazeel-y = $(check-qtest-microblaze-y) diff --git a/tests/boot-serial-test.c b/tests/boot-serial-test.c index 72873ee..511bf31 100644 --- a/tests/boot-serial-test.c +++ b/tests/boot-serial-test.c @@ -55,6 +55,13 @@ static const uint8_t bios_raspi2[] = { 0x00, 0x10, 0x20, 0x3f, /* 0x3f201000 = UART0 base addr */ }; +static const uint8_t kernel_aarch64[] = { + 0x81, 0x0a, 0x80, 0x52, /* mov w1, #0x54 */ + 0x02, 0x20, 0xa1, 0xd2, /* mov x2, #0x9000000 */ + 0x41, 0x00, 0x00, 0x39, /* strb w1, [x2] */ + 0xfd, 0xff, 0xff, 0x17, /* b -12 (loop) */ +}; + typedef struct testdef { const char *arch; /* Target architecture */ const char *machine; /* Name of the machine */ @@ -95,6 +102,8 @@ static testdef_t tests[] = { { "moxie", "moxiesim", "", "TT", sizeof(bios_moxiesim), 0, bios_moxiesim }, { "arm", "raspi2", "", "TT", sizeof(bios_raspi2), 0, bios_raspi2 }, { "hppa", "hppa", "", "SeaBIOS wants SYSTEM HALT" }, + { "aarch64", "virt", "-cpu cortex-a57", "TT", sizeof(kernel_aarch64), + kernel_aarch64 }, { NULL } };