changeset 45:576e684603e0

l1_afunc.c differences analysed
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Fri, 04 Mar 2016 04:41:52 +0000
parents 851c826f9545
children da708f6be90f
files g23m/objdiff/l1_ext/l1_afunc.notes
diffstat 1 files changed, 372 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/g23m/objdiff/l1_ext/l1_afunc.notes	Fri Mar 04 04:41:52 2016 +0000
@@ -0,0 +1,372 @@
+The result of l1_afunc.c recompilation is identical to the original up until
+the l1a_clip_txpwr() function, which is the last function in the module.
+
+Original 20070608 version of l1_afunc.obj, disassembly of l1a_clip_txpwr():
+
+$l1a_clip_txpwr:	; Global
+; u_char l1a_clip_txpwr();
+; Begin function
+; REGPARM r0: u_char supplied_txpwr;
+; REGPARM r1: u_short radio_freq;
+; REG r1: unsigned "C$21";
+; REG r1: unsigned "C$22";
+; REG r1: unsigned "C$23";
+; REG r2: struct ? *"K$6";
+; REG r1: u_char "U$41";
+; REG r1: u_char "U$82";
+; REG r1: u_char "U$95";
+; REG r1: u_char "U$108";
+; REG r0: u_char power;
+; REG r1: u_short radio_freq;
+; REG r0: u_char supplied_txpwr;
+; REG r3: int "S$20";
+; REG r5: int "S$19";
+; REG r2: unsigned "S$18";
+; REG r1: unsigned "S$17";
+; REG r3: int "S$16";
+; REG r5: int "S$15";
+; REG r2: unsigned "S$14";
+; REG r1: unsigned "S$13";
+; REG r1: int "S$12";
+; REG r5: int "S$11";
+; REG r2: unsigned "S$10";
+; REG r1: unsigned "S$9";
+; REG r3: int "S$8";
+; REG r5: int "S$7";
+; REG r2: unsigned "S$6";
+; REG r1: unsigned "S$5";
+; REG r3: int "S$4";
+; REG r5: int "S$3";
+; REG r2: unsigned "S$2";
+; REG r1: unsigned "S$1";
+; REG r3: unsigned "U$26";
+; REG r3: unsigned "U$26";
+; REG r3: unsigned "U$26";
+; REG r1: u_char "U$22";
+; REG r3: u_char "U$22";
+; REG r4: unsigned "U$30";
+; REG r4: unsigned "U$30";
+; REG r4: unsigned "U$30";
+; REG r4: unsigned "U$30";
+; REG r4: unsigned "U$30";
+; REG r3: unsigned "U$51";
+; REG r3: unsigned "U$51";
+; REG r1: u_char "U$75";
+; REG r1: u_char "U$75";
+
+$CODE16:	; label
+     490:	b530		push	{r4, r5, lr}
+; switch statement
+     492:	4a87		ldr	r2, =_l1_config	; via 0x6b0
+     494:	7813		ldrb	r3, [r2, #0]
+     496:	1e5b		sub	r3, r3, #1
+     498:	2b01		cmp	r3, #1
+     49a:	d800		bhi	0x49e
+     49c:	e0fa		b	0x694	; GSM or GSM_E
+     49e:	3b02		sub	r3, #2
+     4a0:	2b00		cmp	r3, #0
+     4a2:	d100		bne	0x4a6
+     4a4:	e0cf		b	0x646	; PCS1900
+     4a6:	3b01		sub	r3, #1
+     4a8:	2b00		cmp	r3, #0
+     4aa:	d100		bne	0x4ae
+     4ac:	e0a4		b	0x5f8	; DCS1800
+     4ae:	3b01		sub	r3, #1
+     4b0:	2b01		cmp	r3, #1
+     4b2:	d968		bls	0x586	; DUAL or DUAL_EXT
+     4b4:	3b02		sub	r3, #2
+     4b6:	2b00		cmp	r3, #0
+     4b8:	d03d		beq	0x536	; GSM850
+     4ba:	3b01		sub	r3, #1
+     4bc:	2b00		cmp	r3, #0
+     4be:	d000		beq	0x4c2	; DUAL_US
+     4c0:	e0f5		b	0x6ae	; default - return
+; case DUAL_US:
+     4c2:	68d3		ldr	r3, [r2, #12]	; 0xc
+     4c4:	4299		cmp	r1, r3
+     4c6:	d20e		bcs	0x4e6
+; low band (850)
+     4c8:	4b7c		ldr	r3, =_MIN_TXPWR_GSM850	; via 0x6bc
+     4ca:	497d		ldr	r1, =_l1a_l1s_com+0x335	; via 0x6c0
+     4cc:	7809		ldrb	r1, [r1, #0]
+     4ce:	5c59		ldrb	r1, [r3, r1]
+     4d0:	4288		cmp	r0, r1
+     4d2:	db06		blt	0x4e2
+; line
+     4d4:	69d1		ldr	r1, [r2, #28]	; 0x1c
+     4d6:	4288		cmp	r0, r1
+     4d8:	d800		bhi	0x4dc
+     4da:	e0e8		b	0x6ae
+; line
+     4dc:	0608		lsl	r0, r1, #24
+     4de:	0e00		lsr	r0, r0, #24
+     4e0:	e0e5		b	0x6ae
+; line
+     4e2:	1c08		mov	r0, r1		(add r0, r1, #0)
+     4e4:	e0e3		b	0x6ae
+; high band (1900)
+     4e6:	6a54		ldr	r4, [r2, #36]	; 0x24
+     4e8:	42a0		cmp	r0, r4
+     4ea:	d901		bls	0x4f0
+     4ec:	1c05		mov	r5, r0		(add r5, r0, #0)
+     4ee:	e001		b	0x4f4
+     4f0:	2120		mov	r1, #32	; 0x20
+     4f2:	180d		add	r5, r1, r0
+     4f4:	4b73		ldr	r3, =_MIN_TXPWR_PCS	; via 0x6c4
+     4f6:	4974		ldr	r1, =_l1a_l1s_com+0x336	; via 0x6c8
+     4f8:	7809		ldrb	r1, [r1, #0]
+     4fa:	5c59		ldrb	r1, [r3, r1]
+     4fc:	42a1		cmp	r1, r4
+     4fe:	d901		bls	0x504
+     500:	1c0b		mov	r3, r1		(add r3, r1, #0)
+     502:	e001		b	0x508
+     504:	2320		mov	r3, #32	; 0x20
+     506:	185b		add	r3, r3, r1
+     508:	429d		cmp	r5, r3
+     50a:	db12		blt	0x532
+; line
+     50c:	42a0		cmp	r0, r4
+     50e:	d901		bls	0x514
+     510:	1c01		mov	r1, r0		(add r1, r0, #0)
+     512:	e001		b	0x518
+     514:	2120		mov	r1, #32	; 0x20
+     516:	1809		add	r1, r1, r0
+     518:	6a13		ldr	r3, [r2, #32]	; 0x20
+     51a:	42a3		cmp	r3, r4
+     51c:	d802		bhi	0x524
+     51e:	2220		mov	r2, #32	; 0x20
+     520:	18d2		add	r2, r2, r3
+     522:	e000		b	0x526
+     524:	1c1a		mov	r2, r3		(add r2, r3, #0)
+     526:	4291		cmp	r1, r2
+     528:	d800		bhi	0x52c
+     52a:	e0c0		b	0x6ae
+; line
+     52c:	0618		lsl	r0, r3, #24
+     52e:	0e00		lsr	r0, r0, #24
+     530:	e0bd		b	0x6ae
+; line
+     532:	1c08		mov	r0, r1		(add r0, r1, #0)
+     534:	e0bb		b	0x6ae
+; case GSM850:
+     536:	6a54		ldr	r4, [r2, #36]	; 0x24
+     538:	42a0		cmp	r0, r4
+     53a:	d901		bls	0x540
+     53c:	1c05		mov	r5, r0		(add r5, r0, #0)
+     53e:	e001		b	0x544
+     540:	2120		mov	r1, #32	; 0x20
+     542:	180d		add	r5, r1, r0
+     544:	495d		ldr	r1, =_MIN_TXPWR_GSM850	; via 0x6bc
+     546:	4b5e		ldr	r3, =_l1a_l1s_com+0x335	; via 0x6c0
+     548:	781b		ldrb	r3, [r3, #0]
+     54a:	5ccb		ldrb	r3, [r1, r3]
+     54c:	42a3		cmp	r3, r4
+     54e:	d901		bls	0x554
+     550:	1c19		mov	r1, r3		(add r1, r3, #0)
+     552:	e001		b	0x558
+     554:	2120		mov	r1, #32	; 0x20
+     556:	18c9		add	r1, r1, r3
+     558:	428d		cmp	r5, r1
+     55a:	db12		blt	0x582
+; line
+     55c:	42a0		cmp	r0, r4
+     55e:	d901		bls	0x564
+     560:	1c01		mov	r1, r0		(add r1, r0, #0)
+     562:	e001		b	0x568
+     564:	2120		mov	r1, #32	; 0x20
+     566:	1809		add	r1, r1, r0
+     568:	69d3		ldr	r3, [r2, #28]	; 0x1c
+     56a:	42a3		cmp	r3, r4
+     56c:	d802		bhi	0x574
+     56e:	2220		mov	r2, #32	; 0x20
+     570:	18d2		add	r2, r2, r3
+     572:	e000		b	0x576
+     574:	1c1a		mov	r2, r3		(add r2, r3, #0)
+     576:	4291		cmp	r1, r2
+     578:	d800		bhi	0x57c
+     57a:	e098		b	0x6ae
+; line
+     57c:	0618		lsl	r0, r3, #24
+     57e:	0e00		lsr	r0, r0, #24
+     580:	e095		b	0x6ae
+; line
+     582:	1c18		mov	r0, r3		(add r0, r3, #0)
+     584:	e093		b	0x6ae
+; case DUAL:
+; case DUAL_EXT:
+     586:	68d3		ldr	r3, [r2, #12]	; 0xc
+     588:	4299		cmp	r1, r3
+     58a:	d20e		bcs	0x5aa
+; low band (900)
+     58c:	4b4f		ldr	r3, =_MIN_TXPWR_GSM	; via 0x6cc
+     58e:	494c		ldr	r1, =_l1a_l1s_com+0x335	; via 0x6c0
+     590:	7809		ldrb	r1, [r1, #0]
+     592:	5c59		ldrb	r1, [r3, r1]
+     594:	4288		cmp	r0, r1
+     596:	db06		blt	0x5a6
+; line
+     598:	69d1		ldr	r1, [r2, #28]	; 0x1c
+     59a:	4288		cmp	r0, r1
+     59c:	d800		bhi	0x5a0
+     59e:	e086		b	0x6ae
+; line
+     5a0:	0608		lsl	r0, r1, #24
+     5a2:	0e00		lsr	r0, r0, #24
+     5a4:	e083		b	0x6ae
+; line
+     5a6:	1c08		mov	r0, r1		(add r0, r1, #0)
+     5a8:	e081		b	0x6ae
+; high band (1800)
+     5aa:	6a54		ldr	r4, [r2, #36]	; 0x24
+     5ac:	42a0		cmp	r0, r4
+     5ae:	d901		bls	0x5b4
+     5b0:	1c05		mov	r5, r0		(add r5, r0, #0)
+     5b2:	e001		b	0x5b8
+     5b4:	2120		mov	r1, #32	; 0x20
+     5b6:	180d		add	r5, r1, r0
+     5b8:	4b45		ldr	r3, =_MIN_TXPWR_DCS	; via 0x6d0
+     5ba:	4943		ldr	r1, =_l1a_l1s_com+0x336	; via 0x6c8
+     5bc:	7809		ldrb	r1, [r1, #0]
+     5be:	5c59		ldrb	r1, [r3, r1]
+     5c0:	42a1		cmp	r1, r4
+     5c2:	d901		bls	0x5c8
+     5c4:	1c0b		mov	r3, r1		(add r3, r1, #0)
+     5c6:	e001		b	0x5cc
+     5c8:	2320		mov	r3, #32	; 0x20
+     5ca:	185b		add	r3, r3, r1
+     5cc:	429d		cmp	r5, r3
+     5ce:	db11		blt	0x5f4
+; line
+     5d0:	42a0		cmp	r0, r4
+     5d2:	d901		bls	0x5d8
+     5d4:	1c01		mov	r1, r0		(add r1, r0, #0)
+     5d6:	e001		b	0x5dc
+     5d8:	2120		mov	r1, #32	; 0x20
+     5da:	1809		add	r1, r1, r0
+     5dc:	6a13		ldr	r3, [r2, #32]	; 0x20
+     5de:	42a3		cmp	r3, r4
+     5e0:	d802		bhi	0x5e8
+     5e2:	2220		mov	r2, #32	; 0x20
+     5e4:	18d2		add	r2, r2, r3
+     5e6:	e000		b	0x5ea
+     5e8:	1c1a		mov	r2, r3		(add r2, r3, #0)
+     5ea:	4291		cmp	r1, r2
+     5ec:	d95f		bls	0x6ae
+; line
+     5ee:	0618		lsl	r0, r3, #24
+     5f0:	0e00		lsr	r0, r0, #24
+     5f2:	e05c		b	0x6ae
+; line
+     5f4:	1c08		mov	r0, r1		(add r0, r1, #0)
+     5f6:	e05a		b	0x6ae
+; case DCS1800:
+     5f8:	6a54		ldr	r4, [r2, #36]	; 0x24
+     5fa:	42a0		cmp	r0, r4
+     5fc:	d901		bls	0x602
+     5fe:	1c05		mov	r5, r0		(add r5, r0, #0)
+     600:	e001		b	0x606
+     602:	2120		mov	r1, #32	; 0x20
+     604:	180d		add	r5, r1, r0
+     606:	4932		ldr	r1, =_MIN_TXPWR_DCS	; via 0x6d0
+     608:	4b2d		ldr	r3, =_l1a_l1s_com+0x335	; via 0x6c0
+     60a:	781b		ldrb	r3, [r3, #0]
+     60c:	5cc9		ldrb	r1, [r1, r3]
+     60e:	42a1		cmp	r1, r4
+     610:	d901		bls	0x616
+     612:	1c0b		mov	r3, r1		(add r3, r1, #0)
+     614:	e001		b	0x61a
+     616:	2320		mov	r3, #32	; 0x20
+     618:	185b		add	r3, r3, r1
+     61a:	429d		cmp	r5, r3
+     61c:	db11		blt	0x642
+; line
+     61e:	42a0		cmp	r0, r4
+     620:	d901		bls	0x626
+     622:	1c01		mov	r1, r0		(add r1, r0, #0)
+     624:	e001		b	0x62a
+     626:	2120		mov	r1, #32	; 0x20
+     628:	1809		add	r1, r1, r0
+     62a:	69d3		ldr	r3, [r2, #28]	; 0x1c
+     62c:	42a3		cmp	r3, r4
+     62e:	d802		bhi	0x636
+     630:	2220		mov	r2, #32	; 0x20
+     632:	18d2		add	r2, r2, r3
+     634:	e000		b	0x638
+     636:	1c1a		mov	r2, r3		(add r2, r3, #0)
+     638:	4291		cmp	r1, r2
+     63a:	d938		bls	0x6ae
+; line
+     63c:	0618		lsl	r0, r3, #24
+     63e:	0e00		lsr	r0, r0, #24
+     640:	e035		b	0x6ae
+; line
+     642:	1c08		mov	r0, r1		(add r0, r1, #0)
+     644:	e033		b	0x6ae
+; case PCS1900:
+     646:	6a54		ldr	r4, [r2, #36]	; 0x24
+     648:	42a0		cmp	r0, r4
+     64a:	d901		bls	0x650
+     64c:	1c05		mov	r5, r0		(add r5, r0, #0)
+     64e:	e001		b	0x654
+     650:	2120		mov	r1, #32	; 0x20
+     652:	180d		add	r5, r1, r0
+     654:	4b1b		ldr	r3, =_MIN_TXPWR_PCS	; via 0x6c4
+     656:	491a		ldr	r1, =_l1a_l1s_com+0x335	; via 0x6c0
+     658:	7809		ldrb	r1, [r1, #0]
+     65a:	5c59		ldrb	r1, [r3, r1]
+     65c:	42a1		cmp	r1, r4
+     65e:	d901		bls	0x664
+     660:	1c0b		mov	r3, r1		(add r3, r1, #0)
+     662:	e001		b	0x668
+     664:	2320		mov	r3, #32	; 0x20
+     666:	185b		add	r3, r3, r1
+     668:	429d		cmp	r5, r3
+     66a:	db11		blt	0x690
+; line
+     66c:	42a0		cmp	r0, r4
+     66e:	d901		bls	0x674
+     670:	1c01		mov	r1, r0		(add r1, r0, #0)
+     672:	e001		b	0x678
+     674:	2120		mov	r1, #32	; 0x20
+     676:	1809		add	r1, r1, r0
+     678:	69d3		ldr	r3, [r2, #28]	; 0x1c
+     67a:	42a3		cmp	r3, r4
+     67c:	d802		bhi	0x684
+     67e:	2220		mov	r2, #32	; 0x20
+     680:	18d2		add	r2, r2, r3
+     682:	e000		b	0x686
+     684:	1c1a		mov	r2, r3		(add r2, r3, #0)
+     686:	4291		cmp	r1, r2
+     688:	d911		bls	0x6ae
+; line
+     68a:	0618		lsl	r0, r3, #24
+     68c:	0e00		lsr	r0, r0, #24
+     68e:	e00e		b	0x6ae
+; line
+     690:	1c08		mov	r0, r1		(add r0, r1, #0)
+     692:	e00c		b	0x6ae
+; case GSM:
+; case GSM_E:
+     694:	4b0d		ldr	r3, =_MIN_TXPWR_GSM	; via 0x6cc
+     696:	490a		ldr	r1, =_l1a_l1s_com+0x335	; via 0x6c0
+     698:	7809		ldrb	r1, [r1, #0]
+     69a:	5c59		ldrb	r1, [r3, r1]
+     69c:	4288		cmp	r0, r1
+     69e:	db05		blt	0x6ac
+; line
+     6a0:	69d1		ldr	r1, [r2, #28]	; 0x1c
+     6a2:	4288		cmp	r0, r1
+     6a4:	d903		bls	0x6ae
+; line
+     6a6:	0608		lsl	r0, r1, #24
+     6a8:	0e00		lsr	r0, r0, #24
+     6aa:	e000		b	0x6ae
+; line
+     6ac:	1c08		mov	r0, r1		(add r0, r1, #0)
+; line
+     6ae:	bd30		pop	{r4, r5, pc}
+; End function
+
+Conclusion: the logic contained in the above disassembly is exactly the same
+as in the available C code, but there must have been some change to the code
+expression that results in different output from the compiler.