=> R0 = 2
R3 = amount the area is shrinking by
R4 = new size of area, in bytes
R5 = page size, in bytes
R12 = workspace pointer passed to OS_DynamicArea 0 or base of area.
<= R3 = amount area can shrink by
all others preserved, unless grow is disallowed
This reason code is issued when a call to OS_ChangeDynamicArea results in an area shrinking, before any pages are moved. You can limit the amount of memory moved out of the area. If the permitted skrinkage you return is a non-page multiple, it will be rounded down to a page multiple.
You can prevent the area changing size by returning an error. R0 should point to a null terminated error message, or be set to zero for a generic error message to be used. R3 should be zero, to show that no shrinkage is possible. You should then return with the V flag set.
|
|
|