From c6fcb4aa660a5d9e7f3604fd89852c4c971828fd Mon Sep 17 00:00:00 2001 From: Gregor Haas Date: Tue, 21 Jan 2020 10:35:15 -0500 Subject: [PATCH] Adjustments to finalize for experiment --- c8_libpayload/pl/src/floppysleep.S | 170 ++++++++++++++--------------- c8_libpayload/pl/src/floppysleep.c | 25 +++-- 2 files changed, 97 insertions(+), 98 deletions(-) diff --git a/c8_libpayload/pl/src/floppysleep.S b/c8_libpayload/pl/src/floppysleep.S index 616f213..66cbc74 100644 --- a/c8_libpayload/pl/src/floppysleep.S +++ b/c8_libpayload/pl/src/floppysleep.S @@ -11,142 +11,141 @@ fs_load: mov v0.s[2], v0.s[0] mov v0.s[3], v0.s[0] fmov s31, 1.0 - ucvtf s30, w1 + ucvtf s30, w1 mov v1.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v1.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v1.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v1.s[0], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v2.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v2.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v2.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v2.s[0], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v3.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v3.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v3.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v3.s[0], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v4.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v4.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v4.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v4.s[0], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v5.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v5.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v5.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v5.s[0], v30.s[0] - - fadd s30, s30, s31 + fadd s30, s30, s31 mov v6.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v6.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v6.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v6.s[0], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v7.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v7.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v7.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v7.s[0], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v8.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v8.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v8.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v8.s[0], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v9.s[3], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v9.s[2], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v9.s[1], v30.s[0] - fadd s30, s30, s31 + fadd s30, s30, s31 mov v9.s[0], v30.s[0] - fadd s30, s30, s31 - mov v10.s[3], v10.s[0] - fadd s30, s30, s31 - mov v10.s[2], v10.s[0] - fadd s30, s30, s31 - mov v10.s[1], v10.s[0] - fadd s30, s30, s31 - mov v10.s[0], v30.s[0] + fadd s30, s30, s31 + mov v10.s[3], v10.s[0] + fadd s30, s30, s31 + mov v10.s[2], v10.s[0] + fadd s30, s30, s31 + mov v10.s[1], v10.s[0] + fadd s30, s30, s31 + mov v10.s[0], v30.s[0] - fadd s30, s30, s31 - mov v11.s[3], v30.s[0] - fadd s30, s30, s31 - mov v11.s[2], v30.s[0] - fadd s30, s30, s31 - mov v11.s[1], v30.s[0] - fadd s30, s30, s31 - mov v11.s[0], v30.s[0] + fadd s30, s30, s31 + mov v11.s[3], v30.s[0] + fadd s30, s30, s31 + mov v11.s[2], v30.s[0] + fadd s30, s30, s31 + mov v11.s[1], v30.s[0] + fadd s30, s30, s31 + mov v11.s[0], v30.s[0] - fadd s30, s30, s31 - mov v12.s[3], v30.s[0] - fadd s30, s30, s31 - mov v12.s[2], v30.s[0] - fadd s30, s30, s31 - mov v12.s[1], v30.s[0] - fadd s30, s30, s31 - mov v12.s[0], v30.s[0] + fadd s30, s30, s31 + mov v12.s[3], v30.s[0] + fadd s30, s30, s31 + mov v12.s[2], v30.s[0] + fadd s30, s30, s31 + mov v12.s[1], v30.s[0] + fadd s30, s30, s31 + mov v12.s[0], v30.s[0] - fadd s30, s30, s31 - mov v13.s[3], v30.s[0] - fadd s30, s30, s31 - mov v13.s[2], v30.s[0] - fadd s30, s30, s31 - mov v13.s[1], v30.s[0] - fadd s30, s30, s31 - mov v13.s[0], v30.s[0] + fadd s30, s30, s31 + mov v13.s[3], v30.s[0] + fadd s30, s30, s31 + mov v13.s[2], v30.s[0] + fadd s30, s30, s31 + mov v13.s[1], v30.s[0] + fadd s30, s30, s31 + mov v13.s[0], v30.s[0] - fadd s30, s30, s31 - mov v14.s[3], v30.s[0] - fadd s30, s30, s31 - mov v14.s[2], v30.s[0] - fadd s30, s30, s31 - mov v14.s[1], v30.s[0] - fadd s30, s30, s31 - mov v14.s[0], v30.s[0] + fadd s30, s30, s31 + mov v14.s[3], v30.s[0] + fadd s30, s30, s31 + mov v14.s[2], v30.s[0] + fadd s30, s30, s31 + mov v14.s[1], v30.s[0] + fadd s30, s30, s31 + mov v14.s[0], v30.s[0] - fadd s30, s30, s31 - mov v15.s[3], v30.s[0] - fadd s30, s30, s31 - mov v15.s[2], v30.s[0] - fadd s30, s30, s31 - mov v15.s[1], v30.s[0] - fadd s30, s30, s31 - mov v15.s[0], v30.s[0] + fadd s30, s30, s31 + mov v15.s[3], v30.s[0] + fadd s30, s30, s31 + mov v15.s[2], v30.s[0] + fadd s30, s30, s31 + mov v15.s[1], v30.s[0] + fadd s30, s30, s31 + mov v15.s[0], v30.s[0] #mov s30, wzr #mov s31, wzr @@ -185,5 +184,4 @@ fs_routine: fdiv v29.4s, v29.4s, v2.4s fdiv v30.4s, v30.4s, v1.4s - mov w0, v16.s[3] ret diff --git a/c8_libpayload/pl/src/floppysleep.c b/c8_libpayload/pl/src/floppysleep.c index b77184b..34e6597 100644 --- a/c8_libpayload/pl/src/floppysleep.c +++ b/c8_libpayload/pl/src/floppysleep.c @@ -23,23 +23,24 @@ TEXT_SECTION unsigned long long _start(float *init_a) { int i; - unsigned long long check; unsigned long long start, end, report; unsigned long long timer_deadline_enter = 0x10000b874; unsigned long long halt = 0x1000004fc; - fs_load(init_a, 1); - - __asm__ volatile ("mrs %0, cntpct_el0" : "=r" (start)); - for(i = 0; i < 8; i++) check = fs_routine(); - __asm__ volatile ("mrs %0, cntpct_el0" : "=r" (end)); - - if(2 * end - start - 64 > 0) + while(1) { - ((BOOTROM_FUNC) timer_deadline_enter)(2 * end - start - 64, ((BOOTROM_FUNC) 0x10000b924)); - ((BOOTROM_FUNC) halt)(); + __asm__ volatile ("mrs %0, cntpct_el0" : "=r" (start)); + fs_load(init_a, 1); + for(i = 0; i < 8; i++) fs_routine(); + __asm__ volatile ("mrs %0, cntpct_el0" : "=r" (end)); + + if(2 * end - start - 64 > 0) + { + ((BOOTROM_FUNC) timer_deadline_enter)(2 * end - start - 64, ((BOOTROM_FUNC) 0x10000b924)); + ((BOOTROM_FUNC) halt)(); + } } - + __asm__ volatile ("mrs %0, cntpct_el0" : "=r" (report)); - return report - start; + return end - start; } \ No newline at end of file