Переглянути джерело

at90usb8u2 and atmega8u2 should use rjmp/rcall because of small flash size.

ccrause 3 тижнів тому
батько
коміт
0e30f6c97c

+ 2 - 2
compiler/avr/cpuinfo.pas

@@ -392,7 +392,7 @@ Const
         ,(controllertypestr:'AT90PWM161';controllerunitstr:'AT90PWM161';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:256;sramsize:1024;eeprombase:0;eepromsize:512;bootbase:14336;bootsize:2048)
         ,(controllertypestr:'AT90PWM216';controllerunitstr:'AT90PWM216';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:256;sramsize:1024;eeprombase:0;eepromsize:512;bootbase:12288;bootsize:4096)
         ,(controllertypestr:'AT90PWM316';controllerunitstr:'AT90PWM316';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:256;sramsize:1024;eeprombase:0;eepromsize:512;bootbase:12288;bootsize:4096)
-        ,(controllertypestr:'AT90USB82';controllerunitstr:'AT90USB82';cputype:cpu_avr35;fputype:fpu_soft;flashbase:0;flashsize:8192;srambase:256;sramsize:512;eeprombase:0;eepromsize:512;bootbase:4096;bootsize:4096)
+        ,(controllertypestr:'AT90USB82';controllerunitstr:'AT90USB82';cputype:cpu_avr25;fputype:fpu_soft;flashbase:0;flashsize:8192;srambase:256;sramsize:512;eeprombase:0;eepromsize:512;bootbase:4096;bootsize:4096)
         ,(controllertypestr:'AT90USB162';controllerunitstr:'AT90USB162';cputype:cpu_avr35;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:256;sramsize:512;eeprombase:0;eepromsize:512;bootbase:12288;bootsize:4096)
         ,(controllertypestr:'AT90USB646';controllerunitstr:'AT90USB646';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:65536;srambase:256;sramsize:4096;eeprombase:0;eepromsize:2048;bootbase:57344;bootsize:8192)
         ,(controllertypestr:'AT90USB647';controllerunitstr:'AT90USB647';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:65536;srambase:256;sramsize:4096;eeprombase:0;eepromsize:2048;bootbase:57344;bootsize:8192)
@@ -403,7 +403,7 @@ Const
         ,(controllertypestr:'ATMEGA8';controllerunitstr:'ATMEGA8';cputype:cpu_avr4;fputype:fpu_soft;flashbase:0;flashsize:8192;srambase:96;sramsize:1024;eeprombase:0;eepromsize:512;bootbase:6144;bootsize:2048)
         ,(controllertypestr:'ATMEGA8A';controllerunitstr:'ATMEGA8A';cputype:cpu_avr4;fputype:fpu_soft;flashbase:0;flashsize:8192;srambase:96;sramsize:1024;eeprombase:0;eepromsize:512;bootbase:6144;bootsize:2048)
         ,(controllertypestr:'ATMEGA8HVA';controllerunitstr:'ATMEGA8HVA';cputype:cpu_avr4;fputype:fpu_soft;flashbase:0;flashsize:8192;srambase:256;sramsize:512;eeprombase:0;eepromsize:256)
-        ,(controllertypestr:'ATMEGA8U2';controllerunitstr:'ATMEGA8U2';cputype:cpu_avr35;fputype:fpu_soft;flashbase:0;flashsize:8192;srambase:256;sramsize:512;eeprombase:0;eepromsize:512;bootbase:4096;bootsize:4096)
+        ,(controllertypestr:'ATMEGA8U2';controllerunitstr:'ATMEGA8U2';cputype:cpu_avr25;fputype:fpu_soft;flashbase:0;flashsize:8192;srambase:256;sramsize:512;eeprombase:0;eepromsize:512;bootbase:4096;bootsize:4096)
         ,(controllertypestr:'ATMEGA16';controllerunitstr:'ATMEGA16';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:96;sramsize:1024;eeprombase:0;eepromsize:512;bootbase:14336;bootsize:2048)
         ,(controllertypestr:'ATMEGA16A';controllerunitstr:'ATMEGA16A';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:96;sramsize:1024;eeprombase:0;eepromsize:512;bootbase:14336;bootsize:2048)
         ,(controllertypestr:'ATMEGA16HVA';controllerunitstr:'ATMEGA16HVA';cputype:cpu_avr5;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:256;sramsize:512;eeprombase:0;eepromsize:256)

