Skip to content

Commit

Permalink
add support to wake tamago < 1.23 applets on >= 1.23 os
Browse files Browse the repository at this point in the history
  • Loading branch information
abarisani committed Oct 17, 2024
1 parent 07642fe commit f8a74f2
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
1 change: 1 addition & 0 deletions trusted_os/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ var irqHandler = make(map[int]func())

// defined in handler.s
func wakeHandler(g uint32, p uint32)
func wakeHandlerPreGo122(g uint32, p uint32)

func isr() {
irq := imx6ul.GIC.GetInterrupt(true)
Expand Down
40 changes: 40 additions & 0 deletions trusted_os/handler.s
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
#include "go_asm.h"
#include "textflag.h"

#define g_timer 208
#define timer_nextwhen 36
#define timer_status 44
#define const_timerModifiedEarlier 7
#define p_timerModifiedEarliest 2384

TEXT ·wakeHandler(SB),$0-8
MOVW handlerG+0(FP), R0
MOVW handlerP+4(FP), R1
Expand All @@ -28,3 +34,37 @@ TEXT ·wakeHandler(SB),$0-8
B runtime·WakeG(SB)
done:
RET

// In order to support applets built with tamago < 1.23 the previous version of
// WakeG is made available here.
TEXT ·wakeHandlerPreGo123(SB),$0-8
MOVW handlerG+0(FP), R0
MOVW handlerP+4(FP), R1

CMP $0, R0
B.EQ done

CMP $0, R1
B.EQ done

MOVW (g_timer)(R0), R0
CMP $0, R0
B.EQ done

// g->timer.nextwhen = 1
MOVW $1, R2
MOVW R2, (timer_nextwhen+0)(R0)
MOVW $0, R2
MOVW R2, (timer_nextwhen+4)(R0)

// g->timer.status = timerModifiedEarlier
MOVW $const_timerModifiedEarlier, R2
MOVW R2, (timer_status+0)(R0)

// g->m->p.timerModifiedEarliest = 1
MOVW $1, R2
MOVW R2, (p_timerModifiedEarliest)(R1)
MOVW $0, R2
MOVW R2, (p_timerModifiedEarliest+4)(R1)
done:
RET

0 comments on commit f8a74f2

Please sign in to comment.