Files
cc65/libsrc/pcengine/_heap.s

68 lines
1.4 KiB
ArmAsm

;
; Ullrich von Bassewitz, 03.06.1998
;
; Heap variables and initialization.
;
; FIXME: there should be a way to configure heap from linkerscript!
.constructor initheap, 24
.import __RAM_START__, __RAM_SIZE__, __STACKSIZE__ ; Linker generated
.import __BSS_SIZE__
.importzp sp
.data
;; old - remove
.export __horg, __hptr, __hend, __hfirst, __hlast
__horg:
.word __RAM_START__+__BSS_SIZE__+__DATA_SIZE__ ; Linker calculates this symbol
__hptr:
.word __RAM_START__+__BSS_SIZE__+__DATA_SIZE__ ; Dito
__hend:
.word __RAM_START__+__RAM_SIZE__
__hfirst:
.word 0
__hlast:
.word 0
.export __heaporg
.export __heapptr
.export __heapend
.export __heapfirst
.export __heaplast
__heaporg:
.word __RAM_START__+__BSS_SIZE__+__DATA_SIZE__ ; Linker calculates this symbol
__heapptr:
.word __RAM_START__+__BSS_SIZE__+__DATA_SIZE__ ; Linker calculates this symbol
__heapend:
.word __RAM_START__+__RAM_SIZE__
__heapfirst:
.word 0
__heaplast:
.word 0
; Initialization. Will be called from startup!
.code
initheap:
;sec
;lda sp
; lda #<(__STACKSIZE__)
; lda #<(__RAM_START__+__RAM_SIZE__)
lda #<(__RAM_START__+__BSS_SIZE__+__DATA_SIZE__)
sta __heapend
sta __hend ; old
; lda sp+1
; lda #>(__STACKSIZE__)
; lda #>(__RAM_START__+__RAM_SIZE__)
lda #>(__RAM_START__+__BSS_SIZE__+__DATA_SIZE__)
sta __heapend+1
sta __hend+1 ; old
rts