68 lines
1.4 KiB
ArmAsm
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
|
|
|