140
Advanced Information
#==========================================
OVERLAY_0_OFFSET:
# main module.
.word 0x0 # offset from start of code
.half 0x0 # size in bytes (-1)
.half 0x1080 # destination
#==========================================
#============= NEWTONS OVERLAY ============
#==========================================
OVERLAY_1_OFFSET:
OVERLAY_NEWTON:
# Newton’s module laid over boot code.
.word 0x0 # offset from start of code
.half 0x0 # size in bytes (-1)
.half 0x1000 # destination
The size and offset of the microcode objects will be filled in by
buildtask
,
see Figure 6-2, “buildtask Operation,” on page 137.
Overlay Initialization Code
Before we load the overlay we must update the overlay table with the correct
DRAM address for the start of the code. This is usually done immediately at
the beginning of the program, since we require the
OSTask
structure which
has been copied into DMEM (and may need to be overwritten by the
program).
#####################################################
#
# code overlays:
#
# update table to be real DRAM address:
lw $5, OS_TASK_OFF_UCODE($1) # ucode base pointer
# PATCH NEWTON ONLY
lw $2, (OVERLAY_1_ OVERLAY_OFFSET)(zero)
add $2, $2, $5
sw $2, (OVERLAY_1_ OVERLAY_OFFSET)(zero)
Summary of Contents for Ultra64
Page 2: ...2 ...
Page 10: ...10 ...
Page 12: ...12 Figure 6 2 buildtask Operation 137 ...
Page 14: ...14 ...
Page 80: ...80 Vector Unit Instructions vmadm dres_int dres_int vconst 3 vmadn dres_frac vconst vconst 0 ...
Page 104: ...104 RSP Coprocessor 0 ...
Page 150: ...150 Advanced Information ...
Page 155: ...Revision 1 0 155 ...
Page 248: ...248 Exceptions None ...
Page 251: ...Revision 1 0 251 Exceptions None ...
Page 254: ...254 Exceptions None ...
Page 257: ...Revision 1 0 257 Exceptions None ...
Page 293: ...Revision 1 0 293 Exceptions None ...
Page 316: ...316 Exceptions None ...