+ 2 - 2
rtl/embedded/Makefile

@@ -986,14 +986,14 @@ CPU_UNITS=attiny26
 CPU_UNITS_DEFINED=1
 endif
 ifeq ($(SUBARCH),avr25)
-CPU_UNITS=attiny13 attiny13a attiny24 attiny24a attiny25 attiny43u \
+CPU_UNITS=at90usb82 atmega8u2 attiny13 attiny13a attiny24 attiny24a attiny25 attiny43u \
 	  attiny44 attiny44a attiny45 attiny48 attiny84a attiny84 attiny85 \
 	  attiny87 attiny88 attiny261 attiny261a attiny441 attiny461 attiny461a attiny828 \
 	  attiny841 attiny861 attiny861a attiny2313 attiny2313a attiny4313
 CPU_UNITS_DEFINED=1
 endif
 ifeq ($(SUBARCH),avr35)
-CPU_UNITS=at90usb82 at90usb162 atmega8u2 atmega16u2 atmega32u2 attiny167 attiny1634
+CPU_UNITS=at90usb162 atmega16u2 atmega32u2 attiny167 attiny1634
 CPU_UNITS_DEFINED=1
 endif
 ifeq ($(SUBARCH),avr4)

+ 2 - 2
rtl/embedded/Makefile.fpc

@@ -122,14 +122,14 @@ CPU_UNITS=attiny26
 CPU_UNITS_DEFINED=1
 endif
 ifeq ($(SUBARCH),avr25)
-CPU_UNITS=attiny13 attiny13a attiny24 attiny24a attiny25 attiny43u \
+CPU_UNITS=at90usb82 atmega8u2 attiny13 attiny13a attiny24 attiny24a attiny25 attiny43u \
           attiny44 attiny44a attiny45 attiny48 attiny84a attiny84 attiny85 \
           attiny87 attiny88 attiny261 attiny261a attiny441 attiny461 attiny461a attiny828 \
           attiny841 attiny861 attiny861a attiny2313 attiny2313a attiny4313
 CPU_UNITS_DEFINED=1
 endif
 ifeq ($(SUBARCH),avr35)
-CPU_UNITS=at90usb82 at90usb162 atmega8u2 atmega16u2 atmega32u2 attiny167 attiny1634
+CPU_UNITS=at90usb162 atmega16u2 atmega32u2 attiny167 attiny1634
 CPU_UNITS_DEFINED=1
 endif
 ifeq ($(SUBARCH),avr4)

+ 30 - 30
rtl/embedded/avr/at90usb82.pp

@@ -415,7 +415,7 @@ const
   // PINC
 
 implementation
-
+{$define RELBRANCHES}
 {$i avrcommon.inc}
 
 procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 2 External Interrupt Request 0
@@ -449,35 +449,35 @@ procedure SPM_READY_ISR; external name 'SPM_READY_ISR'; // Interrupt 56 Store Pr
 
 procedure _FPC_start; assembler; nostackframe; noreturn; public name '_START'; section '.init';
  asm
