continue
}
}
+ flag := m[3]
fn = knownFunc[fnName][arch]
if fn != nil {
size, _ := strconv.Atoi(m[5])
- flag := m[3]
if size != fn.size && (flag != "7" && !strings.Contains(flag, "NOSPLIT") || size != 0) {
badf("wrong argument size %d; expected $...-%d", size, fn.size)
}
}
localSize, _ = strconv.Atoi(m[4])
localSize += archDef.intSize
- if archDef.lr {
+ if archDef.lr && !strings.Contains(flag, "NOFRAME") {
// Account for caller's saved LR
localSize += archDef.intSize
}
MOVW y+4(FP), AX
MOVW AX, ret+8(FP)
RET
+
+TEXT ·noframe1(SB),0,$0-4
+ MOVW 0(R13), AX // Okay; our saved LR
+ MOVW 4(R13), AX // Okay; caller's saved LR
+ MOVW x+8(R13), AX // Okay; x argument
+ MOVW 12(R13), AX // ERROR "use of 12\(R13\) points beyond argument frame"
+ RET
+
+TEXT ·noframe2(SB),NOFRAME,$0-4
+ MOVW 0(R13), AX // Okay; caller's saved LR
+ MOVW x+4(R13), AX // Okay; x argument
+ MOVW 8(R13), AX // ERROR "use of 8\(R13\) points beyond argument frame"
+ MOVW 12(R13), AX // ERROR "use of 12\(R13\) points beyond argument frame"
+ RET