; Copyright 1996 Acorn Computers Ltd ; ; Licensed under the Apache License, Version 2.0 (the "License"); ; you may not use this file except in compliance with the License. ; You may obtain a copy of the License at ; ; http://www.apache.org/licenses/LICENSE-2.0 ; ; Unless required by applicable law or agreed to in writing, software ; distributed under the License is distributed on an "AS IS" BASIS, ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ; See the License for the specific language governing permissions and ; limitations under the License. ; ; -*- Mode: Assembler -*- ;* Shared library kernel: Arthur module version ;* Lastedit: 22 Feb 90 16:07:23 by Harry Meekings * ; ; Copyright (C) Acorn Computers Ltd., 1988. ; GBLL Brazil_Compatible GBLS Calling_Standard GBLL ModeMayBeNonUser GBLL SharedLibrary GBLL DDE Brazil_Compatible SETL {FALSE} Calling_Standard SETS "APCS_U" ModeMayBeNonUser SETL {TRUE} SharedLibrary SETL {TRUE} DDE SETL {TRUE} GET s.h_Regs GET s.h_Brazil GET s.h_modmacro Module kernel AREA |C$$data|, DATA dataStart GET kernel.s.k_data dataEnd AREA |Lib$$Init|, READONLY & 1 & entriesStart & entriesEnd & dataStart & dataEnd AREA |RTSK$$Data|, DATA, READONLY ; an empty one, so the symbols below are always defined AREA |K$$Code|, CODE, READONLY IMPORT |RTSK$$Data$$Base| IMPORT |RTSK$$Data$$Limit| CV_Code entriesStart GET kernel.s.k_entries entriesEnd CV_Entries SETL {TRUE} GET kernel.s.k_entries |_kernel_stkovfs_0v| MOV r11, r12 |_kernel_stkovfs_v| STMFD r12!, {r11} ; implied required frame size (pro tem) MOV r11, r10 ; fp (may not mark as chunk change) MOV r10, r13 ; sl MOV r13, r12 ; sp LDMFD r13!, {ip} ; recover frame requirement STR r14, [sl, #SC_veneerStkexLink-SC_SLOffset] BL |_kernel_stkovf_split| MOV r12, r13 ; sp MOV r13, r10 ; sl MOV r10, r11 ; fp LDR r14, [r10, #-4] ; link to stackunextend created by extend code ORR r14, r14, #&40000000 ; set Z in it, to mark veneer STR r14, [r10, #-4] LDR r14, [r13, #SC_prev-SC_SLOffset] ; we've changed stack chunks! LDR r14, [r14, #SC_veneerStkexLink] MOVS pc, r14 |_kernel_NoVeneer| ADR r0, E_NoVeneer SWI GenerateError ErrorBlock NoVeneer, "No Veneer", C48 LNK kernel.s.k_body