Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

;;; Test 68HC11 linker relaxation and fixup of brclr/brset branches
;;; 
	.sect .text
	.globl _start
_start:
start:
	brclr	140,x#200,L8	; Branch adjustment covers the whole test
;;; The 'addd' is relaxed and we win 1 byte.  The next brclr/brset
;;; branch must be fixed and reduced by 1.  We check for different
;;; addressing modes because the instruction has different opcode and
;;; different lengths.
L1:
	addd	_toto
	brclr	20,x,#3,L1
	brclr	90,x,#99,L3	; Likewise with forward branch
L2:
	addd	_toto
	brclr	19,y,#4,L2
	brclr	91,y,#98,L4
L3:
	addd	_toto
	brset	18,x,#5,L3
	brset	92,x,#97,L5
L4:
	addd	_toto
	brset	17,y,#6,L4
	brset	93,y,#96,L5
L5:
	addd	_toto
	brset	*_table,#7,L5
	brset	*_table+10,#95,L7
L6:
	addd	_toto
	brclr	*_table+1,#8,L6
	brset	*_table+11,#94,L8
L7:
	addd	_toto
	brclr	*_table+1,#8,L6
L8:
	brclr	140,x#200,_start ; Branch adjustment covers the whole test
	rts

	.sect	.page0
_bar:
	.long	0
_toto:
	.long	0
	.skip	32
stack:
	.skip	10
_table: