wok annotate linld/stuff/jump.u @ rev 19203

linld/tobzimage: add realmode_switch support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Jun 11 15:57:21 2016 +0200 (2016-06-11)
parents
children df186455938f
rev   line source
pascal@19203 1 --- LINLD097/JUMP.ASM
pascal@19203 2 +++ LINLD097/JUMP.ASM
pascal@19203 3 @@ -24,33 +24,22 @@
pascal@19203 4 jmpseg :word, \
pascal@19203 5 jmpofs :word = PARAM_SIZE
pascal@19203 6
pascal@19203 7 - push bp ;TODO: kinda useless, isn't it?
pascal@19203 8 - mov bp,sp
pascal@19203 9 -
pascal@19203 10 - ;;mov ax,[jmpseg] ;Move data to CS segment var
pascal@19203 11 - ;;mov [seg2],ax ; we cannot use any other seg!
pascal@19203 12 - ;;mov ax,[jmpofs] ;
pascal@19203 13 - ;;mov [ofs2],ax ;
pascal@19203 14 - mov cx,[jmpofs] ;Do NOT load in r32:
pascal@19203 15 - mov dx,[jmpseg] ; wrong order!
pascal@19203 16 -
pascal@19203 17 - mov ax,[sreg]
pascal@19203 18 - mov sp,[stk] ;Do not use [bp+n] after this...
pascal@19203 19 - mov ds,ax
pascal@19203 20 - mov es,ax
pascal@19203 21 - mov ss,ax
pascal@19203 22 - mov fs,ax
pascal@19203 23 - mov gs,ax
pascal@19203 24 + pop bx ;caller return address
pascal@19203 25 + pop bx ; sreg
pascal@19203 26 + pop ax ; stk
pascal@19203 27 + pop dx ; jmpseg
pascal@19203 28 + pop cx ; jmpofs
pascal@19203 29 + mov ds,bx
pascal@19203 30 + mov es,bx
pascal@19203 31 + mov fs,bx
pascal@19203 32 + mov gs,bx
pascal@19203 33 + mov ss,bx
pascal@19203 34 + xchg sp,ax
pascal@19203 35 assume nothing
pascal@19203 36 assume cs:DGROUP
pascal@19203 37
pascal@19203 38 - ;;jmp [dword ofs2]
pascal@19203 39 -
pascal@19203 40 push dx cx
pascal@19203 41 retf
pascal@19203 42 -; Data
pascal@19203 43 -;;ofs2 dw ?
pascal@19203 44 -;;seg2 dw ?
pascal@19203 45 endp _set_sregs_jump_seg_ofs
pascal@19203 46
pascal@19203 47 ends _TEXT