fpc/rtl/embedded/arm/rp2040.pp

833 lines
21 KiB
ObjectPascal

{$IFNDEF FPC_DOTTEDUNITS}
unit rp2040;
{$ENDIF FPC_DOTTEDUNITS}
interface
{$PACKRECORDS C}
{$GOTO ON}
{$SCOPEDENUMS ON}
type
TIRQn_Enum = (
NonMaskableInt_IRQn = -14,
HardFault_IRQn = -13,
SVC_IRQn = -5,
PendSV_IRQn = -2,
SysTick_IRQn = -1,
TIMER_IRQ_0 = 0,
TIMER_IRQ_1 = 1,
TIMER_IRQ_2 = 2,
TIMER_IRQ_3 = 3,
PWM_IRQ_WRAP =4,
USBCTRL_IRQ =5,
XIP_IRQ =6,
PIO0_IRQ_0 =7,
PIO0_IRQ_1 =8,
PIO1_IRQ_0 =9,
PIO1_IRQ_1 =10,
DMA_IRQ_0 =11,
DMA_IRQ_1 =12,
IO_IRQ_BANK0=13,
IO_IRQ_QSPI =14,
SIO_IRQ_PROC0=15,
SIO_IRQ_PROC1 =16,
CLOCKS_IRQ =17,
SPI0_IRQ =18,
SPI1_IRQ =19,
UART0_IRQ =20,
UART1_IRQ =21,
ADC0_IRQ_FIFO=22,
I2C0_IRQ=23,
I2C1_IRQ=24,
RTC_IRQ=25
);
type
TADC_Registers = record
cs : longWord;
result : longWord;
fcs : longWord;
fifo : longWord;
&div : longWord;
intr : longWord;
inte : longWord;
intf : longWord;
ints : longWord;
end;
TBUSCTRL_Registers = record
priority : longWord;
priority_ack : longWord;
perf : array[0..3] of record
ctr : longWord;
sel : longWord;
end;
end;
TCLOCK_Registers = record
ctrl : longWord;
&div : longWord;
selected : longWord;
end;
TFC_Registers = record
ref_khz : longWord;
min_khz : longWord;
max_khz : longWord;
delay : longWord;
interval : longWord;
src : longWord;
status : longWord;
result : longWord;
end;
TCLOCKS_Registers = record
clk_gpout : array[0..3] of TCLOCK_Registers;
clk_ref : TCLOCK_Registers;
clk_sys : TCLOCK_Registers;
clk_peri : TCLOCK_Registers;
clk_usb : TCLOCK_Registers;
clk_adc : TCLOCK_Registers;
clk_rtc : TCLOCK_Registers;
clk_sys_resus : record
ctrl : longWord;
status : longWord;
end;
fc0 : TFC_Registers;
wake_en0 : longWord;
wake_en1 : longWord;
sleep_en0 : longWord;
sleep_en1 : longWord;
enabled0 : longWord;
enabled1 : longWord;
intr : longWord;
inte : longWord;
intf : longWord;
ints : longWord;
end;
TDMACHANNEL_Registers = record
read_addr : longWord;
write_addr : longWord;
transfer_count : longWord;
ctrl_trig : longWord;
al1_ctrl : longWord;
al1_read_addr : longWord;
al1_write_addr : longWord;
al1_transfer_count_trig : longWord;
al2_ctrl : longWord;
al2_transfer_count : longWord;
al2_read_addr : longWord;
al2_write_addr_trig : longWord;
al3_ctrl : longWord;
al3_write_addr : longWord;
al3_transfer_count : longWord;
al3_read_addr_trig : longWord;
end;
TDMA_Registers = record
ch : array[0..11] of TDMACHANNEL_Registers;
RESERVED0 : array[0..63] of longWord;
intr : longWord;
inte0 : longWord;
intf0 : longWord;
ints0 : longWord;
RESERVED1 : longWord;
inte1 : longWord;
intf1 : longWord;
ints1 : longWord;
timer : array[0..1] of longWord;
RESERVED2 : array[0..1] of longWord;
multi_channel_trigger : longWord;
sniff_ctrl : longWord;
sniff_data : longWord;
RESERVED3 : longWord;
fifo_levels : longWord;
abort : longWord;
end;
TDMADEBUG_Registers = record
ch : array[0..11] of record
ctrdeq : longWord;
tcr : longWord;
RESERVED0 : array[0..13] of longWord;
end;
end;
TI2C_Registers = record
con : longWord;
tar : longWord;
sar : longWord;
RESERVED0 : longWord;
data_cmd : longWord;
ss_scl_hcnt : longWord;
ss_scl_lcnt : longWord;
fs_scl_hcnt : longWord;
fs_scl_lcnt : longWord;
RESERVED1 : array[0..1] of longWord;
intr_stat : longWord;
intr_mask : longWord;
raw_intr_stat : longWord;
rx_tl : longWord;
tx_tl : longWord;
clr_intr : longWord;
clr_rx_under : longWord;
clr_rx_over : longWord;
clr_tx_over : longWord;
clr_rd_req : longWord;
clr_tx_abrt : longWord;
clr_rx_done : longWord;
clr_activity : longWord;
clr_stop_det : longWord;
clr_start_det : longWord;
clr_gen_call : longWord;
enable : longWord;
status : longWord;
txflr : longWord;
rxflr : longWord;
sda_hold : longWord;
tx_abrt_source : longWord;
slv_data_nack_only : longWord;
dma_cr : longWord;
dma_tdlr : longWord;
dma_rdlr : longWord;
sda_setup : longWord;
ack_general_call : longWord;
enable_status : longWord;
fs_spklen : longWord;
RESERVED2 : longWord;
clr_restart_det : longWord;
RESERVED3 : array[0..17] of longWord;
comp_param_1 : longWord;
comp_version : longWord;
comp_type : longWord;
end;
TIOIRQCTRL_Registers = record
inte : array[0..3] of longWord;
intf : array[0..3] of longWord;
ints : array[0..3] of longWord;
end;
TIOBANK0_Registers = record
io : array[0..29] of record
status : longWord;
ctrl : longWord;
end;
intr : array[0..3] of longWord;
proc0_irq_ctrl : TIOIRQCTRL_Registers;
proc1_irq_ctrl : TIOIRQCTRL_Registers;
dormant_wake_irq_ctrl : TIOIRQCTRL_Registers;
end;
TIOQSPI_Registers = record
io : array[0..5] of record
status : longWord;
ctrl : longWord;
end;
end;
TPADSQSPI_Registers = record
voltage_select : longWord;
io : array[0..5] of longWord;
end;
TPADSBANK0_Registers = record
voltage_select : longWord;
io : array[0..29] of longWord;
end;
TPIO_Registers = record
ctrl : longWord;
fstat : longWord;
fdebug : longWord;
flevel : longWord;
txf : array[0..1] of longWord;
rxf : array[0..1] of longWord;
irq : longWord;
irq_force : longWord;
input_sync_bypass : longWord;
dbg_padout : longWord;
dbg_padoe : longWord;
dbg_cfginfo : longWord;
instr_mem : array[0..31] of longWord;
sm : array[0..1] of record
clkdiv : longWord;
execctrl : longWord;
shiftctrl : longWord;
addr : longWord;
instr : longWord;
pinctrl : longWord;
end;
intr : longWord;
inte0 : longWord;
intf0 : longWord;
ints0 : longWord;
inte1 : longWord;
intf1 : longWord;
ints1 : longWord;
end;
TPLL_Registers = record
cs : longWord;
pwr : longWord;
fbdiv_int : longWord;
prim : longWord;
end;
TPSM_Registers = record
frce_on : longWord;
frce_off : longWord;
wdsel : longWord;
done : longWord;
end;
TPWMSLICE_Registers = record
csr : longWord;
&div : longWord;
ctr : longWord;
cc : longWord;
top : longWord;
end;
TPWM_Registers = record
slice : array[0..7] of TPWMSLICE_Registers;
en : longWord;
intr : longWord;
inte : longWord;
intf : longWord;
ints : longWord;
end;
TRESETS_Registers = record
reset : longWord;
wdsel : longWord;
reset_done : longWord;
end;
TROSC_Registers = record
ctrl : longWord;
freqa : longWord;
freqb : longWord;
dormant : longWord;
&div : longWord;
phase : longWord;
status : longWord;
randombit : longWord;
count : longWord;
dftx : longWord;
end;
TRTC_Registers = record
clkdiv_m1 : longWord;
setup_0 : longWord;
setup_1 : longWord;
ctrl : longWord;
irq_setup_0 : longWord;
irq_setup_1 : longWord;
rtc_1 : longWord;
rtc_0 : longWord;
intr : longWord;
inte : longWord;
intf : longWord;
ints : longWord;
end;
TINTERP_Registers = record
accum : array[0..1] of longWord;
base : array[0..2] of longWord;
pop : array[0..2] of longWord;
peek : array[0..2] of longWord;
ctrl : array[0..1] of longWord;
add_raw : array[0..1] of longWord;
base01 : longWord;
end;
TSIO_Registers = record
cpuid : longWord;
gpio_in : longWord;
gpio_hi_in : longWord;
RESERVED0 : longWord;
gpio_out : longWord;
gpio_set : longWord;
gpio_clr : longWord;
gpio_togl : longWord;
gpio_oe : longWord;
gpio_oe_set : longWord;
gpio_oe_clr : longWord;
gpio_oe_togl : longWord;
gpio_hi_out : longWord;
gpio_hi_set : longWord;
gpio_hi_clr : longWord;
gpio_hi_togl : longWord;
gpio_hi_oe : longWord;
gpio_hi_oe_set : longWord;
gpio_hi_oe_clr : longWord;
gpio_hi_oe_togl : longWord;
fifo_st : longWord;
fifo_wr : longWord;
fifo_rd : longWord;
spinlock_st : longWord;
div_udividend : longWord;
div_udivisor : longWord;
div_sdividend : longWord;
div_sdivisor : longWord;
div_quotient : longWord;
div_remainder : longWord;
div_csr : longWord;
RESERVED1 : longWord;
interp : array[0..1] of TINTERP_Registers;
spinlock : array[0..31] of longWord;
end;
TSPI_Registers = record
cr0 : longWord;
cr1 : longWord;
dr : longWord;
sr : longWord;
cpsr : longWord;
imsc : longWord;
ris : longWord;
mis : longWord;
icr : longWord;
dmacr : longWord;
end;
TSSI_Registers = record
ctrlr0 : longWord;
ctrlr1 : longWord;
ssienr : longWord;
mwcr : longWord;
ser : longWord;
baudr : longWord;
txftlr : longWord;
rxftlr : longWord;
txflr : longWord;
rxflr : longWord;
sr : longWord;
imr : longWord;
isr : longWord;
risr : longWord;
txoicr : longWord;
rxoicr : longWord;
rxuicr : longWord;
msticr : longWord;
icr : longWord;
dmacr : longWord;
dmatdlr : longWord;
dmardlr : longWord;
idr : longWord;
ssi_version_id : longWord;
dr0 : longWord;
RESERVED0 : array[0..34] of longWord;
rx_sample_dly : longWord;
spi_ctrlr0 : longWord;
txd_drive_edge : longWord;
end;
TSYSCFG_Registers = record
proc0_nmi_mask : longWord;
proc1_nmi_mask : longWord;
proc_config : longWord;
proc_in_sync_bypass : longWord;
proc_in_sync_bypass_hi : longWord;
dbgforce : longWord;
mempowerdown : longWord;
end;
TSYSINFO_Registers = record
chip_id : longWord;
platform : longWord;
reserved0 : array[0..$3F-$08] of longWord;
gitref_rp2040 : longWord;
end;
TTIMER_Registers = record
timehw : longWord;
timelw : longWord;
timehr : longWord;
timelr : longWord;
alarm : array[0..3] of longWord;
armed : longWord;
timerawh : longWord;
timerawl : longWord;
dbgpause : longWord;
pause : longWord;
intr : longWord;
inte : longWord;
intf : longWord;
ints : longWord;
end;
TUART_Registers = record
dr : longWord;
rsr : longWord;
RESERVED0 : array[0..3] of longWord;
fr : longWord;
RESERVED1 : longWord;
ilpr : longWord;
ibrd : longWord;
fbrd : longWord;
lcr_h : longWord;
cr : longWord;
ifls : longWord;
imsc : longWord;
ris : longWord;
mis : longWord;
icr : longWord;
dmacr : longWord;
end;
TUSBDEVICEDPRAM = record
setup_packet : array[0..7] of byte;
ep_ctrl : array[0..14] of record
&in : longWord;
&out : longWord;
end;
ep_buf_ctrl : array[0..15] of record
&in : longWord;
&out : longWord;
end;
ep0_buf_a : array[0..63] of byte;
ep0_buf_b : array[0..63] of byte;
epx_data : array[0..(4096-$180)-1] of byte;
end;
TUSBHOSTDPRAM = record
setup_packet : array[0..7] of byte;
int_ep_ctrl : array[0..14] of record
ctrl : longWord;
spare : longWord;
end;
epx_buf_ctrl : longWord;
_spare0 : longWord;
int_ep_buffer_ctrl : array[0..14] of record
ctrl : longWord;
spare : longWord;
end;
epx_ctrl : longWord;
_spare1 : array[0..123] of byte;
epx_data : array[0..(4096-$180)-1] of byte;
end;
TUSB_Registers = record
dev_addr_ctrl : longWord;
int_ep_addr_ctrl : array[1..15] of longWord;
main_ctrl : longWord;
sof_wr : longWord;
sof_rd : longWord;
sie_ctrl : longWord;
sie_status : longWord;
int_ep_ctrl : longWord;
buf_status : longWord;
buf_cpu_should_handle : longWord;
abort : longWord;
abort_done : longWord;
ep_stall_arm : longWord;
nak_poll : longWord;
ep_nak_stall_status : longWord;
muxing : longWord;
pwr : longWord;
phy_direct : longWord;
phy_direct_override : longWord;
phy_trim : longWord;
linestate_tuning : longWord;
intr : longWord;
inte : longWord;
intf : longWord;
ints : longWord;
end;
TVREGANDCHIPRESET_Registers = record
vreg : longWord;
bod : longWord;
chip_reset : longWord;
end;
TWATCHDOG_Registers = record
ctrl : longWord;
load : longWord;
reason : longWord;
scratch : array[0..7] of longWord;
tick : longWord;
end;
TXIPCTRL_Registers = record
ctrl : longWord;
flush : longWord;
stat : longWord;
ctr_hit : longWord;
ctr_acc : longWord;
stream_addr : longWord;
stream_ctr : longWord;
stream_fifo : longWord;
end;
TXOSC_Registers = record
ctrl : longWord;
status : longWord;
dormant : longWord;
startup : longWord;
RESERVED0 : array[0..2] of longWord;
count : longWord;
end;
TMPU_Registers = record
_type : longWord;
ctrl : longWord;
rnr : longWord;
rbar : longWord;
rasr : longWord;
end;
TSYSTICK_Registers = record
csr : longWord;
rvr : longWord;
cvr : longWord;
calib : longWord;
end;
TSCB_Reqisters = record
cpuid : longWord;
icsr : longWord;
vtor : longWord;
aircr : longWord;
scr : longWord;
end;
const
__NVIC_PRIO_BITS= 2;
SRAM0_BASE = $21000000;
SRAM1_BASE = $21010000;
SRAM2_BASE = $21020000;
SRAM3_BASE = $21030000;
SYSINFO_BASE = $40000000;
SYSCFG_BASE = $40004000;
CLOCKS_BASE = $40008000;
RESETS_BASE = $4000c000;
PSM_BASE = $40010000;
IO_BANK0_BASE = $40014000;
IO_QSPI_BASE = $40018000;
PADS_BANK0_BASE = $4001c000;
PADS_QSPI_BASE = $40020000;
XOSC_BASE = $40024000;
PLL_SYS_BASE = $40028000;
PLL_USB_BASE = $4002c000;
BUSCTRL_BASE = $40030000;
UART0_BASE = $40034000;
UART1_BASE = $40038000;
SPI0_BASE = $4003c000;
SPI1_BASE = $40040000;
I2C0_BASE = $40044000;
I2C1_BASE = $40048000;
ADC_BASE = $4004c000;
PWM_BASE = $40050000;
TIMER_BASE = $40054000;
WATCHDOG_BASE = $40058000;
RTC_BASE = $4005c000;
ROSC_BASE = $40060000;
VREG_AND_CHIP_RESET_BASE = $40064000;
TBMAN_BASE = $4006c000;
DMA_BASE = $50000000;
USBCTRL_BASE = $50100000;
USBCTRL_DPRAM_BASE = $50100000;
USBCTRL_REGS_BASE = $50110000;
PIO0_BASE = $50200000;
PIO1_BASE = $50300000;
XIP_AUX_BASE = $50400000;
SIO_BASE = $d0000000;
PPB_BASE = $e0000000;
var
SysInfo : TSysInfo_Registers absolute SYSINFO_BASE;
SysCfg : TSYSCFG_REGISTERS absolute SYSCFG_BASE;
Clocks : TCLOCKS_Registers absolute CLOCKS_BASE;
Resets : TRESETS_Registers absolute RESETS_BASE;
PSM : TPSM_Registers absolute PSM_BASE;
IOBANK0 : TIOBANK0_Registers absolute IO_BANK0_BASE;
IOQSPI : TIOQSPI_Registers absolute IO_QSPI_BASE;
PADSBANK0 : TPADSBANK0_Registers absolute PADS_BANK0_BASE;
PADSQSPI : TPADSQSPI_Registers absolute PADS_QSPI_BASE;
XOSC : TXOSC_Registers absolute XOSC_BASE;
PLLSYS : TPLL_Registers absolute PLL_SYS_BASE;
PLLUSB : TPLL_Registers absolute PLL_USB_BASE;
BUSCTRL : TBUSCTRL_Registers absolute BUSCTRL_BASE;
UART0 : TUART_Registers absolute UART0_BASE;
UART1 : TUART_Registers absolute UART1_BASE;
SPI0 : TSPI_Registers absolute SPI0_BASE;
SPI1 : TSPI_Registers absolute SPI1_BASE;
I2C0 : TI2C_Registers absolute I2C0_BASE;
I2C1 : TI2C_Registers absolute I2C1_BASE;
ADC : TADC_Registers absolute ADC_BASE;
PWM : TPWM_Registers absolute PWM_BASE;
TIMER : TTIMER_Registers absolute TIMER_BASE;
WATCHDOG : TWATCHDOG_Registers absolute WATCHDOG_BASE;
RTC : TRTC_Registers absolute RTC_BASE;
ROSC : TROSC_Registers absolute ROSC_BASE;
VREGANDCHIPRESET : TVREGANDCHIPRESET_Registers absolute VREG_AND_CHIP_RESET_BASE;
DMA : TDMA_Registers absolute DMA_BASE;
//USBCTRL_BASE = $50100000
//USBCTRL_DPRAM_BASE = $50100000
USB : TUSB_Registers absolute USBCTRL_REGS_BASE;
PIO0 : TPIO_Registers absolute PIO0_BASE;
PIO1 : TPIO_Registers absolute PIO1_BASE;
//XIP_AUX_BASE = $50400000
SIO : TSIO_Registers absolute SIO_BASE;
implementation
procedure NMI_Handler; external name 'NMI_Handler';
procedure HardFault_Handler; external name 'HardFault_Handler';
procedure SVC_Handler; external name 'SVC_Handler';
procedure PendSV_Handler; external name 'PendSV_Handler';
procedure SysTick_Handler; external name 'SysTick_Handler';
procedure TIMER_IRQ_0_Handler; external name 'TIMER_IRQ_0_Handler';
procedure TIMER_IRQ_1_Handler; external name 'TIMER_IRQ_1_Handler';
procedure TIMER_IRQ_2_Handler; external name 'TIMER_IRQ_2_Handler';
procedure TIMER_IRQ_3_Handler; external name 'TIMER_IRQ_3_Handler';
procedure PWM_IRQ_WRAP_Handler; external name 'PWM_IRQ_WRAP_Handler';
procedure USBCTRL_IRQ_Handler; external name 'USBCTRL_IRQ_Handler';
procedure XIP_IRQ_Handler; external name 'XIP_IRQ_Handler';
procedure PIO0_IRQ_0_Handler; external name 'PIO0_IRQ_0_Handler';
procedure PIO0_IRQ_1_Handler; external name 'PIO0_IRQ_1_Handler';
procedure PIO1_IRQ_0_Handler; external name 'PIO1_IRQ_0_Handler';
procedure PIO1_IRQ_1_Handler; external name 'PIO1_IRQ_1_Handler';
procedure DMA_IRQ_0_Handler; external name 'DMA_IRQ_0_Handler';
procedure DMA_IRQ_1_Handler; external name 'DMA_IRQ_1_Handler';
procedure IO_IRQ_BANK0_Handler; external name 'IO_IRQ_BANK0_Handler';
procedure IO_IRQ_QSPI_Handler; external name 'IO_IRQ_QSPI_Handler';
procedure SIO_IRQ_PROC0_Handler; external name 'SIO_IRQ_PROC0_Handler';
procedure SIO_IRQ_PROC1_Handler; external name 'SIO_IRQ_PROC1_Handler';
procedure CLOCKS_IRQ_Handler; external name 'CLOCKS_IRQ_Handler';
procedure SPI0_IRQ_Handler; external name 'SPI0_IRQ_Handler';
procedure SPI1_IRQ_Handler; external name 'SPI1_IRQ_Handler';
procedure UART0_IRQ_Handler; external name 'UART0_IRQ_Handler';
procedure UART1_IRQ_Handler; external name 'UART1_IRQ_Handler';
procedure ADC_IRQ_FIFO_Handler; external name 'ADC_IRQ_FIFO_Handler';
procedure I2C0_IRQ_Handler; external name 'I2C0_IRQ_Handler';
procedure I2C1_IRQ_Handler; external name 'I2C1_IRQ_Handler';
procedure RTC_IRQ_Handler; external name 'RTC_IRQ_Handler';
{$i cortexm0p_start.inc}
procedure Vectors; assembler; nostackframe;
label interrupt_vectors;
asm
.section ".init.interrupt_vectors"
interrupt_vectors:
.long _stack_top
.long Startup
.long NMI_Handler
.long HardFault_Handler
.long 0
.long 0
.long 0
.long 0
.long 0
.long 0
.long 0
.long SVC_Handler
.long 0
.long 0
.long PendSV_Handler
.long SysTick_Handler
.long TIMER_IRQ_0_Handler
.long TIMER_IRQ_1_Handler
.long TIMER_IRQ_2_Handler
.long TIMER_IRQ_3_Handler
.long PWM_IRQ_WRAP_Handler
.long USBCTRL_IRQ_Handler
.long XIP_IRQ_Handler
.long PIO0_IRQ_0_Handler
.long PIO0_IRQ_1_Handler
.long PIO1_IRQ_0_Handler
.long PIO1_IRQ_1_Handler
.long DMA_IRQ_0_Handler
.long DMA_IRQ_1_Handler
.long IO_IRQ_BANK0_Handler
.long IO_IRQ_QSPI_Handler
.long SIO_IRQ_PROC0_Handler
.long SIO_IRQ_PROC1_Handler
.long CLOCKS_IRQ_Handler
.long SPI0_IRQ_Handler
.long SPI1_IRQ_Handler
.long UART0_IRQ_Handler
.long UART1_IRQ_Handler
.long ADC_IRQ_FIFO_Handler
.long I2C0_IRQ_Handler
.long I2C1_IRQ_Handler
.long RTC_IRQ_Handler
.long 0
.long 0
.long 0
.long 0
.long 0
.long 0
.weak NMI_Handler
.weak HardFault_Handler
.weak SVC_Handler
.weak PendSV_Handler
.weak SysTick_Handler
.weak TIMER_IRQ_0_Handler
.weak TIMER_IRQ_1_Handler
.weak TIMER_IRQ_2_Handler
.weak TIMER_IRQ_3_Handler
.weak PWM_IRQ_WRAP_Handler
.weak USBCTRL_IRQ_Handler
.weak XIP_IRQ_Handler
.weak PIO0_IRQ_0_Handler
.weak PIO0_IRQ_1_Handler
.weak PIO1_IRQ_0_Handler
.weak PIO1_IRQ_1_Handler
.weak DMA_IRQ_0_Handler
.weak DMA_IRQ_1_Handler
.weak IO_IRQ_BANK0_Handler
.weak IO_IRQ_QSPI_Handler
.weak SIO_IRQ_PROC0_Handler
.weak SIO_IRQ_PROC1_Handler
.weak CLOCKS_IRQ_Handler
.weak SPI0_IRQ_Handler
.weak SPI1_IRQ_Handler
.weak UART0_IRQ_Handler
.weak UART1_IRQ_Handler
.weak ADC_IRQ_FIFO_Handler
.weak I2C0_IRQ_Handler
.weak I2C1_IRQ_Handler
.weak RTC_IRQ_Handler
.set NMI_Handler, _NMI_Handler
.set HardFault_Handler, _HardFault_Handler
.set SVC_Handler, _SVC_Handler
.set PendSV_Handler, _PendSV_Handler
.set SysTick_Handler, _SysTick_Handler
.set TIMER_IRQ_0_Handler, Haltproc
.set TIMER_IRQ_1_Handler, Haltproc
.set TIMER_IRQ_2_Handler, Haltproc
.set TIMER_IRQ_3_Handler, Haltproc
.set PWM_IRQ_WRAP_Handler, Haltproc
.set USBCTRL_IRQ_Handler, Haltproc
.set XIP_IRQ_Handler, Haltproc
.set PIO0_IRQ_0_Handler, Haltproc
.set PIO0_IRQ_1_Handler, Haltproc
.set PIO1_IRQ_0_Handler, Haltproc
.set PIO1_IRQ_1_Handler, Haltproc
.set DMA_IRQ_0_Handler, Haltproc
.set DMA_IRQ_1_Handler, Haltproc
.set IO_IRQ_BANK0_Handler, Haltproc
.set IO_IRQ_QSPI_Handler, Haltproc
.set SIO_IRQ_PROC0_Handler, Haltproc
.set SIO_IRQ_PROC1_Handler, Haltproc
.set CLOCKS_IRQ_Handler, Haltproc
.set SPI0_IRQ_Handler, Haltproc
.set SPI1_IRQ_Handler, Haltproc
.set UART0_IRQ_Handler, Haltproc
.set UART1_IRQ_Handler, Haltproc
.set ADC_IRQ_FIFO_Handler, Haltproc
.set I2C0_IRQ_Handler, Haltproc
.set I2C1_IRQ_Handler, Haltproc
.set RTC_IRQ_Handler, Haltproc
.text
end;
end.