-   jmp __dtors_end
-   jmp INT0_ISR
-   jmp INT1_ISR
-   jmp INT2_ISR
-   jmp INT3_ISR
-   jmp INT4_ISR
-   jmp INT5_ISR
-   jmp INT6_ISR
-   jmp INT7_ISR
-   jmp PCINT0_ISR
-   jmp PCINT1_ISR
-   jmp USB_GEN_ISR
-   jmp USB_COM_ISR
-   jmp WDT_ISR
-   jmp TIMER1_CAPT_ISR
-   jmp TIMER1_COMPA_ISR
-   jmp TIMER1_COMPB_ISR
-   jmp TIMER1_COMPC_ISR
-   jmp TIMER1_OVF_ISR
-   jmp TIMER0_COMPA_ISR
-   jmp TIMER0_COMPB_ISR
-   jmp TIMER0_OVF_ISR
-   jmp SPI__STC_ISR
-   jmp USART1__RX_ISR
-   jmp USART1__UDRE_ISR
-   jmp USART1__TX_ISR
-   jmp ANALOG_COMP_ISR
-   jmp EE_READY_ISR
-   jmp SPM_READY_ISR
+   rjmp __dtors_end
+   rjmp INT0_ISR
+   rjmp INT1_ISR
+   rjmp INT2_ISR
+   rjmp INT3_ISR
+   rjmp INT4_ISR
+   rjmp INT5_ISR
+   rjmp INT6_ISR
+   rjmp INT7_ISR
+   rjmp PCINT0_ISR
+   rjmp PCINT1_ISR
+   rjmp USB_GEN_ISR
+   rjmp USB_COM_ISR
+   rjmp WDT_ISR
+   rjmp TIMER1_CAPT_ISR
+   rjmp TIMER1_COMPA_ISR
+   rjmp TIMER1_COMPB_ISR
+   rjmp TIMER1_COMPC_ISR
+   rjmp TIMER1_OVF_ISR
+   rjmp TIMER0_COMPA_ISR
+   rjmp TIMER0_COMPB_ISR
+   rjmp TIMER0_OVF_ISR
+   rjmp SPI__STC_ISR
+   rjmp USART1__RX_ISR
+   rjmp USART1__UDRE_ISR
+   rjmp USART1__TX_ISR
+   rjmp ANALOG_COMP_ISR
+   rjmp EE_READY_ISR
+   rjmp SPM_READY_ISR
 
    .weak INT0_ISR
    .weak INT1_ISR

+ 30 - 30
rtl/embedded/avr/atmega8u2.pp

@@ -403,7 +403,7 @@ const
   // PINC
 
 implementation
-
+{$define RELBRANCHES}
 {$i avrcommon.inc}
 
 procedure INT0_ISR; external name 'INT0_ISR'; // Interrupt 2 External Interrupt Request 0
@@ -437,35 +437,35 @@ procedure SPM_READY_ISR; external name 'SPM_READY_ISR'; // Interrupt 56 Store Pr
 
 procedure _FPC_start; assembler; nostackframe; noreturn; public name '_START'; section '.init';
  asm
-   jmp __dtors_end
-   jmp INT0_ISR
-   jmp INT1_ISR
-   jmp INT2_ISR
-   jmp INT3_ISR
-   jmp INT4_ISR
-   jmp INT5_ISR
-   jmp INT6_ISR
-   jmp INT7_ISR
-   jmp PCINT0_ISR
-   jmp PCINT1_ISR
-   jmp USB_GEN_ISR
-   jmp USB_COM_ISR
-   jmp WDT_ISR
-   jmp TIMER1_CAPT_ISR
-   jmp TIMER1_COMPA_ISR
-   jmp TIMER1_COMPB_ISR
-   jmp TIMER1_COMPC_ISR
-   jmp TIMER1_OVF_ISR
-   jmp TIMER0_COMPA_ISR
-   jmp TIMER0_COMPB_ISR
-   jmp TIMER0_OVF_ISR
-   jmp SPI__STC_ISR
-   jmp USART1__RX_ISR
-   jmp USART1__UDRE_ISR
-   jmp USART1__TX_ISR
-   jmp ANALOG_COMP_ISR
-   jmp EE_READY_ISR
-   jmp SPM_READY_ISR
+   rjmp __dtors_end
+   rjmp INT0_ISR
+   rjmp INT1_ISR
+   rjmp INT2_ISR
+   rjmp INT3_ISR
+   rjmp INT4_ISR
+   rjmp INT5_ISR
+   rjmp INT6_ISR
+   rjmp INT7_ISR
+   rjmp PCINT0_ISR
+   rjmp PCINT1_ISR
+   rjmp USB_GEN_ISR
+   rjmp USB_COM_ISR
+   rjmp WDT_ISR
+   rjmp TIMER1_CAPT_ISR
+   rjmp TIMER1_COMPA_ISR
+   rjmp TIMER1_COMPB_ISR
+   rjmp TIMER1_COMPC_ISR
+   rjmp TIMER1_OVF_ISR
+   rjmp TIMER0_COMPA_ISR
+   rjmp TIMER0_COMPB_ISR
+   rjmp TIMER0_OVF_ISR
+   rjmp SPI__STC_ISR
+   rjmp USART1__RX_ISR
+   rjmp USART1__UDRE_ISR
+   rjmp USART1__TX_ISR
+   rjmp ANALOG_COMP_ISR
+   rjmp EE_READY_ISR
+   rjmp SPM_READY_ISR
 
    .weak INT0_ISR
    .weak INT1_ISR